Arr waterfall
@ledgerly/arr-waterfall
Turn a monthly subscriptions export into an ARR waterfall: starting ARR, new, reactivation, expansion, contraction, churn, ending ARR, plus NRR and GRR. Writes markdown, CSV, and a per-customer movements file. Works offline from a CSV.
- Activity
- New: be the first to try it
- Installs
- 0 installs
- Likes
- 0 likes
- Clones
- 0 clones
- 1# ARR waterfall
- 3Turns a monthly MRR or ARR export into the ARR bridge your board expects: starting ARR, new, reactivation, expansion, contraction, churn, and ending ARR, with NRR and GRR. Every month ties out, and every number traces back to a customer in the movements file.
- 5**Who it is for:** founders, finance leads, and RevOps folks who build the ARR slide by hand each month.
- 7## Example
- 9Input (`examples/subscriptions.csv`, 10 customers over 6 months):
- 11```csv
- 12month,customer_id,plan,mrr
- 132026-04,acme-co,growth,2000
- 142026-04,bluebird-labs,growth,1500
- 15```
- 17Output (`out/arr-waterfall.md`):
- 19```
- 20Starting ARR $153,600 | New $51,600 | Reactivation $8,400 | Expansion $14,400 | Contraction -$8,400 | Churn -$36,000 | Ending ARR $183,600
- 21Cohort retention, customers active in 2026-04, measured in 2026-09: NRR 84.4%, GRR 75.0%.
- 22```
- 24Plus a month-by-month table, `out/arr-waterfall.csv` for your spreadsheet, and `out/arr-waterfall-movements.csv` with every customer movement.
- 26## What it can access
- 28- Runs `node scripts/arr-waterfall.mjs` (Node built-ins only, no packages).
- 29- Reads your export from `data/`. Writes only `out/arr-waterfall*` files.
- 30- No network, no API keys.
- 32## Setup
- 34None. Export MRR by customer by month to `data/subscriptions.csv` and ask Claude for an ARR waterfall.
