Where we are: from patterns to a domain
You already own the three decomposition patterns from b2 - multiplicative (rate x volume), additive (sum of parts), and the flow bridge (a balance that fills and drains). You have applied them to ecommerce (b4), marketing (b5), branding (b6), and internet traffic (b7). This is the fifth of six domains, and it is where the flow bridge finally gets its flagship example: recurring revenue. b9 does B2G, then b10 is the capstone.
ARR is not a number, it is a bridge 8 min live
Annual recurring revenue is a balance, and every balance is a flow bridge: you start the period at some ARR, add the new logos you closed, add expansion from customers who grew, then subtract contraction from customers who shrank and churn from customers who left. Ending ARR is what survives all five. The mistake juniors make is staring at the net move; the skill is managing the individual flows, because that is where the levers actually are.
LiveThe five flows, and why gross beats net3 min▶
Net new ARR - the single number on the board slide - is New + Expansion - Contraction - Churn. It can look healthy while hiding a fire. A company can post +$110K net while gross churn quietly doubles, as long as new sales sprint to cover it. The bridge forces the gross flows into the open so you cannot hide a retention leak behind a strong sales quarter.
- New - ARR from brand-new logos. Sales and marketing own it.
- Expansion - existing customers buying more (seats, upsell, usage). Customer success and product own it.
- Contraction - existing customers buying less. A downgrade, not a departure. A loss flow, sign negative.
- Churn - customers who leave entirely. The other loss flow, sign negative, and usually the most expensive.
Net Revenue Retention is just four of these flows. NRR = (Start + Expansion - Contraction - Churn) / Start - it deliberately ignores New, because it measures whether your existing base grows on its own. In the numbers above that is (1.00M + 90K - 40K - 120K) / 1.00M = 93%. Below 100% means the installed base is shrinking and New has to run just to stand still. The best SaaS companies run NRR above 120%.
LiveBuild the ARR bridge live4 min▶
Here is the same bridge as a live tree. The two loss flows carry "sign": -1 so the simulator subtracts them. Edit any flow and watch ending ARR recompute. This is the flagship example of the bridge operator you met in b2.
{
"unit": "$",
"root": {
"label": "Ending ARR", "op": "bridge",
"children": [
{ "label": "Start ARR", "value": 1000000, "unit": "$" },
{ "label": "New", "value": 180000, "unit": "$" },
{ "label": "Expansion", "value": 90000, "unit": "$" },
{ "label": "Contraction", "value": 40000, "unit": "$", "sign": -1 },
{ "label": "Churn", "value": 120000, "unit": "$", "sign": -1 }
]
}
}
New ARR is its own multiplicative tree 5 min live
One flow in the bridge - New - is not a leaf you control directly either. It is a product: New ARR = Leads x Win-rate x ACV. That means a bridge sits on top of a multiplicative tree, and the same pass-through rule applies: win-rate down 10% with everything else held drops new ARR 10%. And the earliest warning of all lives one step further out - pipeline coverage, weeks ahead of any booking.
LiveNew = Leads x Win-rate x ACV3 min▶
Split the New flow into its drivers. Marketing owns leads, sales owns win-rate, packaging and pricing own ACV. Now a "new-business shortfall" stops being vague and becomes one of three named levers.
{
"unit": "$",
"root": {
"label": "New ARR", "op": "x",
"children": [
{ "label": "Leads", "value": 600, "unit": "leads" },
{ "label": "Win-rate", "value": 0.10, "pct": true },
{ "label": "ACV", "value": 3000, "unit": "$" }
]
}
}
Self-studyLeading vs lagging in SaaS2 min read▶
Ending ARR and NRR are lagging - they close the book on a period that already happened. To steer, you watch the flows and the inputs to the flows, which lead by weeks or quarters.
- Leading: pipeline coverage (pipeline / target), trial-to-paid rate, product-qualified leads, usage trend inside accounts. These warn early.
- Lagging: ending ARR, net new ARR, NRR, gross churn dollars. These report late but are what the board sees.
- The rule: if pipeline coverage falls below about 3x this quarter, next quarter's New flow is already in trouble - long before ARR shows it.
The three classic SaaS drops 4 min live
Almost every ARR miss lands on one of three flows. Learn the symptom-to-leaf map once and diagnosis becomes a reflex: hear the symptom, name the flow, route to the owner.
LiveSymptom to bridge leaf2 min▶
- Churn spike (a retention problem) -> the Churn flow grows. Owner: customer success. Deeper cause is usually onboarding, value delivery, or a competitor.
- Expansion stalls (a product-value problem) -> the Expansion flow shrinks, and often Contraction grows with it. Owner: product and CS. Customers are not finding more to buy.
- New falls (a pipeline or win-rate problem) -> the New flow shrinks. Owner: marketing (leads) or sales (win-rate). Check pipeline coverage first - it warned you weeks ago.
Diagnose an ARR miss live ★ 12 min · everyone builds
The board asks why ARR came in light. You have the bridge. Press Simulate a drop, read the coral trail to the flow that moved, and name it: was this a new-business shortfall (the New flow fell) or a retention leak (a loss flow grew)? Then confirm the retention story in SQL against the subscription base.
{
"unit": "$",
"root": {
"label": "Ending ARR", "op": "bridge",
"children": [
{ "label": "Start ARR", "value": 1000000, "unit": "$" },
{ "label": "New", "value": 180000, "unit": "$" },
{ "label": "Expansion", "value": 90000, "unit": "$" },
{ "label": "Contraction", "value": 40000, "unit": "$", "sign": -1 },
{ "label": "Churn", "value": 120000, "unit": "$", "sign": -1 }
]
}
}
Read the baseline: Start $1.00M plus New and Expansion, minus Contraction and Churn, ends at $1.11M. NRR is 93%.
Press Simulate a drop. A flow moves and its path to Ending ARR lights coral. Note which flow and by how much.
Classify it: if New fell, it is a new-business shortfall - go to marketing or sales. If a loss flow is the story, it is a retention leak - go to CS.
Confirm the retention side in the seed data below: how many subscriptions are still active versus cancelled, and where do the cancellations concentrate?
LiveChurn proxy - active vs cancelled subscriptions4 min▶
The seed has a small subscription base. A cancelled subscription (a non-null cancel_date) is a churned account - the raw material of the Churn flow. Run this to see how many are still active versus gone.
SELECT
COUNT(*) FILTER (WHERE cancel_date IS NULL) AS active_subs,
COUNT(*) FILTER (WHERE cancel_date IS NOT NULL) AS churned_subs,
ROUND(100.0 * COUNT(*) FILTER (WHERE cancel_date IS NOT NULL)
/ COUNT(*), 1) AS churn_rate_pct
FROM subscriptions;
Your turn ★ 10 min · everyone builds
Three tasks: one edits the bridge, one runs SQL, one is a judgment call you write in prose. Do all three - the third is the one that separates an analyst from a diagnostician.
LiveQ1 · Halve Expansion, watch ending ARR and NRR3 min▶
On the ARR bridge in Demo 1, edit Expansion from $90K down to $45K. Ending ARR falls by $45K to about $1.065M. More importantly, feel NRR drop: (1.00M + 45K - 40K - 120K) / 1.00M = 88.5%. Expansion is the flow that pushes NRR above 100% - halve it and the installed base leaks faster. Say why a product team, not sales, owns this miss.
LiveQ2 · Count active vs churned subscriptions by plan4 min▶
Split the churn proxy by plan. Join subscriptions to customers for the plan, then count active versus cancelled in each. Watch where every cancellation lands.
SELECT c.plan,
COUNT(*) FILTER (WHERE s.cancel_date IS NULL) AS active_subs,
COUNT(*) FILTER (WHERE s.cancel_date IS NOT NULL) AS churned_subs
FROM subscriptions s
JOIN customers c ON s.customer_id = c.customer_id
GROUP BY c.plan
ORDER BY churned_subs DESC;
Every cancellation sits on the Basic plan; all Pro subscriptions are still active. That is a segment lead you can act on: the retention leak is not company-wide, it is a Basic-plan problem. Now the fix is scoped - look at Basic onboarding and value, not the whole book.
Self-studyQ3 · Same net growth, two very different companies3 min think▶
Two SaaS companies both grow net ARR by the same $110K this year. Company A does it with low churn and modest new sales. Company B does it with high churn masked by aggressive new sales. Which is healthier, and why?
- Company A is healthier. Low churn means its NRR is near or above 100% - the existing base compounds, so next year starts from a higher, sturdier floor and every new logo adds on top rather than backfilling a leak.
- Company B is running on a treadmill. High churn means a low NRR; new sales are spent replacing lost revenue, not growing it. The moment new-sales momentum stalls, the leak shows and net growth collapses. It also costs far more - acquiring a new logo is dearer than keeping one.
- The lesson: net ARR growth is a headline; the gross flows are the diagnosis. Low churn compounds, high new sales rents.
Try it yourself - this week ◐ 20-30 min total
- Write your product's ARR bridge for last quarter: Start, New, Expansion, Contraction, Churn, Ending. If you cannot find the gross flows, that gap is the finding - your finance and CS teams may only report the net.
- Compute NRR from four of those flows. Is your installed base growing on its own, or is New doing all the work?
- Split New into Leads x Win-rate x ACV and name the owner of each. Then find your current pipeline coverage - is it above 3x?
- Next time someone says "ARR came in light", ask "which flow?" before "why?" - and check whether New masked a churn spike.
- Bring your bridge to b10 - the capstone drop could be a SaaS one.
Frameworks this session draws on
The SaaS metric canon is remarkably settled - ARR bridge, NRR, and the gross-versus-net discipline appear in nearly every operator's playbook. This page draws on:
Three questions before you go 🎯 ◐ 90 seconds
1 · Ending ARR = Start + New + Expansion - Contraction - Churn. Which decomposition pattern is that?
A bridge is a running balance: positive flows (new, expansion) add, negative flows (contraction, churn) subtract. The loss flows carry a negative sign - that is what makes it a bridge and not a plain sum.
2 · What does Net Revenue Retention actually measure?
NRR deliberately excludes New. It asks: if you closed zero new logos, would the installed base grow, hold, or shrink? Above 100% means expansion outruns losses - the base compounds by itself.
3 · Why watch the gross flows instead of just net new ARR?
Two companies with identical net growth can be in opposite health. Only the gross flows tell you whether growth came from durable retention or from new sales sprinting to backfill a leak.