SaaS metrics · MRR waterfall · Kaplan-Meier · LTV/CAC

5,000 customers. 36 months.
30% of every cohort
gone before the first renewal.

The recurring-revenue report every B2B SaaS CFO reads on Monday morning — the way ChartMogul, Maxio, and Stripe Sigma define the math.

of every cohort gone
before the first renewal
Ending MRR
$1.99M
after 36 months
NRR @ 12 mo
85.2%
median cohort
Survival
53.9%
@ 12 mo · Kaplan-Meier
LTV / CAC
15.3×
on Pro tier
The headline insight

Churn is not flat. It spikes in months 3-6.

Monthly churn climbs to 7-9% in the post-honeymoon window — versus 2-3% in the first two months and 3-6% from month 7 onward.

By the time it shows up in the dashboard, you've already lost ~30% of the cohort before they hit the first renewal. The intervention window is tiny, and almost no one budgets for it.

This is the kind of finding that turns a board deck. Onboarding, value-realization, and proactive CS spend all reprice once you see it.

Three curves, three truths

Logo retention 52%. GRR 67%. NRR 85%.
Report only one and you're hiding something.

Cohort retention

Each row is a signup cohort. Each cell is its retention N months later.

Greener = more of the cohort still here. Faded = churned out.

M1
M2
M3
M4
M5
M6
M7
M8
M9
M10
M11
M12
2024-01
100
94
82
71
66
62
58
55
52
50
48
46
2024-02
100
96
85
73
65
60
57
54
51
49
47
45
2024-03
100
93
80
68
62
58
56
53
50
48
46
44
2024-04
100
95
83
70
63
59
56
53
51
48
46
45
2024-05
100
94
81
69
62
58
55
52
50
48
46
44
2024-06
100
93
80
68
62
58
55
52
49
47
45
43
>80% retained
50-80%
<50%
Under the hood

What's inside the repo.

Concentration risk worth naming

55.6% of MRR rides on the Pro tier (30.6% of logos).

Good for revenue. Risky at the next renewal. The dashboard surfaces it instead of burying it under blended-average metrics.

The stack

Built with.

Python 3.12pandasnumpymatplotlibseabornDuckDBKaplan-Meier from scratch