saas-metrics
Use this skill when calculating, analyzing, or reporting SaaS business metrics. Triggers on MRR, ARR, churn rate, LTV, CAC, LTV:CAC ratio, cohort analysis, net revenue retention, expansion revenue, board deck metrics, investor reporting, unit economics, payback period, or SaaS financial modeling. Covers metric definitions, formulas, spreadsheet implementation, cohort tables, and board-ready reporting for founders, finance teams, and growth operators.
analytics saasmrrchurnltvcaccohort-analysisboard-reportingWhat is saas-metrics?
Use this skill when calculating, analyzing, or reporting SaaS business metrics. Triggers on MRR, ARR, churn rate, LTV, CAC, LTV:CAC ratio, cohort analysis, net revenue retention, expansion revenue, board deck metrics, investor reporting, unit economics, payback period, or SaaS financial modeling. Covers metric definitions, formulas, spreadsheet implementation, cohort tables, and board-ready reporting for founders, finance teams, and growth operators.
saas-metrics
saas-metrics is a production-ready AI agent skill for claude-code, gemini-cli, openai-codex, and 1 more. Calculating, analyzing, or reporting SaaS business metrics.
Quick Facts
| Field | Value |
|---|---|
| Category | analytics |
| Version | 0.1.0 |
| Platforms | claude-code, gemini-cli, openai-codex, mcp |
| License | MIT |
How to Install
- Make sure you have Node.js installed on your machine.
- Run the following command in your terminal:
npx skills add AbsolutelySkilled/AbsolutelySkilled --skill saas-metrics- The saas-metrics skill is now available in your AI coding agent (Claude Code, Gemini CLI, OpenAI Codex, etc.).
Overview
SaaS metrics are the quantitative language of subscription businesses. They answer three fundamental questions: how fast is the business growing (MRR, ARR, net new MRR), how sticky are customers (churn, retention, NRR), and how efficient is growth (CAC, LTV, LTV:CAC, payback period). This skill equips an agent to define metrics precisely, calculate them from raw data, build cohort analyses, and produce board-ready reporting decks that investors and operators actually trust.
Tags
saas mrr churn ltv cac cohort-analysis board-reporting
Platforms
- claude-code
- gemini-cli
- openai-codex
- mcp
Related Skills
Pair saas-metrics with these complementary skills:
Frequently Asked Questions
What is saas-metrics?
Use this skill when calculating, analyzing, or reporting SaaS business metrics. Triggers on MRR, ARR, churn rate, LTV, CAC, LTV:CAC ratio, cohort analysis, net revenue retention, expansion revenue, board deck metrics, investor reporting, unit economics, payback period, or SaaS financial modeling. Covers metric definitions, formulas, spreadsheet implementation, cohort tables, and board-ready reporting for founders, finance teams, and growth operators.
How do I install saas-metrics?
Run npx skills add AbsolutelySkilled/AbsolutelySkilled --skill saas-metrics in your terminal. The skill will be immediately available in your AI coding agent.
What AI agents support saas-metrics?
This skill works with claude-code, gemini-cli, openai-codex, mcp. Install it once and use it across any supported AI coding agent.
Maintainers
Generated from AbsolutelySkilled
SKILL.md
SaaS Metrics
SaaS metrics are the quantitative language of subscription businesses. They answer three fundamental questions: how fast is the business growing (MRR, ARR, net new MRR), how sticky are customers (churn, retention, NRR), and how efficient is growth (CAC, LTV, LTV:CAC, payback period). This skill equips an agent to define metrics precisely, calculate them from raw data, build cohort analyses, and produce board-ready reporting decks that investors and operators actually trust.
When to use this skill
Trigger this skill when the user:
- Asks how to calculate MRR, ARR, churn, LTV, CAC, or payback period
- Needs to build a cohort retention table from subscription data
- Wants to prepare a board deck or investor update with SaaS metrics
- Asks about net revenue retention (NRR) or gross revenue retention (GRR)
- Needs to break down MRR movements (new, expansion, contraction, churned)
- Wants to model LTV:CAC ratio or unit economics for a pricing change
- Needs to compute quick ratio or growth efficiency metrics
- Asks about SaaS benchmarks or how their metrics compare to industry standards
Do NOT trigger this skill for:
- General accounting or GAAP revenue recognition - use a finance/accounting skill
- Product analytics (funnels, activation, feature usage) - use a product-analytics skill
Key principles
MRR is the atomic unit - Every SaaS metric derives from Monthly Recurring Revenue. Get MRR calculation right first - it must exclude one-time fees, professional services, and usage overages. All other metrics (ARR, churn, LTV, NRR) build on top of a clean MRR number.
Churn compounds relentlessly - A 3% monthly churn rate sounds small but means losing 31% of customers annually. Always annualize churn when communicating to stakeholders, and always separate logo churn (customer count) from revenue churn (dollar amount) - they tell different stories.
Cohort over aggregate - Aggregate metrics hide trends. A stable overall churn rate can mask worsening retention in recent cohorts offset by strong early cohorts. Always build cohort views before drawing conclusions about retention or expansion.
Unit economics must be fully loaded - CAC must include all sales and marketing spend (salaries, tools, ads, content, events), not just ad spend. LTV must use gross margin, not revenue. Partial calculations give false confidence.
Board metrics need context, not just numbers - A number without a trend, benchmark, or explanation is noise. Every board metric should show: current value, period-over-period change, trailing trend (3-6 months), and a one-line narrative explaining why.
Core concepts
MRR waterfall is the movement model that explains how MRR changes month to month. Starting MRR + New MRR + Expansion MRR - Contraction MRR - Churned MRR = Ending MRR. This waterfall is the single most important operational view because it isolates growth drivers from retention issues.
Revenue retention comes in two flavors. Gross Revenue Retention (GRR) measures dollar retention excluding expansion - it can never exceed 100% and shows the floor of your revenue base. Net Revenue Retention (NRR) includes expansion and can exceed 100%, meaning existing customers grow faster than others leave. NRR above 120% is considered elite for B2B SaaS.
Unit economics connect acquisition cost to customer value. CAC (Customer Acquisition Cost) is total sales + marketing spend divided by new customers acquired. LTV (Lifetime Value) is ARPA times gross margin divided by revenue churn rate. The LTV:CAC ratio indicates efficiency - below 3:1 means unprofitable acquisition, above 5:1 may signal underinvestment in growth. CAC Payback Period (months to recover CAC from gross profit) is often more actionable than LTV:CAC because it avoids long-horizon LTV assumptions.
Cohort analysis groups customers by their signup month (or quarter) and tracks a metric (retention, revenue, usage) over time relative to their start date. The cohort table has signup periods as rows, months-since-signup as columns, and the tracked metric as cell values. Reading down a column shows whether newer cohorts perform better or worse than older ones.
Common tasks
Calculate MRR and ARR
MRR = sum of all active subscriptions normalized to monthly amounts. Annual contracts must be divided by 12. Exclude one-time charges, usage overages, and professional services.
Formula:
MRR = SUM(monthly_subscription_values for all active customers)
ARR = MRR * 12MRR waterfall breakdown:
New MRR = MRR from customers acquired this month
Expansion MRR = MRR increase from existing customers (upgrades, seat adds)
Contraction MRR = MRR decrease from existing customers (downgrades)
Churned MRR = MRR lost from customers who cancelled
Net New MRR = New + Expansion - Contraction - Churned
Ending MRR = Starting MRR + Net New MRRAlways reconcile: Starting MRR + Net New MRR must equal Ending MRR. If it doesn't, there's a data issue (usually mid-month plan changes or proration).
Calculate churn rates
Separate logo churn (customers lost) from revenue churn (dollars lost).
Logo churn rate:
Monthly Logo Churn = Customers lost this month / Customers at start of month
Annual Logo Churn = 1 - (1 - Monthly Logo Churn)^12Gross revenue churn rate:
Monthly Revenue Churn = (Contraction MRR + Churned MRR) / Starting MRRNet revenue churn rate (can be negative if expansion exceeds churn):
Net Revenue Churn = (Contraction + Churned - Expansion) / Starting MRRNever use ending-period denominators for churn. Use start-of-period or average-period customer/revenue counts. Ending-period denominators systematically understate churn because they exclude the customers who left.
Calculate LTV and CAC
Customer Acquisition Cost:
CAC = Total Sales & Marketing Spend / New Customers Acquired
(over the same period, typically monthly or quarterly)Include in S&M spend: salaries, commissions, ad spend, content production, tools, events, agency fees. Exclude product costs and general overhead.
Lifetime Value (simple formula):
LTV = ARPA * Gross Margin % / Monthly Revenue Churn Rate
Where:
ARPA = Average Revenue Per Account (MRR / active customers)LTV:CAC ratio and payback period:
LTV:CAC Ratio = LTV / CAC
CAC Payback (mo) = CAC / (ARPA * Gross Margin %)The simple LTV formula assumes constant churn and no expansion. For businesses with strong NRR (>110%), use cohort-based LTV instead: sum the actual cumulative gross profit per cohort over 24-36 months.
Build a cohort retention table
A cohort table tracks how a group of customers (signed up in the same month) retains over time.
Table structure:
Month 0 Month 1 Month 2 Month 3 ...
Jan 2025 100% 88% 82% 78%
Feb 2025 100% 85% 79% -
Mar 2025 100% 90% - -How to build from raw data:
- Assign each customer a cohort based on their signup month
- For each cohort, count active customers (or sum MRR) at each month-end
- Divide each cell by the Month 0 value to get retention percentage
- Read across rows for individual cohort trajectories
- Read down columns to compare cohort quality over time
Revenue cohort (shows dollar retention including expansion):
- Same structure but cells contain MRR rather than customer count
- Cells can exceed 100% if expansion outpaces churn (shows NRR by cohort)
The most common mistake is using calendar months instead of relative months. Month 1 means "one month after signup", not "the next calendar month." A customer who signs up Jan 28 and is measured Feb 1 has not completed Month 1.
Calculate net revenue retention (NRR)
NRR measures dollar-for-dollar how much revenue you retain and grow from existing customers over a period.
Monthly NRR:
NRR = (Starting MRR - Contraction - Churned + Expansion) / Starting MRRAnnual NRR (trailing 12-month):
Annual NRR = MRR from customers who were active 12 months ago / Their MRR 12 months agoThe trailing 12-month version is preferred for board reporting because it smooths monthly volatility. Calculate it by taking the set of customers active at the start of the 12-month window and comparing their current MRR to their starting MRR.
NRR above 100% means the business grows even with zero new customers. Median NRR for public SaaS companies is approximately 110-115%. Top quartile exceeds 125%.
Calculate SaaS Quick Ratio
The Quick Ratio measures growth efficiency by comparing revenue added to revenue lost.
Quick Ratio = (New MRR + Expansion MRR) / (Contraction MRR + Churned MRR)- Quick Ratio > 4: Very efficient growth (adding $4 for every $1 lost)
- Quick Ratio 2-4: Healthy growth
- Quick Ratio < 2: Leaky bucket - churn is undermining growth efforts
Quick Ratio is most useful for early/mid-stage companies. At scale, absolute NRR and net new MRR matter more than the ratio.
Prepare a board metrics deck
A board deck should present metrics in a consistent, scannable format. Use this standard structure for the financial/metrics section:
Slide 1 - Headline KPIs (single slide, 4-6 metrics):
| Metric | Current | MoM Change | QoQ Change | Target |
|---------------------|----------|------------|------------|--------|
| ARR | $4.2M | +3.1% | +9.8% | $4.5M |
| Net New MRR | $38K | +12% | +22% | $35K |
| Logo Churn (mo) | 2.1% | -0.3pp | -0.8pp | <2.5% |
| NRR (trailing 12mo) | 118% | +2pp | +5pp | >115% |
| CAC Payback (mo) | 14 | -1 | -3 | <18 |
| Customers | 312 | +18 | +48 | 330 |Slide 2 - MRR Waterfall (stacked bar chart): Show New, Expansion (positive), Contraction, Churned (negative) for past 6 months.
Slide 3 - Cohort Retention (heatmap table): Show last 6-8 monthly cohorts with revenue retention at Month 1, 3, 6, 12. Color-code: green >90%, yellow 80-90%, red <80%.
Slide 4 - Unit Economics: LTV, CAC, LTV:CAC, Payback Period with trailing 3-month averages.
Always use the same metric definitions across board decks. Define each metric in a glossary appendix slide so board members share a common language. Change in methodology mid-stream destroys trust.
See references/board-reporting.md for a full board deck template with chart
specifications and narrative frameworks.
Anti-patterns / common mistakes
| Mistake | Why it's wrong | What to do instead |
|---|---|---|
| Counting contracted ARR as MRR * 12 | Contracted ARR includes unsigned pipeline; MRR * 12 is recognized recurring revenue only | Use MRR * 12 for ARR; track contracted ARR separately |
| Mixing logo churn and revenue churn | A few large customers churning can show low logo churn but devastating revenue churn | Always report both; segment by customer size |
| Using revenue instead of gross margin in LTV | LTV should reflect profit, not top-line revenue; ignoring COGS overstates LTV by 20-40% | LTV = ARPA * Gross Margin % / Churn Rate |
| Reporting only aggregate retention | Aggregate retention hides cohort deterioration when early cohorts are sticky and recent ones are not | Build monthly cohort tables and report cohort curves |
| Annualizing one bad/good month | A single month of 5% churn does not mean 46% annual churn - it could be an anomaly | Use trailing 3-month or 6-month averages for annualized rates |
| Excluding some S&M costs from CAC | "Blended CAC" that excludes salaries or content costs gives a falsely attractive picture | Fully loaded CAC includes all S&M spend: people, tools, ads, events |
| Changing metric definitions between boards | Board members lose trust when numbers aren't comparable period-to-period | Lock definitions in a glossary; if methodology changes, restate historicals |
Gotchas
Ending-period denominator used for churn calculation - Using the end-of-period customer count in the denominator systematically understates churn because churned customers are excluded from the denominator. Always use the start-of-period (or average-period) count.
Revenue churn calculated from revenue instead of gross margin - LTV must use gross margin, not revenue. A customer paying $1000/month with 60% gross margin has half the LTV of the raw revenue number. Using revenue LTV overstates CAC payback attractiveness.
MRR including one-time or non-recurring charges - Professional services revenue, setup fees, and annual true-ups included in MRR inflate the number and create a misleading growth signal. MRR must contain only normalized recurring subscription revenue. Audit your MRR data source definition before reporting.
Cohort table using calendar months instead of relative months - Month 1 means "one month after signup," not "the next calendar month." A customer who signs up January 28 and is measured February 1 has not completed Month 1. Calendar-based cohort tables produce meaningless curves for businesses with mid-month signups.
Board metrics changed mid-stream without restating historicals - Changing the definition of a metric between board meetings (e.g., how churn is calculated) makes trend comparisons meaningless and erodes investor trust. Always lock definitions in a glossary. If methodology must change, restate at least 12 months of historicals.
References
For detailed content on specific sub-domains, read the relevant file from
references/:
references/metric-formulas.md- Complete formula reference for all SaaS metrics with edge cases, pro-rata handling, and multi-currency considerations. Load when calculating specific metrics from raw data.references/cohort-analysis.md- Step-by-step cohort table construction, visualization techniques, revenue vs. logo cohorts, and interpreting cohort curves. Load when building or analyzing cohort data.references/board-reporting.md- Full board deck template, chart specs, narrative frameworks, benchmark tables, and investor FAQ responses. Load when preparing a board deck or investor update.
Only load a references file if the current task requires deep detail on that topic.
References
board-reporting.md
Board Reporting - Complete Reference
Board Deck Structure
A SaaS board deck typically has 10-15 slides. The metrics/financial section should be 4-6 slides positioned after the executive summary and before the product/roadmap section.
Recommended Slide Order
1. Cover slide (company name, date, confidential)
2. Executive summary (3-5 bullet highlights)
3. Headline KPIs (single slide, 4-6 metrics)
4. MRR Waterfall (stacked bar chart)
5. Cohort Retention (heatmap table)
6. Unit Economics (LTV, CAC, Payback)
7. Pipeline & Forecast (optional, for sales-led businesses)
8. Product Update (key releases, usage metrics)
9. Team & Hiring
10. Cash Position & Runway
11. Key Risks & AsksSlide Templates
Slide 3 - Headline KPIs
Present 4-6 metrics in a grid layout. Each metric shows:
- Current value (large, bold font)
- Period-over-period change (MoM or QoQ with directional arrow)
- Trailing trend (sparkline or mini bar chart, 6 months)
- Target/plan (if set)
- Status indicator (green/yellow/red dot)
Recommended metrics (pick 4-6):
| Metric | Format | Green | Yellow | Red |
|---|---|---|---|---|
| ARR | $X.XM | > Plan | 90-100% of Plan | < 90% of Plan |
| Net New MRR | $XXK | > Plan | 80-100% of Plan | < 80% of Plan |
| Monthly Logo Churn | X.X% | < 2% | 2-4% | > 4% |
| NRR (trailing 12mo) | XXX% | > 115% | 100-115% | < 100% |
| CAC Payback (months) | XX mo | < 12 | 12-24 | > 24 |
| Active Customers | ### | > Plan | 90-100% of Plan | < 90% of Plan |
Formatting rules:
- Use consistent decimal places across all decks (1 decimal for percentages, 0 decimals for counts, $X.XM for revenue > $1M, $XXK for < $1M)
- Green/yellow/red thresholds should be set once and not changed
- MoM change uses percentage points (pp) for rates, percent (%) for amounts
Slide 4 - MRR Waterfall
Chart type: Stacked bar chart (waterfall style)
X-axis: Last 6-12 months (calendar months) Y-axis: MRR in dollars
Bar components (bottom to top):
- Starting MRR (grey, baseline)
- New MRR (green, positive stack)
- Expansion MRR (light green, positive stack)
- Reactivation MRR (blue, positive stack, if material)
- Contraction MRR (orange, negative stack)
- Churned MRR (red, negative stack)
- Ending MRR (dark line or marker)
Include a data table below the chart:
| Month | Starting | +New | +Expansion | -Contraction | -Churned | =Ending | Net New |
|------------|-----------|---------|------------|--------------|----------|----------|---------|
| Oct 2025 | $310K | $22K | $12K | ($4K) | ($8K) | $332K | $22K |
| Nov 2025 | $332K | $25K | $14K | ($3K) | ($7K) | $361K | $29K |
| Dec 2025 | $361K | $18K | $10K | ($5K) | ($9K) | $375K | $14K |Narrative guidance: Add 1-2 sentences below the chart explaining the trend:
- "Net new MRR declined in December due to seasonal sales slowdown; pipeline for January indicates recovery."
- "Expansion MRR reached a record $14K in November driven by enterprise tier upgrades."
Slide 5 - Cohort Retention
Format: Heatmap table showing monthly cohorts
Show last 6-8 cohorts with these columns:
- Cohort month
- Cohort size (# customers)
- Month 1, Month 3, Month 6, Month 12 retention (%)
Color scale:
90%: Dark green
- 80-90%: Light green
- 70-80%: Yellow
- 60-70%: Orange
- < 60%: Red
Example:
| Cohort | Size | Mo 1 | Mo 3 | Mo 6 | Mo 12 |
|-----------|------|-------|-------|-------|-------|
| Jul 2025 | 42 | 88% | 79% | 71% | 63% |
| Aug 2025 | 38 | 86% | 76% | 69% | - |
| Sep 2025 | 51 | 90% | 81% | 72% | - |
| Oct 2025 | 47 | 89% | 80% | - | - |
| Nov 2025 | 55 | 91% | - | - | - |
| Dec 2025 | 44 | 87% | - | - | - |Include both logo and revenue retention if space permits (two tables or a toggle). Revenue retention often tells a different and more positive story due to expansion.
Narrative guidance:
- "Month 1 retention improved from 86% to 91% over the last 6 cohorts, reflecting onboarding improvements launched in Q3."
- "Cohort sizes growing: Dec 2025 is 44 vs. Jul 2025's 42 despite holiday seasonality."
Slide 6 - Unit Economics
Layout: 2x2 grid of metric cards + trend chart
Top row (metric cards):
| LTV | CAC | LTV:CAC | Payback |
|------------|------------|------------|------------|
| $8,400 | $2,500 | 3.4x | 14 months |
| +$600 QoQ | -$200 QoQ | +0.4x QoQ | -2mo QoQ |Bottom row (trailing chart): Line chart showing LTV:CAC ratio and CAC Payback over the last 4-6 quarters.
Narrative guidance:
- "LTV:CAC improved to 3.4x from 3.0x last quarter as gross margin expanded and churn decreased."
- "CAC payback dropped to 14 months, within our target of sub-18 months."
Narrative Frameworks
Every metric should be accompanied by a one-line narrative. Use this formula:
[Metric] [direction] to [value] from [previous value], driven by [cause].
[Implication or action].Examples:
- "NRR improved to 118% from 112%, driven by the enterprise upsell motion launched in Q3. On track to hit 120% target by Q2."
- "Logo churn increased to 3.1% from 2.4%, concentrated in the SMB segment. CS team is piloting a proactive health-score outreach program."
- "CAC payback decreased to 14 months from 17 months as ACV increased without proportional S&M spend increase. Signals pricing power."
Narrative Anti-patterns
| Anti-pattern | Why it fails | Better approach |
|---|---|---|
| "MRR is $350K" (number only) | No context, no trend, no insight | "MRR grew 8% MoM to $350K, ahead of plan" |
| "Churn was bad this month" | Vague, no data, no cause | "Churn spiked to 4.2% due to 2 enterprise losses; both cited feature gaps we're addressing in Q1" |
| "We're tracking well" | Says nothing actionable | "ARR is at 94% of annual plan with 2 months remaining; pipeline suggests we'll reach 101%" |
| Showing 20+ metrics | Overwhelms, dilutes focus | Pick 4-6 headline metrics; put detail in appendix |
Investor Update Email Template
For monthly/quarterly investor updates (separate from board decks):
Subject: [Company] - [Month/Quarter] Update | $[ARR] ARR | [Growth]% MoM
Hi [Name],
HIGHLIGHTS
- [Top achievement - usually revenue or customer milestone]
- [Second achievement - product or team]
- [Third - if notable]
KEY METRICS
- ARR: $X.XM ([+/-]X% MoM, [+/-]X% YoY)
- Net New MRR: $XXK
- NRR: XXX%
- Customers: ### ([+/-]X MoM)
- Runway: XX months at current burn
WHAT'S WORKING
- [1-2 sentences on top growth driver]
CHALLENGES
- [1-2 sentences on top risk or blocker, be transparent]
ASK
- [Specific, actionable ask: intro, advice, resource]
If you can help with any of the above, reply to this email.
Thanks,
[Name]Benchmark Tables
Use these benchmarks to contextualize your metrics for board members. Always note that benchmarks vary by segment, stage, and vertical.
Revenue Growth Benchmarks (ARR Growth Rate)
| Stage | Median | Top Quartile |
|---|---|---|
| Pre-seed to Seed ($0-1M ARR) | 15-25% MoM | > 30% MoM |
| Seed to Series A ($1-5M ARR) | 8-15% MoM | > 20% MoM |
| Series A to B ($5-15M ARR) | 100-150% YoY | > 200% YoY |
| Series B to C ($15-50M ARR) | 70-100% YoY | > 150% YoY |
| Growth stage ($50M+ ARR) | 30-50% YoY | > 70% YoY |
Churn Benchmarks
| Segment | Monthly Logo Churn | Annual Logo Churn | Monthly Revenue Churn |
|---|---|---|---|
| Enterprise (>$100K ACV) | 0.5-1% | 5-10% | 0.3-0.8% |
| Mid-Market ($20-100K ACV) | 1-2% | 10-20% | 0.8-1.5% |
| SMB (<$20K ACV) | 3-5% | 30-45% | 2-4% |
NRR Benchmarks
| Performance | NRR Range |
|---|---|
| Best-in-class | > 130% |
| Excellent | 120-130% |
| Good | 110-120% |
| Median | 105-115% |
| Below average | 100-105% |
| Net contraction | < 100% |
Unit Economics Benchmarks
| Metric | Excellent | Good | Acceptable | Concerning |
|---|---|---|---|---|
| LTV:CAC | > 5:1 | 3:1-5:1 | 2:1-3:1 | < 2:1 |
| CAC Payback | < 12 mo | 12-18 mo | 18-24 mo | > 24 mo |
| Gross Margin | > 80% | 70-80% | 60-70% | < 60% |
Board Meeting Preparation Checklist
- Pull MRR waterfall data for the reporting period
- Calculate all headline KPIs with MoM and QoQ changes
- Update cohort retention table with latest month's data
- Refresh LTV, CAC, and payback calculations with trailing 3-month data
- Write narrative for each metric (cause + implication)
- Color-code status indicators (green/yellow/red)
- Verify all numbers reconcile (MRR waterfall balances, ARR = MRR * 12)
- Compare actuals to plan/budget - note variances
- Prepare appendix with detailed segment breakdowns
- Prepare responses for likely questions (churn spikes, missed targets)
- Review previous board deck to ensure consistent metric definitions
- Share deck 48-72 hours before meeting for pre-read
cohort-analysis.md
Cohort Analysis - Complete Reference
What is a Cohort Table
A cohort table groups users by a shared characteristic (usually signup date) and tracks a metric over time relative to their group start date. It answers: "How does customer behavior evolve over their lifetime, and is it getting better or worse for newer customers?"
Building a Cohort Table from Raw Data
Step 1 - Assign Cohorts
Each customer gets a cohort label based on their signup/activation date:
cohort = YEAR(signup_date) & "-" & MONTH(signup_date)
Example:
Customer A, signed up 2025-01-15 -> cohort "2025-01"
Customer B, signed up 2025-01-28 -> cohort "2025-01"
Customer C, signed up 2025-02-03 -> cohort "2025-02"Step 2 - Calculate Relative Periods
For each customer at each measurement point, calculate months since signup:
relative_month = DATEDIF(signup_date, measurement_date, "M")Important: Use complete months only. A customer signed up Jan 28 measured on Feb 15 has NOT completed Month 1 (only 18 days). Use the month-end snapshot that is at least 30 days after signup for Month 1.
Step 3 - Aggregate by Cohort and Period
Logo retention table:
For each (cohort, relative_month):
count = number of active customers
retention = count / cohort_size_at_month_0Revenue retention table:
For each (cohort, relative_month):
mrr = SUM(MRR for active customers in this cohort)
retention = mrr / mrr_at_month_0Step 4 - Build the Matrix
Month 0 Month 1 Month 2 Month 3 Month 6 Month 12
Jan 2025 100.0% 87.2% 81.5% 78.3% 71.0% 62.4%
Feb 2025 100.0% 89.1% 83.0% 79.8% 72.5% -
Mar 2025 100.0% 91.3% 85.2% 81.0% - -
Apr 2025 100.0% 90.0% 84.1% - - -
May 2025 100.0% 88.5% - - - -
Jun 2025 100.0% - - - - -The diagonal staircase pattern (dashes in the lower-right) is normal - newer cohorts haven't aged enough to fill later columns.
Types of Cohort Analysis
Logo (Customer Count) Cohorts
- Cells contain percentage of original customers still active
- Can never exceed 100%
- Shows pure retention behavior
- Best for understanding product stickiness
Revenue (Dollar) Cohorts
- Cells contain percentage of original MRR retained
- CAN exceed 100% if expansion revenue from upgrades/seat-adds exceeds churn
- Shows the combined effect of retention + expansion
- Best for understanding revenue dynamics and NRR by cohort
Usage Cohorts
- Cells contain a usage metric (DAU, sessions, API calls) relative to Month 0
- Useful for product-led growth analysis
- Helps identify engagement patterns that predict churn
Acquisition Channel Cohorts
- Instead of grouping by month, group by acquisition source
- Shows which channels bring the stickiest customers
- Compare: organic vs. paid vs. referral vs. outbound
Reading Cohort Tables
Horizontal Reading (across a row)
Each row tells the story of one cohort's lifecycle. Look for:
- Steep early drop-off: If Month 0 to Month 1 drops more than 15-20%, there's a first-value or onboarding problem
- Flattening curve: Healthy products show retention stabilizing by Month 3-6 (the "smile curve" flattens into an asymptote)
- Continued decay: If retention keeps dropping linearly, there's no natural retention floor and the product has a structural problem
Vertical Reading (down a column)
Each column compares cohorts at the same relative age. Look for:
- Improving trend: Newer cohorts retaining better at Month 3 than older cohorts did at Month 3 means product/onboarding improvements are working
- Worsening trend: Newer cohorts performing worse signals degrading product-market fit or lower-quality customer acquisition
- Flat: Retention behavior is stable across cohorts
Diagonal Reading
The diagonal represents "this month's retention for the cohort that's N months old." It shows the current state of each active cohort simultaneously.
Visualization Techniques
Heatmap Table
The most common visualization. Color-code cells:
- Green: > 90% retention
- Light green: 80-90%
- Yellow: 70-80%
- Orange: 60-70%
- Red: < 60%
This immediately surfaces problem cohorts and trends.
Cohort Curves (Line Chart)
Plot each cohort as a line on the same chart:
- X-axis: Relative months (0, 1, 2, 3, ...)
- Y-axis: Retention percentage
- Each line = one cohort
Benefits: Easy to spot if newer cohorts (bolder/darker lines) perform better or worse than older ones. Shows the characteristic retention curve shape.
Stacked Area Chart
Shows total active customers or MRR broken down by cohort over calendar time:
- X-axis: Calendar months
- Y-axis: Total customers or MRR
- Each band = one cohort's contribution
Benefits: Shows how much of current revenue depends on old vs. new cohorts. A healthy business shows new cohort bands growing thicker over time.
Common Cohort Analysis Mistakes
| Mistake | Impact | Fix |
|---|---|---|
| Using calendar months instead of relative months | Customer signed up Dec 31 shows "Month 1" on Jan 1 | Calculate relative months from signup date using DATEDIF |
| Including incomplete periods | Newest cohort shows artificially low retention | Only include cohort-period combinations with full measurement windows |
| Mixing free trial and paid users | Inflates Month 0 counts, makes Month 1 drop look worse | Start cohort clock at first paid subscription, not trial start |
| Ignoring cohort size | A cohort of 5 customers with 80% retention is noise | Show absolute counts alongside percentages; flag small cohorts |
| Only looking at logo retention | Misses the revenue expansion story | Always build both logo AND revenue retention cohort tables |
| Not controlling for seasonality | January cohorts may naturally differ from July cohorts | Compare same-season cohorts year-over-year, not just sequential months |
Spreadsheet Implementation
Google Sheets / Excel Formula Pattern
Assuming raw data with columns: customer_id, signup_date, month_end_date, is_active, mrr
Cohort assignment (helper column):
=TEXT(signup_date, "YYYY-MM")Relative month (helper column):
=DATEDIF(signup_date, month_end_date, "M")Cohort size at Month 0:
=COUNTIFS(cohort_column, cohort_label, relative_month_column, 0, is_active_column, TRUE)Retention at Month N:
=COUNTIFS(cohort_column, cohort_label, relative_month_column, N, is_active_column, TRUE)
/ COUNTIFS(cohort_column, cohort_label, relative_month_column, 0, is_active_column, TRUE)SQL Pattern for Cohort Table
WITH customer_cohorts AS (
SELECT
customer_id,
DATE_TRUNC('month', first_subscription_date) AS cohort_month
FROM customers
),
monthly_activity AS (
SELECT
c.customer_id,
c.cohort_month,
DATE_TRUNC('month', s.activity_date) AS activity_month,
DATEDIFF('month', c.cohort_month, DATE_TRUNC('month', s.activity_date)) AS relative_month
FROM customer_cohorts c
JOIN subscriptions s ON c.customer_id = s.customer_id
WHERE s.status = 'active'
),
cohort_sizes AS (
SELECT cohort_month, COUNT(DISTINCT customer_id) AS cohort_size
FROM customer_cohorts
GROUP BY cohort_month
)
SELECT
ma.cohort_month,
ma.relative_month,
COUNT(DISTINCT ma.customer_id) AS active_customers,
cs.cohort_size,
ROUND(COUNT(DISTINCT ma.customer_id)::DECIMAL / cs.cohort_size * 100, 1) AS retention_pct
FROM monthly_activity ma
JOIN cohort_sizes cs ON ma.cohort_month = cs.cohort_month
GROUP BY ma.cohort_month, ma.relative_month, cs.cohort_size
ORDER BY ma.cohort_month, ma.relative_month;This produces a flat result set that can be pivoted into the cohort matrix in a spreadsheet or BI tool.
metric-formulas.md
SaaS Metric Formulas - Complete Reference
MRR Calculation Details
Base MRR
MRR = SUM(normalized_monthly_value for each active subscription)Normalization rules:
- Monthly plan: use as-is
- Annual plan: divide by 12
- Quarterly plan: divide by 3
- Semi-annual plan: divide by 6
- Custom term (N months): divide by N
What to exclude from MRR:
- One-time setup or onboarding fees
- Professional services revenue
- Usage-based overages (unless contracted minimum)
- Credits, refunds, or promotional discounts (deduct from MRR)
- Free/trial accounts (zero MRR until conversion)
MRR Waterfall Components
New MRR = SUM(MRR from customers with first-ever subscription this month)
Expansion MRR = SUM(MRR increase for customers active both this and last month)
Contraction MRR = SUM(MRR decrease for customers active both this and last month)
Churned MRR = SUM(MRR from customers active last month but not this month)
Reactivation MRR = SUM(MRR from customers returning after previous churn)Reconciliation check:
Ending MRR = Starting MRR + New + Expansion + Reactivation - Contraction - ChurnedIf this doesn't balance, investigate:
- Mid-month plan changes with proration
- Backdated subscriptions
- Currency conversion fluctuations
- Duplicate customer records
Pro-rata Handling
When a customer upgrades mid-month:
- Option A (simple): Count full new plan value as Expansion in the month the change takes effect. Most common for board reporting.
- Option B (precise): Pro-rate the old and new plan values for the partial month. More accurate but adds complexity.
Choose one method and apply consistently. Document which method in your metrics glossary.
Multi-currency MRR
When subscriptions are in multiple currencies:
- Choose a reporting currency (usually USD)
- Convert each subscription at the exchange rate on the subscription start date (locked rate) OR at month-end spot rate (floating rate)
- Locked rate is preferred - it prevents MRR fluctuations from FX movements that don't reflect real business changes
- If using floating rate, add an "FX impact" line to the MRR waterfall to separate currency effects from operational changes
Churn Rate Formulas
Logo Churn (Customer Churn)
Monthly Logo Churn Rate = Customers lost in month / Customers at start of month
Annualized Logo Churn = 1 - (1 - Monthly Rate)^12Denominator choice matters:
- Start-of-period (recommended): Clean, standard, avoids survivor bias
- Average of start and end: Smooths large swings but mixes periods
- End-of-period: Never use - systematically understates churn
Revenue Churn
Gross Revenue Churn = (Contraction MRR + Churned MRR) / Starting MRR
Net Revenue Churn = (Contraction + Churned - Expansion) / Starting MRRNet revenue churn can be negative (net expansion). When negative, some teams report it as "Net Revenue Expansion" instead to avoid confusion.
Churn by Segment
Break churn into segments for actionable insight:
Enterprise Churn = Churned MRR (enterprise) / Starting MRR (enterprise)
Mid-Market Churn = Churned MRR (mid-market) / Starting MRR (mid-market)
SMB Churn = Churned MRR (SMB) / Starting MRR (SMB)Segment definitions (common thresholds):
- Enterprise: ARR > $100K
- Mid-Market: ARR $20K-$100K
- SMB: ARR < $20K
LTV Formulas
Simple LTV (constant churn assumption)
LTV = ARPA * Gross Margin % / Monthly Revenue Churn RateWhere ARPA = MRR / Active Customers
Discounted LTV (time-value adjusted)
LTV = SUM over t=0 to T of [ (ARPA * Gross Margin %) / (1 + monthly_discount_rate)^t * (1 - churn_rate)^t ]Use a monthly discount rate of 0.83% (approximately 10% annual) for standard SaaS businesses.
Cohort-based LTV (most accurate)
Instead of formula-based LTV, sum actual cumulative gross profit per customer from mature cohorts:
Cohort LTV at Month N = Cumulative Gross Profit per Customer from Month 0 to NUse the oldest cohorts (24-36 months of data) to project LTV for newer cohorts. This captures expansion revenue, seasonal churn patterns, and non-linear retention curves that the simple formula misses.
CAC Formulas
Blended CAC
CAC = Total S&M Spend in Period / New Customers Acquired in PeriodCAC by Channel
Organic CAC = Organic S&M Spend / Organic New Customers
Paid CAC = Paid S&M Spend / Paid New Customers
Outbound CAC = Outbound S&M Spend / Outbound New CustomersWhat to include in S&M Spend
- Sales team salaries, commissions, bonuses
- Marketing team salaries
- Advertising spend (all channels)
- Content production costs
- Marketing tools and software
- Event sponsorships and travel
- Agency and contractor fees
- Sales tools (CRM, outreach, etc.)
What to exclude
- Customer success costs (post-sale)
- Product development
- General & administrative overhead
- Infrastructure costs
CAC Payback Period
CAC Payback (months) = CAC / (ARPA * Gross Margin %)Benchmarks:
- Excellent: < 12 months
- Good: 12-18 months
- Acceptable: 18-24 months
- Concerning: > 24 months
Retention Metrics
Gross Revenue Retention (GRR)
GRR = (Starting MRR - Contraction - Churned) / Starting MRRGRR can never exceed 100%. It measures the floor of your revenue base.
Benchmarks:
- Best-in-class: > 95%
- Good: 90-95%
- Median: 85-90%
- Concerning: < 80%
Net Revenue Retention (NRR)
Monthly NRR = (Starting MRR - Contraction - Churned + Expansion) / Starting MRR
Trailing 12-month NRR:
Take the set of customers active 12 months ago
NRR = Their current MRR / Their MRR 12 months agoBenchmarks:
- Best-in-class: > 130%
- Good: 115-130%
- Median: 105-115%
- Concerning: < 100%
Dollar-Based Net Retention (DBNR)
Identical to NRR in most contexts. Some companies use DBNR specifically for annual cohort measurement (comparing ARR of a customer set year-over-year) while using NRR for monthly measurement.
Growth Efficiency Metrics
Quick Ratio
Quick Ratio = (New MRR + Expansion MRR) / (Contraction MRR + Churned MRR)Burn Multiple
Burn Multiple = Net Burn / Net New ARRLower is better. A burn multiple of 1x means spending $1 of cash for every $1 of new ARR added.
Rule of 40
Rule of 40 Score = Revenue Growth Rate (%) + EBITDA Margin (%)Score >= 40 indicates a healthy balance of growth and profitability.
Magic Number
Magic Number = Net New ARR (quarterly) / S&M Spend (prior quarter)- Above 1.0: Efficient - increase S&M investment
- 0.5-1.0: Moderate efficiency
- Below 0.5: Inefficient - fix unit economics before scaling
Frequently Asked Questions
What is saas-metrics?
Use this skill when calculating, analyzing, or reporting SaaS business metrics. Triggers on MRR, ARR, churn rate, LTV, CAC, LTV:CAC ratio, cohort analysis, net revenue retention, expansion revenue, board deck metrics, investor reporting, unit economics, payback period, or SaaS financial modeling. Covers metric definitions, formulas, spreadsheet implementation, cohort tables, and board-ready reporting for founders, finance teams, and growth operators.
How do I install saas-metrics?
Run npx skills add AbsolutelySkilled/AbsolutelySkilled --skill saas-metrics in your terminal. The skill will be immediately available in your AI coding agent.
What AI agents support saas-metrics?
saas-metrics works with claude-code, gemini-cli, openai-codex, mcp. Install it once and use it across any supported AI coding agent.