The appsThree apps on one scoring engine, and how to build a fourth.
Three apps that read the same values file
I built Conscious Consuming first, for everyday spending. Then I wanted to know whether the engine under it was general, or whether it only worked for shopping. So I built two more on the same code, one about learning and one about messaging, and changed only the facts and the look.
They work. Set your weights once and the same file ranks groceries, reading lists and messengers. This page shows what the three share, where they differ, and how to make a fourth.
3 apps1 scoring engine10 shared values0 accountsChecked 29 Sept 2026
Plate IFig. 1. Each app, the decision it helps with, and where its facts come from.
What each one decides
One is a working app with real data. Two are demos, and they say so on their own pages. The hatched row is the one nobody has built yet.
- Conscious ConsumingWhere your everyday money goes, across 140+ categories from banks to bread.Facts: Open datasets, public filings and hand-checked citations. Every scored fact carries a source record. How scores are madeLiveReal data, dated
- KosploraWhat to read, watch or try next, one station at a time along a route that starts from a real question.Facts: Each source on a route carries its author and date.Learning demo3 routes, 12 older reading lists
- Where to MessageWhich messenger to use, weighing privacy, openness and how many of your people are already there.Facts: Public characteristics as of 2026: encryption defaults, ownership, licence. The whole listMessaging demo7 messengers, scores illustrative
- Your subjectA school's reading list, a co-op's supplier choice, a town's map of repair shops.Facts: Yours, each with its source.Not builtBuild it
What's happening. All three rank with the same scoring code, app/engine.js, and lay out their answers with the same decision page, app/decision.js. Each app owns one list of options and facts, and one stylesheet. Where to Message was built without a single edit to the shared files.
Why it matters. If the engine only worked for shopping, your values file would be a shopping file. Because it carries across subjects, the weights you set once can come with you into an app you have never opened, and a school or a co-op can build one without writing a scoring system of its own.
Devil's advocate. Three is a small number, and I built all three, so they share my blind spots. Two are demos. Where to Message ranks seven messengers on scores I assigned from public facts, and nobody outside this project has used a Kosplora route yet. What the three prove so far is that the engine works across subjects. They do not prove anyone else can build a fourth. That is the next test.
Rabbit hole. Open Where to Message's lens.js. It is one file of options, facts and value mappings, and it is the only code that app owns.
Plate IIIFig. 3. The ten shared values, and which criterion each one maps to in each app.
How values carry over
Each app keeps a short map, universalToLocal, from the ten shared values to its own criteria. If no criterion in an app can honestly hold a value, the value stays home. The app says so, and does not make up a score for it.
| Shared value | Conscious Consuming | Kosplora | Where to Message |
|---|---|---|---|
| Planet | planet | stays home | stays home |
| People | people | open | stays home |
| Openness | honesty | open | open |
| Access | cost | ease | ease |
| Wellbeing | health | ease | private |
| Autonomy | privacy | stays home | private |
| Animals | animals | stays home | stays home |
| Community | local | open | reach |
| Quality | stays home | rigor | stays home |
| Joy | stays home | ease | stays home |
| Carried | 8 of 10 | 7 of 10 | 5 of 10 |
carried over to the criterion named in the cellstays home, because no criterion in that app can honestly hold it
Taken from each app's own map, UNIVERSAL2CC in app/app.js and universalToLocal in kosplora/lens.js and instances/messages/lens.js. What the file carries and what it leaves out is on the values file page.
No messenger gets a planet score here, because I have no sources for one.
Before a new app is publicSix things that should be true before you share it.
What the next app needs first
A new app can look like anything. It still keeps the promises the other three keep: your values file works, the evidence can be checked, and nobody pays to rank.
- A plain decision. Name the real choice and who has to make it.
- Sourced facts. A source for every strong claim, a date on every fact, and a label on anything that is a judgement.
- Links back. To Values Commons, the values file, fact repair and the other apps.
- A values map. Say which of the ten shared values carry over, and which stay home.
- The same promises. No account, no tracking, no ads, no pay-to-rank, and it still works as plain files on a static host.
- An address for corrections. Show where a better source, a missing option or a whole replacement facts file should go.
New subject briefSix questions to answer in writing.
Write this before code
A clear decision and a small set of sourced facts will do more for an app than any interface. Answer these first. If one has no answer yet, start there.
- Decision. What real choice should this app help someone make?
- Audience. Who needs it first, and what words do they already use for it?
- Starter facts. Which 8 to 20 options and 3 to 7 criteria are enough to show it works?
- Values map. Which shared values carry over, and which should visibly stay home?
- Citations. Which claims need a citation before you would let a friend rely on it?
- Corrections. After launch, where do fixes, missing options, forks and disputes go?
Plate IVFig. 4. The four files an app is made of.
Build the next app
An app is a folder. You write the facts file and the page; the engine and the shell are shared, and you link to them. Any static host is enough.
lens.js your facts + index.html your page + engine.js + shell.js
- Name the decision. Which options get ranked, and for whom?
- Source the facts. Each score needs a reason, a link and a date.
- Take values files in. Accept a file someone made elsewhere, and let them take it back out.
- Publish it as files. A folder on any static host runs the whole thing.
Want to kick the tires? The builder opens with a coffee example already loaded. Try to get a score in without a source.