◇ Values Commons

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.

  1. 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
  2. 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
  3. 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
  4. 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 IIFig. 2. What every app shares, and what each one can change.

What every app shares

An app can look and read like its subject. It cannot lock you in, sell a ranking or change the math. Two questions decide whether it belongs here: can your values file come in, and can anyone check and correct the facts?

Shared by all of them

  • The scoring engine. Weights, scores, bands, and combining a group's files.
  • The decision page. Sliders, ranked answers, the math behind each one, import and export.
  • The values file. One small file with your weights and no name in it.
  • The promises. No account, no tracking, no ads, and nobody pays to rank. It all runs in your browser.

Each app's own

  • The options and facts. What gets compared, with a source for each fact.
  • The criteria. Named in the subject's own words: "encryption", "rigor", "cost".
  • The look and the language. Kosplora is dark indigo; Where to Message is teal with a sans serif face.
  • The scope. What the app does not cover, stated on the page.

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 valueConscious ConsumingKosploraWhere to Message
Planetplanetstays homestays home
Peoplepeopleopenstays home
Opennesshonestyopenopen
Accesscosteaseease
Wellbeinghealtheaseprivate
Autonomyprivacystays homeprivate
Animalsanimalsstays homestays home
Communitylocalopenreach
Qualitystays homerigorstays home
Joystays homeeasestays home
Carried8 of 107 of 105 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.

  1. A plain decision. Name the real choice and who has to make it.
  2. Sourced facts. A source for every strong claim, a date on every fact, and a label on anything that is a judgement.
  3. Links back. To Values Commons, the values file, fact repair and the other apps.
  4. A values map. Say which of the ten shared values carry over, and which stay home.
  5. The same promises. No account, no tracking, no ads, no pay-to-rank, and it still works as plain files on a static host.
  6. 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.

  1. Decision. What real choice should this app help someone make?
  2. Audience. Who needs it first, and what words do they already use for it?
  3. Starter facts. Which 8 to 20 options and 3 to 7 criteria are enough to show it works?
  4. Values map. Which shared values carry over, and which should visibly stay home?
  5. Citations. Which claims need a citation before you would let a friend rely on it?
  6. 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

  1. Name the decision. Which options get ranked, and for whom?
  2. Source the facts. Each score needs a reason, a link and a date.
  3. Take values files in. Accept a file someone made elsewhere, and let them take it back out.
  4. 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.