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:
- Official On the record from a government body: DoD, an inspector general, CRS, CBO.
- Reported Journalists citing officials, documents or unnamed sources. Often the freshest information, but usually without a stated baseline.
- Estimate An analyst's model. Most stock counts here come from CSIS (Mark Cancian and Chris Park), who rebuild inventories from DoD budget exhibits: missiles bought (P-5) and delivered (P-21), less 5% for testing and training, less earlier wars and transfers to Ukraine.
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:
- A direct "this many left" claim, or
- 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:
- Existing orders arrive at the recent U.S. delivery rate, CSIS's five-year average of procurement.
- The FY2027 rebuild order starts arriving on the date in DoD's delivery schedules. It's delivered over one production lot, but never faster than announced production capacity.
- A renewed war is off by default. Turned on, it fires at the opening campaign's average rate (the April ceasefire tally divided by 39 days) unless you change it. Stock can't go below zero; the unmet part is reported as a shortfall.
What it leaves out, on purpose:
- Firing since the estimate date. Fighting resumed on July 8 at lower intensity, but no one has published counts for it. Projections that start from April estimates are optimistic.
- Allied demand. Announced capacities cover all customers. About half of current Patriot output goes abroad.
- Later budgets. Only the FY2027 order is modeled. FY2028 and beyond would speed things up.
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.