Averages hide things, and cohorts confess them. A cohort is the set of customers acquired in the same period, tracked together forever after. The retention triangle is the standard exhibit: rows = acquisition cohorts, columns = age (months/years since acquisition), cells = % of the cohort still active (or its revenue). It's a triangle because young cohorts haven't lived long enough to fill their rows. No exhibit in a DRHP or a deck packs in more information, and when a company withholds it, it's the first thing to build yourself.
Cohort analysis example: the retention triangle
Build one. "QuickBasket" is a consumer app (synthetic data). Each cell is the % of the cohort still transacting in month M, where M0 = acquisition month = 100%. Use this table as your template.
| Cohort (size) | M0 | M1 | M2 | M3 | M4 | M5 |
|---|---|---|---|---|---|---|
| Jan (20,000) | 100 | 62 | 48 | 41 | 38 | 36 |
| Feb (24,000) | 100 | 60 | 46 | 40 | 37 | |
| Mar (30,000) | 100 | 57 | 43 | 37 | ||
| Apr (38,000) | 100 | 53 | 40 | |||
| May (45,000) | 100 | 50 | ||||
| Jun (52,000) | 100 |
Advertisement
There are three directions to read it in, and they should become reflexes:
- Across a row = one cohort ageing (the maturation curve). Jan runs 100, 62, 48, 41, 38, 36. The decay is steep early and then flattens. By M4–M5 the curve is losing ~1–2 points/month, down from 14. That flattening is the habit floor, and nothing else in the table is worth as much. A floor means a durable base exists, an annuity you can value. No floor, with the curve still falling in a straight line at M12, means the "recurring" business is a leaky bucket wearing a subscription costume. The mature churn rate you feed into LTV comes from the flat part of old cohorts' curves. Here that's ~3–5%/month, and the blended figure would mislead you.
- Down a column = same age, different vintages (the machine's quality trend). M1 retention goes 62, 60, 57, 53, 50. Every cohort is worse than the last at the same age. That's vintage deterioration, the machine degrading as it scales, and the cause is a familiar one. Cohort sizes grew from 20,000 to 52,000 in six months. You saw with CAC that the marginal customer, bought at rising CAC from weaker channels with fatter vouchers, is also the weaker customer. In consumer businesses, a trend down the columns is the earliest structural warning you'll get. Here it shows up months before any P&L line bends.
- Along a diagonal = one calendar month hitting every cohort at once. Think of a price hike, a competitor launch, a festival, a pandemic. A calendar event shows up as a stripe running diagonally, because each cohort's cell for that month dips whatever its age. Telling a diagonal stripe (external, one-off) apart from a down-column slide (structural) is the difference between "hold" and "alarm".
How do blended metrics hide decay?
Now watch the blended metrics lie. Total active customers in May are Jan 38%×20,000 + Feb 40%×24,000 + Mar 43%×30,000 + Apr 53%×38,000 + May 100%×45,000 = 7,600 + 9,600 + 12,900 + 20,140 + 45,000 = 95,240. In June they're Jan 36%×20,000 + Feb 37%×24,000 + Mar 37%×30,000 + Apr 40%×38,000 + May 50%×45,000 + Jun 100%×52,000 = 7,200 + 8,880 + 11,100 + 15,200 + 22,500 + 52,000 = 116,880. The dashboard reports actives +23% month-on-month, a growth story. Meanwhile the triangle shows every single cohort decaying faster than the one before. Growth in acquisition is outrunning decay in quality, and the moment marketing spend slows, the melt shows through.
That's blended masking. It's the default state of every scaled consumer company's headline metrics, so don't file it under edge cases.
How does a revenue triangle show payback and NRR?
The revenue triangle and the payback read. Replace "% active" with cumulative contribution per acquired customer (₹) and the triangle answers payback directly. The month where the cumulative-contribution row crosses CAC is the cohort's actual payback. You don't need a formula for it. You just look. Best-practice decks show this as "cohort revenue vs CAC" curves. When a company shows you percentage retention but never cumulative contribution vs CAC, it's usually because the crossing point is embarrassingly far to the right. NRR falls out of a revenue triangle too. Read one cohort's revenue row at month 12 ÷ month 0. If it's above 100%, expansion beat churn and that cohort's NRR > 100%. Worked example 3 computes this end to end.