← rabbit_holes

startup_
graveyard

a census of yc outcomes · 2021–2026 · receipts included

What actually happens to startups after the launch tweet? This is a census, not a highlight reel: every Y Combinator company from the 2021–2026 batches — all 3,566 of them — tracked from demo day to whatever came next, using five free public sources and a pipeline where every fact carries its source URL. It is a lifecycle study, not a failure study: the cohort holds every outcome from acquisition to wind-down, and it's that full denominator that makes the rates mean anything. Survival curves come with confidence bands, funding gets tested against death, and silence gets recorded as silence — because most startups never write a goodbye post.

select outcome, evidence from yc_companies where batch >= '2021'
recreate the analysisschema, ingesters, tests, and a citable v1.0.0 data release with sha-256 checksums.
3,566companies tracked
300shut down
197acquired
0ipos

00 / window

three regimes, one cohort

Five years is not an arbitrary slice. The 2021+ window catches three funding climates inside a single comparable population — same accelerator, same selection, same directory, only the weather changed. That is what makes cohort-to-cohort comparison legitimate here and illegitimate almost everywhere else.

cohort size and mortality by funding regimedirectory status as of jul 2026

the ai-wave cohorts are the largest ever and the least dead — but they are also the youngest, and a young cohort is an unfinished observation, not a healthy one. only the first two regimes have had enough time on the clock to produce a rate worth quoting.

01 / verdict

six numbers that survived the analysis

Every number below carries its denominator, its cohort window, and — where it's a rate — a Wilson 95% confidence interval. The most interesting finding is a null result, which is exactly why it's publishable.

f1 17.2%2021 cohort · 125 of 727

of the ZIRP-peak 2021 batch is gone five years later. The correction was real — but quieter than the discourse suggested.

f2 26.6% vs 7.5%consumer vs healthcare, 2021–23

What you build matters more than when. Consumer startups die at 3.5× the healthcare rate, and the confidence intervals don't touch.

f3 no differencefunding vs death · overlapping CIs

Companies with no Form D on file die at 14.2%; companies that filed $5M+ die at 11.1%. The intervals overlap. Money postpones the question; it doesn't answer it.

f4 ~6 of 300shutdowns with any public post-mortem

Most startups die silently. No founder letter, no HN thread, no news story — just a website that stops answering. The failure discourse is written by the loudest 2%.

f5 3quiet acquisitions found

Homepage-notice mining caught companies listed as "inactive" that were actually acquired (Fabius, Flike, Launcher Labs). Directory labels lag reality; receipts don't.

f6 $6.3b428 form d filings · 251 companies

Fundraising events pulled straight from SEC EDGAR filings — dollar amounts from the filings themselves, not press-release rounding.

02 / survival

how cohorts actually decay

Kaplan-Meier survival per cohort year, with Greenwood 95% bands. Companies enter at their batch start (winter = jan, spring = apr, summer = jun, fall = sep); death is proxied by the last month a company's website returned HTTP 200 to the Wayback Machine; active, acquired, and public companies are right-censored at the export date — an acquisition is not a death, and acquisition dates aren't public. The 2021 cohort — funded at the peak — sits at 81.2% survival at month 66.

kaplan-meier survival by cohort yeargreenwood 95% bands

y-axis starts at 70% — no cohort's curve goes below it. survival at last observed month: 2021 → 81.2%, 2022 → 86.1%, 2023 → 87.1%.

observed lifespan · dead companies only6-month bins · batch start → last live snapshot

validating the death proxy6 independently documented shutdowns
companyannouncedproxy saysdeltaevidence

