← back to the engine

Methodology & sources

What this tool is, how it is built, what the software does versus what a language model does, and where its limits are. Written to be checked by a skeptical reviewer.

Last reviewed: 2026-07-03

What it is, and is not

It is an auditable evidence map for claims about inequality. You give it a claim, or a link to where you heard one, and it returns a structured report: where the measured evidence sits across several lenses, which named scholars support or contest it, the primary data behind each point, the place on Earth where it plays out, and every source.

It is not a truth oracle and does not rule on whether inequality is acceptable. It maps evidence and disagreement and hands the judgment back to the reader. It is not a general chatbot: the model may draw only on a closed, sourced corpus. The measured data cards are fabrication-resistant by construction. In the connecting prose, any figure, thinker, or work the model reaches for outside the corpus is caught and flagged to the reader at request time, and when the corpus has no vetted evidence on a claim the tool says so plainly rather than answering from general knowledge.

Architecture: what is deterministic, what is the model

Deterministic layer

A build script reads the in-repo data corpora, all from named institutional sources, and computes the cross-references itself: divergences, wealth-vs-income ratios, capital share. No model. No figure can be invented here; each thread carries its raw values and a source URL.

Editorial layer

66 scholarly camps and 187 turning-point causes, human-authored, each with a primary-source URL checked to resolve. Marked seed-for-review: not publishable until a human, and ideally a partner, vets every claim. The human gate is deliberate.

Model layer (fenced)

At query time the model sees only the cached corpus. It cites evidence, turning points, and camps by id; the server discards any id that does not exist. It writes the connecting prose, constrained to the evidence above it. A dropped link is fetched server-side and always flagged external.

The anti-fabrication gate

The build runs a validator with a numeric-trace rule: every number in a computed data claim must be derivable from that claim's own sourced values, or the build fails. A model, or a careless edit, cannot introduce a figure that is not in the underlying data. The validator also checks that every camp carries a resolving source URL and that the refusal stance is present. The measured cards are fabrication-resistant by construction, not by trust.

Sources

Every series is catalogued below with its organisation, access terms, licence, the date it was verified, and what the tool uses it for. This table is rendered live from sources.json.

Data sources in use

SourceAccessLicenceWhat we use it forVerified

Institutional back doors: tested and resolving, not yet wired in

SourceAccessLicenceWhat we use it forVerified

Scholarly sources

SourceAccessLicenceWhat we use it forVerified

Income concepts and why sources can disagree

The corpus mixes two measurement traditions that can honestly point in different directions for the same country and year. Survey-based series (World Bank Ginis, poverty headcounts, WHO indicators, LIS Key Figures) rest on household interviews; they cover the middle of the distribution well and are known to under-capture the very top. Tax-data-based series (WID.world top shares, wealth ratios, the DINA method) capture the top far better but exist for fewer countries and years, and embed their own imputation choices. The tool does not adjudicate between them. Where both bear on a claim, both are cited, each labelled by its source, and a divergence between them is treated as a finding to show, never noise to smooth. Most series in the corpus are pre-tax or do not state an income concept; LIS Key Figures are the disposable-income (post-tax-and-transfer) exception, and each LIS thread says so. The market-vs-disposable redistribution gap requires LIS microdata access (application drafted, not yet submitted). The scholarly corpus carries this debate as a camp pair: the DINA tax-records position and the survey-harmonisation position, each naming the other as its counter.

The spectrum makes no claim

The spectrum on every report places each cited item as a dot by that item's own stance toward the claim (backs, contests, context). It deliberately has no needle, no aggregate score, and no verdict: any aggregation would weigh one working paper the same as decades of scholarship, which is false balance, and a model-produced score has no defensible rubric. The spectrum shows who lines up where; it never says how much each weighs. The reading belongs to the reader.

How camps are selected

The scholarly camps are an editorial product, and the criteria are stated so the selection can be challenged: (1) the position is held by named, citable scholars or institutions with a primary source that resolves; (2) it is a live position in the field, or canonical framing explicitly labelled as such (Kuznets, Okun, Rawls, Nozick); (3) each lens carries genuine internal disagreement, never a single consensus voice; (4) inclusion is reviewed by a human before publication (seed-for-review until then). Anyone can propose a missing camp with a primary source.

Honest limitations

The prose is fenced, not formally verified. The measured cards are validator-gated. The sentences that connect them are written by the model within the corpus fence and are not checked line by line, so a careful reviewer could find a sentence that overstates a corpus figure. A runtime claim-trace check on the prose is the next hardening step.

The corpus is prototype breadth, not a census. It was built around one master question and is being generalised across topics.

The camps are seed-for-review. Researched and sourced, but not yet independently vetted. Nothing there should be treated as endorsed until a human, and ideally a partner, signs off.

How to audit this

  1. Read sources.json and spot-check any endpoint. Every verified entry names the date and the response.
  2. Open any measured card in the tool and follow its source link to the institutional data.
  3. Run node validate.mjs; try to introduce an untraceable number into a computed claim and watch the build reject it.
  4. Read camps.seed.json and follow any camp's source URL to the paper, book, or reference entry.
  5. Ask a claim and confirm every figure shown sits on a card with a source, and the prose asserts no number that is not on a card.