Finance update pack
@ledgerly/finance-update-pack
Write the monthly finance update for leadership or investors from a few inputs: revenue, costs, cash, and plan. A script computes plan vs actual, flags the variances that matter, and works out burn and runway; Claude drafts the narrative and asks you for the why behind each big variance.
- Activity
- New: be the first to try it
- Installs
- 0 installs
- Likes
- 0 likes
- Clones
- 0 clones
- 1---
- 2name: finance-update-pack
- 3description: Draft the monthly finance update for a leadership team, board, or investors from a few inputs (revenue, costs, cash, and plan). Computes plan vs actual, burn, runway, and flags the variances that matter, then writes a short narrative with headline, variances explained, cash and runway, and asks. Use when the user says "write the monthly finance update", "investor update numbers", "board finance section", "plan vs actual", "variance analysis", or "explain this month's numbers".
- 4license: MIT
- 5---
- 7# Finance update pack
- 9A finance update people actually read: three headline bullets, one table, the variances that matter with a real reason for each, then cash and runway. The script does the arithmetic so the narrative never contradicts the numbers.
- 11## Inputs
- 13One CSV per month in `data/`, for example `data/finance-2026-10.csv` (see `examples/finance-2026-10.csv`):
- 15```csv
- 16line,type,plan,actual,prior,better
- 17Subscription revenue,revenue,262000,268400,255100,
- 18Hosting and model costs,cogs,41000,47800,42300,
- 19Payroll,opex,210000,204500,203900,
- 20New customers,metric,9,11,7,
- 21Logo churn,metric,2,3,1,lower
- 22Ending cash,cash,,3150000,3216800,
- 23```
- 25- `type`: `revenue`, `cogs`, `opex`, `metric`, or `cash` (one row, the ending balance).
- 26- `plan` can be empty for lines with no plan. `prior` is last month's actual (optional, used for month over month).
- 27- `better`: costs default to `lower`, everything else to `higher`. Set `lower` for metrics like churn.
- 29Also ask: the month, the audience (leadership team, board, or investors), and anything already known ("the big services deal slipped to November"). If the user has a P&L export instead, map its lines into this shape and show the mapping before running.
- 31## Steps
- 331. Run the numbers:
- 35 ```bash
- 36 node scripts/variance.mjs data/finance-2026-10.csv --month 2026-10 --out out/finance-update
- 37 ```
- 39 Thresholds: a line is flagged when it misses plan by at least `--threshold-pct` (default 10) and `--threshold-abs` dollars (default 5000). Metrics use the percent only. Tune for company size.
- 402. Read `out/finance-update-variance.md`. It has the summary table, burn, runway (this month and the two-month average), and the flagged lines with an empty "Why" column.
- 413. **Get the why.** For each flagged line, ask the user one short question ("Services revenue was $8.5k under plan. Slipped deal, lost deal, or plan too high?"). Do not invent reasons. If the user does not know, write "Under review" and list it as a follow-up.
- 424. **Draft `out/finance-update.md`** with the template below. Match the audience:
- 43 - Leadership: all flagged lines, owners for follow-ups, next month's watch list.
- 44 - Board or investors: fewer lines, rounder numbers, trend over detail, and the asks. Never share salary-level detail.
- 455. Show the draft. Offer a short version (five lines) for a chat post.
- 47## Template
- 49```markdown
- 50# Finance update: October 2026
- 52**Headline**
- 53- Revenue $277.9k, 1% under plan; subscription revenue 2% over, services 47% under (deal slipped).
- 54- Net burn $66.8k vs $52.0k plan, driven by a conference ($14.3k over in programs).
- 55- Cash $3.15M; runway about 4 years at current burn.
- 57| | Plan | Actual | Var |
- 58| Revenue | ... |
- 59| Gross margin | ... |
- 60| Opex | ... |
- 61| Net burn | ... |
- 63**Variances that matter**
- 64- <line>: <actual> vs <plan> (<var %>). <Reason in one sentence>. <What changes next month>.
- 66**Cash and runway**
- 67<balance, burn trend, runway, any known lumps coming>
- 69**Asks / decisions**
- 70- <specific ask, or "None this month">
- 72**Next month watch list**
- 73- <1 to 3 items>
- 74```
- 76## Guardrails
- 78- Every number in the narrative must come from the script output or the user's file. If they disagree, the script wins; recheck the input.
- 79- Runway is a simple cash / net burn. If the company is near breakeven or burn swings a lot, say so and suggest the `cash-runway-model` kit for scenarios.
- 80- Not financial or investment advice; it is a reporting aid.
- 81- Do not send or post the update anywhere. Write files; the user shares them.
