← NM AI Research · research portfolio
How much announced generation capacity actually gets built — a realized-completion anchor from the PJM interconnection queue. Announced is not deliverable.
Interactive front-end over the published v0.1 aggregates · data as of 2026-06 · canonical record: DOI 10.5281/zenodo.20559430 · NM AI Research, ORCID 0009-0003-4213-7769 · CC BY 4.0
Each milestone is conditional on surviving the previous one, so the rates multiply. The steepest drop is at the System Impact Study, where a project learns its share of network-upgrade costs.
| Stage | % of entered | what it is |
|---|
Where the MW die: 61% of announced MW exit before a signed agreement; another 13% exit after one (a signed IA converted to service only ~58% of the time). The gap is viability and build, not paperwork.
Recent cohorts read low only because they have not had time to resolve, so the headline uses the mature, near-fully-resolved windows (bold). Those converge on ~16–25% built — about one announced MW in five.
| Cohort | % built | % withdrawn | maturity |
|---|
What this is. A realized announced-to-in-service completion rate from PJM's own resolved serial queue (8,253 generation projects, ~837 GW announced). The calculator lets you deflate any announced headline through the three measured attrition stages and watch the deliverable move. Defaults are the PJM mature-cohort base rate; the sliders are for sensitivity, not invention.
The load-bearing assumption. The mature 2010–2017 cohort is generic historical generation (wind/solar/gas) used as a completion base rate — not capacity announced to serve AI. Transferring that rate to the AI-era cohort is the named assumption (cohort comparability); FERC Order 2023 could raise completion, speculation could lower it.
Supply, not demand. This deflates the generation side, not the ~950 TWh demand headline. De-duplication barely moves the result (r1 ≈ 0.81–0.92): the gap is overwhelmingly viability and build. "Built" counts only In Service (conservative, biases the rate down). The output is a band with the announced-vs-deliverable gap as the softest input — treat any headline as a scenario, not a baseline.
No raw PJM data is bundled here (it carries a redistribution restriction); only the published derived aggregates. The full method reads a locally-obtained PJM export — see the Zenodo record. r2 × r3 = built/entered is an algebraic identity, not an independent check. Anchors (LBNL ~14–20% national; Exelon ~22% of company pipeline) are loosely comparable, not like-for-like.
Disclosure. No third party reviewed, funded, or directed this work. Independent analysis, not investment advice.
Reproducibility. This page embeds the published aggregates (funnel.csv, cohorts.csv) verbatim, regenerated by build.py; the full reproduce.py and write-up live in the Zenodo record.