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:
MetricDefinition
MRRSum of active subscription value, normalized to monthly
MRR growth(this month MRR − last month MRR) / last month MRR
RevenueTotal collected revenue for the month
New / expansion / churned MRRMovement components behind the net MRR delta

Step 3 — Pull product and finance metrics from Postgres (read-only)

Query for the current calendar month:
MetricDefinition
Active accountsAccounts with qualifying activity in the month
Account growthNet new active accounts vs. last month
BurnNet cash spent in the month (cash out − cash in, excluding financing)
RunwayCurrent 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:
  1. Headline — one or two sentences on the month's overall trajectory.
  2. Metrics table — MRR, growth, revenue, active accounts, burn, runway, each with last month and plan comparisons.
  3. 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.
  4. 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.
Investor update draft — Kortix Marketplace | Kortix