Critical Materials Atlas
Method · open invitation

For reviewers: come and audit this

This atlas is one person’s public-data research, and its biggest missing ingredient is outside scrutiny. This page is a standing invitation to a methods expert — in trade data, mineral economics, or mining analysis — to run an adversarial audit. Below are the three flagship claims, the exact reproducible script behind each, the weaknesses we already know about, and how to submit what you find. Everything runs from the public repository with no API key.

The point of an audit is not applause; it is to find what breaks. We would rather publish “a reviewer showed claim X is weaker than stated, here is the correction” than leave it unchecked. Findings — confirmations, corrections, or refutations — will be published on this site with attribution (or anonymously, your choice), alongside what changed as a result.

The three claims most worth attacking

1 · The origin gap: “the top exporter is not the top miner” (17 of 32)

Where: findings. Data: reconciled CEPII BACI trade vs USGS mine shares. Reproduce: python build_origin_gap_units.py. Robustness already run: the gap holds measured tonnes-vs-tonnes (17/17 survive), and in every case the top exporter is a genuine refiner, not a re-export hub (0/17). Best attack: we bound the transshipment artefact but do not fully trace ore-to-refined product-form differences; quantify how much of a given gap is refining vs. a customs product-code change.

2 · The mechanism taxonomy: “only 4 of 58 chokepoints are geological”

Where: Chokepoint Map + Report 04. What it is: a classification of each chain’s binding stage into seven mechanisms from process physics. Best attack: these are assigned judgments, not statistical inferences, and carry no uncertainty. Challenge specific assignments, or propose a mechanism the taxonomy misses; the classifier is a single JSON field per chain, so a re-classification is a one-line change to test.

3 · The nowcast: 84% out-of-sample persistence, engine forward-test pending

Where: nowcast backtest. Reproduce: python build_nowcast_backtest.py. Known limit (stated): 84% is a high base rate (top exporters rarely change), and the model has ~no skill at year-over-year direction (42%). The reconciliation engine’s skill over persistence is not yet validated — a 2025 forward test is pre-registered. Best attack: is persistence the right baseline; are the material-years independent; what are the confidence intervals; does the engine’s ~1.8× level bias vs official BACI bias any share-based claim?

Weaknesses we already know about

Stated so you can go straight to the frontier rather than rediscover them. (1) No external review yet — this page exists to fix that. (2) Trade shares are value-based by default; product-form and re-export effects are bounded but not fully traced. (3) Series are short (≈23 annual points, with a 2016/17 HS-vintage splice) and the reconciliation runs ~1.8× higher than official BACI on levels (share-faithful, not level-faithful). (4) The mechanism taxonomy and the headline chain counts are classifications, not inferences, and carry no uncertainty. (5) It is one unbylined author writing at volume; the institutional voice reflects method, not a team.

How to contribute

Everything is public and reproducible. The whole reconciliation engine runs in CI without an API key.

The standing challenge. If you can break a headline claim, the atlas would rather know. See also the open “break this atlas” challenge and the limitations page — this review invitation is the same posture, aimed at experts.