DEMO — synthetic data. SaaS business model (B2B subscription, product-led with sales assist): the core metrics for the last 3 months (2026-05-06 → 2026-08-03) — MRR and ARR, the MRR movement waterfall (new / expansion / contraction / churn), net new MRR, active customers, ARPA, trial-to-paid conversion, logo vs revenue churn, net revenue retention, and LTV:CAC with payback. Includes a cohort retention triangle (logo and MRR) back to 2025-08 and a plan-mix table. Global plan filter and day/week/month granularity. Rows come from a subscription-level simulation in clients/demo/data-gen/saas-overview.mjs, which asserts the MRR waterfall and customer-count balance — no real client data.
clients/demo/data-gen/saas-overview.mjs.Every headline SaaS metric is a different view of one book of business, so they have to reconcile or the dashboard is lying. Rather than generating each series on its own, the generator walks a real book day by day — each subscription with a plan, an MRR, a signup date and maybe a churn date — and derives everything from it. Two identities are asserted before the data is written:
ending MRR = starting MRR + new + expansion − contraction − churnactive customers = yesterday's + new − churnedSo the waterfall below balances exactly, and the cohort table shows the same churn the daily series reports.
(start + expansion − contraction − churn) ÷ start. GRR (gross) excludes expansion, so it can never exceed 100%.Watch those two apart. They answer different questions, and when one large account leaves they diverge hard — which is exactly what happens here on 10 June.
ARPA × gross margin × expected lifetime, assuming an 80% gross margin and a lifetime of 1 ÷ monthly churn capped at 36 months. The cap matters: Enterprise churns at 0.7%/month, which implies a twelve-year customer and prints an LTV:CAC of 47x. Nobody underwrites that, so it is capped — the usual convention.The default range is 90 days. A churn figure that silently meant "per quarter" would be the most misleading number on the page, so every rate here is normalised to a month. NRR and GRR are the exception — they are quoted over the whole selected range, as is conventional.
MRR and active customers are stocks — a level at a point in time. They are read at the end of each period, never summed across days (adding "active customers" over 90 days would report 160,000 customers for a company that has 1,800). New MRR, churn, trials and spend are flows and do accumulate.
Rows are signup months, columns are months since signup. Toggle between logo and MRR retention — the gap between them is the story. Logo retention can only fall; MRR retention can pass 100% when expansion inside the surviving accounts outruns what churned. The triangle covers the whole book back to August 2025 and deliberately ignores the date and plan filters, since slicing a cohort curve to 90 days would leave a single meaningless column.