## When to run Run on the first of every month, or whenever you need to know where you stand before making a spending or hiring decision. The instinct to avoid this brief is the instinct that causes late-stage surprises — the month you discover burn is 30% above plan is never the month you ran this skill on schedule. This brief is not a performance review. It's a navigation instrument. You're not reliving last month; you're calibrating what you can afford to do next month. ## What you'll get A one-page financial brief with four numbers that matter: revenue, expenses, net, and runway in months. Compared to last month so you can see the direction, not just the position. Saved to the vault so the investor-metrics-package and runway-scenario-model skills can read it without asking you to re-enter data. ## Steps 1. Determine the reporting month. Default to the previous calendar month if `month` is not provided. Set `FIRST_OF_MONTH` and `LAST_OF_MONTH` as date bounds. 2. Pull revenue from Stripe. If the Stripe MCP integration is configured: - Fetch all charges and subscriptions created between `FIRST_OF_MONTH` and `LAST_OF_MONTH`. - Sum gross revenue. Calculate MRR from active subscriptions as of `LAST_OF_MONTH`. - Pull the same figures for the prior month for delta calculation. - If Stripe is not configured, check for a manual entry: `sqlite3 vault.db "SELECT content FROM pages WHERE path LIKE 'journal/%-financial-log%' AND date >= '<FIRST_OF_MONTH>' AND date <= '<LAST_OF_MONTH>' ORDER BY date DESC LIMIT 5;"`. Parse out any revenue figures. - If neither source has data, leave `MRR: $[enter]` and `Gross Revenue: $[enter]` as placeholders. 3. Pull expense data. Query the vault for journal entries tagged `financial-log` or containing expense-related keywords: ``` sqlite3 vault.db "SELECT path, content FROM pages WHERE pages MATCH 'expense OR spend OR subscription OR invoice OR payment' AND date >= '<FIRST_OF_MONTH>' AND date <= '<LAST_OF_MONTH>' ORDER BY date DESC LIMIT 10;" ``` Also check for any `wiki/expense-audit-*.md` from this month — if it exists, pull the monthly run-rate total from it rather than re-computing. 4. Use `monthly_burn` input if provided and no expense data is in the vault. If no source has expenses, leave `Total Expenses: $[enter]` as a placeholder. 5. Compute net. `Net = Gross Revenue − Total Expenses`. If either is a placeholder, mark net as `$[calculate after filling in placeholders]`. 6. Compute runway. `Runway (months) = Cash Balance / Monthly Burn`. Use `cash_balance` and `monthly_burn` inputs. If not provided, check the vault for the most recent financial-log entry with a cash balance figure. If unavailable, leave `Runway: [enter cash balance] ÷ [monthly burn]`. 7. Pull prior month delta. Check for `wiki/financial-summary-<PRIOR_MONTH>.md` in the vault: ``` sqlite3 vault.db "SELECT content FROM pages WHERE path = 'wiki/financial-summary-<PRIOR-YYYY-MM>.md';" ``` If found, extract MRR, expenses, and runway for the comparison row. If not found, mark prior month as `—`. 8. Draft the brief. Lead with the headline number: is MRR up or down vs. last month? What is net — profitable, breakeven, or burning? How many months of runway at current burn? 9. Add a single "Decision prompt" at the bottom: one question the numbers raise for the next 30 days. Example: "Burn is $2,400 above MRR — is there one expense to cut before month-end, or do you need to close one more deal?" Do not editorialize beyond this. 10. Save to `wiki/financial-summary-YYYY-MM.md` where YYYY-MM is the reporting month. ## Output format ```yaml --- type: wiki title: "Financial Summary — [Month YYYY]" created: YYYY-MM-DD updated: YYYY-MM-DD status: draft tags: [financial-summary, cfo, monthly] sources: [stripe, vault-journal] reporting_month: YYYY-MM mrr: [number or null] gross_revenue: [number or null] total_expenses: [number or null] net: [number or null] cash_balance: [number or null] runway_months: [number or null] --- ``` ```markdown # Financial Summary — [Month Year] > Generated [YYYY-MM-DD]. Sources: [Stripe API / journal financial-log / manual input]. ## The Numbers | Metric | This Month | Last Month | Change | |--------|-----------|------------|--------| | MRR | $[x] | $[y] | [+/-z%] | | Gross Revenue | $[x] | $[y] | [+/-z%] | | Total Expenses | $[x] | $[y] | [+/-z%] | | Net | $[x] | $[y] | | | Cash Balance | $[x] | — | | | Runway (months) | [n] | [n-1] | | ## Revenue Breakdown - Subscriptions: $[x] ([n] active) - One-time / project: $[x] - Refunds / chargebacks: -$[x] ## Expense Breakdown - SaaS subscriptions: $[x] - Contractors / payroll: $[x] - Infrastructure: $[x] - Other: $[x] ## Decision Prompt [One question the numbers raise for the next 30 days.] ## Notes [Any anomalies, one-time items, or missing data sources — flagged so you know what to verify.] ``` ## Example output (truncated) ```markdown # Financial Summary — April 2026 > Generated 2026-05-01. Sources: Stripe API, journal financial-log (Apr 3, Apr 28 entries). ## The Numbers | Metric | This Month | Last Month | Change | |--------|-----------|------------|--------| | MRR | $31,200 | $26,800 | +16.4% | | Gross Revenue | $33,400 | $28,100 | +18.9% | | Total Expenses | $18,600 | $17,200 | +8.1% | | Net | $14,800 | $10,900 | +35.8% | | Cash Balance | $142,000 | — | | | Runway (months) | 7.6 | — | | ## Revenue Breakdown - Subscriptions: $31,200 (14 active) - One-time / project: $2,200 - Refunds / chargebacks: $0 ## Expense Breakdown - SaaS subscriptions: $3,200 - Contractors / payroll: $11,400 - Infrastructure: $1,800 - Other: $2,200 ## Decision Prompt Runway is 7.6 months at current burn. MRR growth is strong (+16%), but burn grew too (SaaS + contractor costs up $1.4K vs. last month). Before adding a contractor next month, confirm which existing subscriptions can be cut from the expense audit. ```
Mon, Aug 24
Finance Pack
monthly-financial-summary
Pull this month's revenue, expenses, net, and runway vs. last month into a single 1-page brief you can act on.
cron:0 8 1 * *
stripe-api
vault-sqlite-fts5
shipped
The month to summarize (e.g. "April 2026" — defaults to the previous calendar month)
Current cash balance in dollars (manual input — pull from your bank if Stripe doesn't cover it)
Total monthly operating expenses in dollars (manual input if not tracked in journal)
Artifact will appear here
wiki/financial-summary-YYYY-MM.md