Step 1 — Read last month's update (read-only)
Open the most recent update in {{updates_folder}} and extract:
- Last month's figures for every metric this skill tracks (see Step 4).
- The section order, headings, and tone to reuse verbatim this month.
- Any plan targets or context it referenced (e.g. "Q-target MRR", "board-approved runway floor").
If {{updates_folder}} has no prior update yet, use the Format table below
as the default structure and note in the draft that this is the first run.
Step 2 — Pull revenue metrics from Stripe (read-only)
Pull for the current calendar month:
| Metric | Definition |
|---|
| MRR | Sum of active subscription value, normalized to monthly |
| MRR growth | (this month MRR − last month MRR) / last month MRR |
| Revenue | Total collected revenue for the month |
| New / expansion / churned MRR | Movement components behind the net MRR delta |
Step 3 — Pull product and finance metrics from Postgres (read-only)
Query for the current calendar month:
| Metric | Definition |
|---|
| Active accounts | Accounts with qualifying activity in the month |
| Account growth | Net new active accounts vs. last month |
| Burn | Net cash spent in the month (cash out − cash in, excluding financing) |
| Runway | Current cash balance ÷ trailing average monthly burn |
Step 4 — Compare to last month and to plan
For every metric in Steps 2–3, compute both deltas:
- Vs. last month — absolute and percentage change from Step 1's figures.
- Vs. plan — variance against the plan target for this metric (from Step 1
if it was recorded there, else from the plan targets held in memory/skill
configuration for {{projectName}}).
Flag anything moving more than one plan-implied standard deviation, or any
metric moving in the wrong direction two months running, as a line the
narrative must address explicitly — don't bury a miss in a table.
Step 5 — Write the narrative
Match last month's section order exactly. A typical structure:
- Headline — one or two sentences on the month's overall trajectory.
- Metrics table — MRR, growth, revenue, active accounts, burn, runway,
each with last month and plan comparisons.
- What moved and why — the flagged variances from Step 4, with the
likely driver (a launch, a lost account, a pricing change, etc.) stated
plainly rather than hedged.
- Asks / notable items — anything the founder has flagged as needing
investor visibility this month (hiring, fundraising, a specific ask).
Write the commentary as a draft for a founder to edit, not a finished
statement — flag genuine uncertainty (e.g. "likely driven by X — confirm")
rather than asserting a cause you can't verify from the data.
Step 6 — Draft into a new document
Create a new document under {{updates_folder}} (do not overwrite last
month's), named/dated for the current month, following Step 5's structure.
This document is the only thing that leaves the sandbox.
Step 7 — Report where it landed
State the new document's name and location under {{updates_folder}} so the
founder can find, edit, and send it. Do not send, share, or publish it
yourself.