three-statement-model

Installation
SKILL.md

Three-Statement Model

When to use

Use whenever a projection needs to link the income statement, balance sheet, and cash flow statement together rather than treating them as three separate, disconnected spreadsheets — especially before presenting a model to a senior audience, where an unchecked balance sheet that doesn't actually balance is one of the fastest ways to lose credibility in the room.

What it does

Builds a driver-based P&L, rolls the balance sheet forward year by year, and derives the cash flow statement from the changes between periods via a bundled calculator, then runs two integrity checks every year: does total assets equal total liabilities plus equity, and does the balance sheet's cash balance match the cash flow statement's closing cash exactly. A model that fails either check is not yet a usable model, regardless of how reasonable the underlying assumptions look.

Method

  1. Set revenue and margin drivers explicitly: starting revenue, growth rate, gross margin, and opex as a percentage of revenue — the same driver-based discipline as driver-based-budget-builder, extended across multiple years.
  2. Set working capital drivers: DSO and DPO, which determine how accounts receivable and accounts payable roll forward each year and directly drive the operating cash flow.
  3. Set capex and depreciation assumptions, tied to revenue or a stated capital plan, which drive the investing cash flow and the balance sheet's PP&E roll-forward.
  4. Run the bundled calculator (scripts/three_statement.py) to get the full year-by-year P&L, cash flow statement, and balance sheet, along with the two integrity checks for every year.
  5. Treat a failed balance check as a hard stop, not a rounding issue to note and move past. If assets don't equal liabilities plus equity, there's a real error in the model's linkage, and every number downstream of that year is unreliable until it's fixed.
  6. Treat a failed cash-tie check the same way — if the balance sheet's cash doesn't match the cash flow statement's ending cash, the two statements aren't actually linked, they're two separate calculations that happen to look similar.
  7. Extend the simplified structure deliberately when a real model needs more — this build keeps debt static and doesn't model interest expense, which is intentional for a clean base case; pair with debt-schedule-model when the capital structure and interest expense need to flow through the model explicitly.
Installs
19
GitHub Stars
22
First Seen
Sep 3, 2026