the proxy runs late: websites outlive companies (median +3 months; moxion power's site zombied for 20). read km lifespans as upper bounds — that's a documented bias, not a footnote.

03 / mortality

what you build decides how you die

Shutdown rate by industry, 2021–23 cohorts only (later cohorts haven't had time to die yet). Whiskers are Wilson 95% intervals — small industries get honest, wide ones.

shutdown rate by industry · 2021–23 cohortswilson 95% ci

consumer's interval [20.5%, 33.8%] clears healthcare's [4.8%, 11.7%] with room to spare — one of the few differences in this dataset that survives its own error bars.

outcomes by cohort year · full 2021–2026 windowdirectory status as of jul 2026
inactive acquired still operating

2024–26 cohorts look immortal because they're young, not because they're better. this is right-censoring wearing a flattering outfit.

stated cause of death · controlled vocabularyllm-extracted, quote + source url mandatory

04 / money

funding doesn't buy survival

Every company matched against SEC EDGAR Form D filings — exact-name matching, ambiguity dropped, amounts from the filings. Then the obvious question: do funded companies die less? Within this window, not detectably.

shutdown rate by form d bucket · 2021–23 cohortswilson 95% ci

all three intervals overlap. and the honest caveats: "no form d found" ≠ "raised nothing" (only us exempt offerings get filed), and selection effects — better companies raise more — likely make money's causal effect even smaller than the observed 3pp gap.

05 / the build

five sources, one duckdb file, $0

The dataset is the product. Everything below is free public data — the price is politeness delays, entity-resolution rigor, and recording every check so nothing runs twice. Any step can be re-run safely; every fact carries its source URL.

ingest (per source) ─→ resolve (canonical id + guards) ─→ enrich (llm, receipts) ─→ export ─→ dashboardduckdb · data/lifecycle.duckdb · 8 tables · idempotent upserts on natural keys
3,566companies · yc directory, the ground-truth denominator
7,603wayback snapshots · monthly liveness heartbeat, 283 companies
428form d filings · $6.3b, parsed from primary_doc.xml
278hn mentions · surviving the homonym filter
269final homepages read · 7 shutdown notices found
4,003timeline events · one dated stream, any source
10llm-enriched shutdowns · quote + source url mandatory
~2.5hfull pipeline runtime · politeness delays included

the sources

sourceprovidespoliteness
yc directoryThe cohort itself with labeled outcomes — the denominator every rate in this report divides by.static json
wayback cdxMonthly website-liveness timeline per company; last live snapshot is the death-date proxy.1s delay
wayback snapshotsFinal-homepage shutdown notices — founder-letter-grade evidence, mined and human-reviewed.3s + 30s backoff
hn (algolia)Launch posts, shutdown threads, community post-mortems — comments say what founder letters won't.0.3s delay
sec edgarForm D fundraising events with dollar amounts, straight from the filings.0.5s + declared ua

considered and rejected: crunchbase (five figures), linkedin (tos + litigation), x (api cost). the price of $0 data is patience.

the schema

tablecontentsnatural key
companiesCanonical company — slug, name, apex domain, batch, cohort year, status, industry, team size.company_id
company_sourcesPer-source identity plus the raw record: the entity-resolution ledger.company_id + source
funding_roundsForm D filings with amount_usd (totalAmountSold, falling back to totalOfferingAmount) and filing URL.source_url
timeline_eventsOne dated stream of everything — yc_listed, funding, layoff, shutdown_notice. A company page is an ORDER BY.
wayback_snapshotsOne row per company-month with its HTTP status: the liveness heartbeat.company_id + month
wayback_noticesFinal-snapshot checks; a null phrase means "checked, found nothing" — which is what makes the miner resumable.company_id
hn_mentionsHacker News stories that survived the homonym filter.company_id + story_id
shutdown_enrichmentLLM extraction: reasons, category, confidence, and a verbatim quote + source URL, both NOT NULL.company_id

every ingester is idempotent — insert-or-replace on the natural key — so any step can be re-run without duplicating a single row.

rebuild it yourself

git clone https://github.com/rohitvpgawli/why-startups-die && cd why-startups-die
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt   # duckdb, httpx, anthropic

lifecycle init-db                            apply schema.sql
lifecycle ingest-yc                          ~30s · 3,566 companies
lifecycle ingest-wayback --status Inactive   ~30min · liveness timelines
lifecycle ingest-hn --status Inactive        ~10min · hn mentions
lifecycle ingest-edgar                       ~75min · form d, full cohort
lifecycle ingest-wayback-notices             ~20min · resumable; re-run to retry errors
lifecycle enrich                             needs ANTHROPIC_API_KEY; skips enriched
lifecycle export && dashboard/build.py       export.json → self-contained dashboard

scripts/refresh.sh chains the whole thing. re-running later grows the dataset — new deaths arrive as yc flips a directory status, which is the one part of this pipeline nobody controls.

the actual hard part: entity resolution

edgar matcher

Naive prefix-matching assigned 789 unrelated fund filings to startups named "Galaxy" and "Stellar." The fix: filer name must equal the company name exactly, or name + corporate-suffix tokens only. Result: 428 clean filings.

hn homonym filter

Companies named June, Cache, Fable, and Nexus match endless unrelated news. A story counts only if the company's domain is in the URL, or the exact name appears in the title alongside startup-context tokens ("YC", "Show HN", "shut down", "raises").

ambiguity guards

A company matching more than two distinct SEC CIKs is dropped entirely. A filing matching two different YC companies (there are two "Hyper"s) is dropped for both. Recall is sacrificed for precision, on purpose, everywhere.

notice-miner review

"Acquired by" on a homepage only counts if it's about this company — team-bio brags about other companies' exits were rejected on manual review. Human review of snippets is a pipeline step, not a nice-to-have.

regression tests

Every resolution rule is pinned to the concrete failure that motivated it — Galaxy-fund pollution, Abel/June homonyms, month-name subjects. Writing the tests caught two further live filter leaks.

llm enrichment, caged

Claude Opus 4.8 extracts shutdown reasons under structured output, into an eleven-term controlled vocabulary — but confidence is capped by source quality (founder letter ≤ 0.9, community ≤ 0.7, dead-website inference ≤ 0.4), and a verbatim quote + source URL is mandatory. No receipt, no row.

citable artifact · releases/v1.0.0 — one csv per table, analysis json with every ci, proxy-validation sample, sha-256 checksums. the duckdb working file stays local; the release is the thing you cite.
licence · code (src, dashboard, scripts, schema, tests) under mit · data compilation under cc by 4.0. both permit commercial use; the data asks for attribution.
gawli, r. (2026). the startup lifecycle project: outcomes of y combinator startups, 2021–2026 batches. data release v1.0.0.

06 / registry

the graveyard, row by row

All 300 companies the YC directory marks inactive — each with its lifespan, last sign of life, Form D filings, HN record, and (where the public record supports one) an evidence-linked shutdown reason. Companies, not people; outcomes, not morality plays.

07 / limitations

disclose these when citing

A dataset that hides its weaknesses is marketing. These are the load-bearing caveats.

reproduction notes schema, ingesters, tests, and the citable data release on github