---
name: "Compute the core SaaS metrics — MRR/ARR, growth, NRR/GRR, ch"
description: "Compute the core SaaS metrics — MRR/ARR, growth, NRR/GRR, churn, quick ratio, magic number — from your numbers. Use when asked to calculate SaaS metrics, MRR/ARR, net revenue retention, the quick ratio, or to build a SaaS metrics snapshot for a board/investor update. Produces a computed metrics dashboard with each value, its benchmark, and a one-line read on what it means."
---

# SaaS Metrics Skill

Investors and boards judge a SaaS business on a standard metric set — and getting the definitions
right matters as much as the numbers. This skill computes MRR/ARR, growth, net and gross revenue
retention, churn, the quick ratio, and the magic number from your movement data, each with its
benchmark and a plain read — so a board update or investor snapshot is correct and defensible.

## Required Inputs

Ask for these only if they aren't already provided:

- **Starting MRR** and the month's movement: **new**, **expansion**, **contraction**, **churned** MRR.
- **Customer counts** (start, churned) if you want logo churn too.
- **S&M spend** (prior period) if you want the magic number.
- Or just paste what you have — the skill computes what the inputs allow and flags the rest.

## Output Format

### SaaS Metrics: [company], [period]

A computed dashboard (use the helper script):

| Metric | Value | Benchmark | Read |
|---|---|---|---|
| MRR / ARR | | | |
| MRR growth % | | | |
| **Net Revenue Retention** | | ≥ 100% (great ≥ 110%) | |
| Gross Revenue Retention | | ≥ 90% | |
| Revenue churn % | | | |
| **Quick ratio** ((new+exp)/(churn+contr)) | | ≥ 4 strong | |
| Magic number (if S&M given) | | ≥ 0.75 efficient | |

**What it says** — 2–3 lines: the health story the numbers tell, and the one metric to fix first.

**Definitions used** — state each formula explicitly (NRR *excludes* new customers; GRR caps at 100%), so the numbers are comparable and audit-proof.

## Programmatic Helper

`scripts/saas_metrics.py` (stdlib only) computes the set from the MRR movement:

```bash
# in.json: {"starting_mrr":100000,"new":12000,"expansion":6000,"contraction":2000,"churned":4000,"sm_spend_prior":40000}
python3 scripts/saas_metrics.py in.json
python3 scripts/saas_metrics.py in.json --json
```

## Quality Checks

- [ ] NRR excludes new MRR (it measures the existing base only) — the most-botched definition
- [ ] GRR is capped at 100% (it can't exceed retention of what you had)
- [ ] Each metric is shown against its standard benchmark
- [ ] The formulas used are stated, so the numbers are comparable across reports
- [ ] Metrics that can't be computed from the given inputs are flagged, not guessed

## Anti-Patterns

- [ ] Do not include new customers in NRR — that's a different (and misleadingly flattering) number
- [ ] Do not mix monthly and annual figures without converting — label MRR vs ARR clearly
- [ ] Do not report a metric without its definition — "120% retention" is meaningless without the formula
- [ ] Do not vanity-pick metrics — show churn and contraction alongside the growth numbers
- [ ] Do not present computed values to false precision — round sensibly and flag assumptions

## Based On

Standard SaaS metrics definitions (Bessemer / a16z / KeyBanc) — NRR/GRR, quick ratio, magic number.
