Methodology

How the numbers work

U.S. munitions inventories are classified. Nobody outside the Pentagon knows the exact count, and this site doesn't pretend to. What it does is collect the best public estimates and reports, keep each one tied to its source, and show where they agree and where they don't.

Sources and claims

Every number starts as a claim inside a report: a CSIS analysis, a news story, an inspector general summary. A claim records the missile, what's being measured (prewar stock, number used, number left, share used), the date the number describes, how the source hedged it ("about", "more than", "nearly"), and the exact sentence it came from.

Each claim gets one of three tags:

Quotes are checked by machine

Before a report is merged, a script downloads the source page and confirms every quote appears in it word for word. Before comparing, it lowercases both texts, treats curly and straight quotes as the same, treats every kind of dash (hyphen, en dash, em dash, minus) as the same, reads "…" as "...", and collapses runs of whitespace. Nothing else is forgiven: a quote that only paraphrases the source fails.

If a source page can't be fetched, the check fails rather than passing quietly. On a pull request, the sources that pull request adds or changes must be reachable; older sources that happen to be down are reported but don't block it. The daily watch lists any older source whose page changed or disappeared in its summary.

PDFs are read the same way. CSIS's "Last Rounds?" report, which supplies most prewar and production figures, is a PDF; its quotes are rows from its tables, checked against the text extracted from the file. Sources that can't be fetched automatically, such as a paywalled story, are marked for manual checking.

How the headline is picked

For each missile, the big number is the newest stock-left figure we can state without mixing sources:

  1. A direct "this many left" claim, or
  2. Prewar stock minus the number used, when the same document gives both.

Ties on date go to the more specific figure: a range beats "about", which beats "at most". The share left is measured against the same document's prewar figure when it has one, otherwise the most recent earlier one.

Some newer reporting can't be converted. CNN's August report that "nearly 80%" of THAAD interceptors had been used doesn't say 80% of what, and Pentagon and CSIS baselines differ. Rather than multiplying it against someone else's number, the site flags it as Newer reporting next to the headline.

The rebuild model

Each missile page projects the stockpile day by day from the headline estimate, using sourced inputs listed on that page:

What it leaves out, on purpose:

The model is deliberately simple, so every input is visible and adjustable. Its results land near CSIS's own return-to-prewar dates for Tomahawk, THAAD and Patriot. For JASSM it is slower than CSIS, which expects large deliveries from recent orders.

How updates happen

A scheduled job checks a fixed list of sources (CSIS analysts' pages and news searches for each missile) once a day. When something new mentions stockpile numbers, Claude drafts the claims (and any model inputs the article states outright, like a new production rate), a script checks every quote against the page, and the draft opens as a pull request. A person reviews it before anything goes live. Nothing is published straight from an AI.

Corrections

Spotted a wrong number, a newer source, or a quote out of context? Open an issue. All data lives in plain JSON in the repository, one file per source.

← Back to the tracker