carl-gustav.dev

Notes on systems, language, and craft.

Building & Leading

Rolling 9-month forecasting: the cashflow discipline that showed me COVID had hit before anyone told me

A practical framework for rolling 9-month cashflow forecasting — update cadence, what goes in, how to read variance, and why a forecast built before the crisis is the only one that counts.

Most small business owners I know have two financial instruments: a yearly budget they made in January, and their bank account balance. The budget tells them what they hoped would happen. The bank balance tells them what already did. Neither one tells them whether the trajectory has changed.

I’ve been running a rolling 9-month cashflow forecast for the agency since 2017. It isn’t sophisticated. It lives in a spreadsheet. But it’s the single most useful financial tool I have, and the last six months proved exactly why.

The setup

The forecast looks forward 9 months from today. Not 12 — twelve months out, you’re guessing about seasonal patterns you can’t predict with useful precision. Not 6 — six months isn’t enough runway to react if something structural shifts. Nine months gives you a planning horizon that’s long enough to act on and short enough that your assumptions haven’t decayed completely.

I update it at the start of every quarter — every three months. Not monthly, because monthly updates create noise. You start chasing individual client timing variances instead of seeing the actual trend. Not yearly, because a January budget is stale by March and fictional by June. Every three months hits a cadence where you’re forced to revisit your assumptions but not so often that the exercise loses meaning.

What goes in

Revenue, broken down by client and weighted by pipeline stage. A confirmed retainer gets 100%. A verbal commitment from a client you’ve worked with for three years gets 85-90%. A proposal out to a new prospect gets whatever your historical close rate says — for us, that’s been around 30-35%.

All fixed costs. Rent, tools, subscriptions, insurance. These are boring but they’re what makes the forecast reliable — you know them with certainty, so the variance analysis only has to focus on the revenue side.

Personnel costs with timing. Not just the monthly salary bill, but when new hires ramp in and when someone leaving actually costs less. A person who gives notice in March is still a full cost in April and May. The forecast reflects that.

Tax timing. VAT payments, preliminary tax, employer contributions — all on their actual due dates, not smoothed across the year. Cashflow is about when money moves, not what the P&L says.

Dividend timing, if applicable. Capex placeholders for anything over a threshold.

What comes out is a month-by-month cashflow projection. Revenue minus costs, cumulative, for the next nine months. Updated four times a year. Compared against actual outcomes every month.

The weekly rhythm

Each month, when the books close, actual revenue gets recorded next to the forecast entry. The comparison is the whole point.

If a single month comes in above or below, you check the pipeline assumptions. Was a project pulled forward? Did a client delay a decision? Single-month variance is almost always a timing issue, and chasing it is a waste of energy.

If two or three months in a row show the same direction of variance, something structural has changed. Update the forecast. Not the old entries — those stay as they were. You update the forward-looking months based on what the pattern is telling you.

The discipline is to never revise history. The February forecast says what February-you believed. The September forecast says what September-you believes. Both are useful precisely because they’re honest snapshots, not retroactive corrections.

What happened in 2020

I updated the forecast in early February, as normal. The forward curve showed continued growth. December 2019 had closed strong, January conversations were solid, pipeline was healthy. Nothing on the horizon suggested anything different.

March actual came in below forecast. My first reaction was that it was a timing issue — a couple of client decisions that pushed into April. Not alarming on its own. Exactly the kind of single-month variance you note but don’t react to.

April actual came in much further below forecast. This wasn’t timing. Two clients had paused entirely. One reduced scope by half. New pipeline had frozen. The variance between February’s forecast and April’s actual was large enough that the shape was unmistakable.

By May I’d revised the forward forecast down significantly. The variance analysis was now running against the revised baseline — tracking whether the downturn was stabilizing, accelerating, or recovering.

That February-to-April graph — the original forecast line versus what actually happened — became the clearest piece of documentation I had. It showed three things at once: that we’d been operating on a credible growth trajectory before the crisis, that the downturn was externally driven, and that we’d detected it within weeks rather than waiting for year-end numbers to tell us something we already knew.

Why the method held up

The forecast had been produced before the crisis. That was its most important property. Anyone can build a forecast after the fact that shows how bad things got. A forecast that was on file before the disruption, showing what the reasonable expectation was, is evidence of a completely different kind.

The three-month update cadence meant the February baseline was fresh. If I’d been updating annually, the last forecast would’ve been from January — still recent enough. But if I’d been on a six-month cycle, the last update would’ve been from the previous autumn, and it would have reflected assumptions that were already half a year stale.

The nine-month horizon meant the damage showed up in the variance analysis fast. A shorter horizon would have caught it too, but with less forward context for planning the response. A longer horizon would have diluted the signal with speculative months at the tail.

What I would add

Two things I’ve been thinking about since May.

A scenario layer. Not just one central forecast but three: expected case, stress case, and recovery case. Running parallel scenarios would have helped me communicate faster — to the bank, to the Swedish short-term work-allowance agency, to the team. Instead of explaining the variance after the fact, I could have pointed to the stress scenario and said “we’re tracking this line.”

A lead-indicators layer alongside the revenue forecast. The rolling forecast tracks trailing revenue — what’s already been contracted or is in late-stage pipeline. What it doesn’t track is the early signals: new-pipeline creation, first-meeting volumes, proposal-to-close rates. Those leading indicators would have told me in March that April was going to be worse — before April happened. The forecast confirmed the damage; leading indicators would have predicted it.

The point

The discipline is boring. Updating a spreadsheet every three months, recording actuals, running the comparison, resisting the urge to revise history. It doesn’t feel strategic. It feels like bookkeeping.

But a forecast you’ve maintained for years is what you reach for when the situation turns. A forecast you build in a crisis is too late — it has no baseline to compare against, no track record of accuracy, no evidence that you were operating competently before things went sideways.

If you run a small business and your financial visibility is a yearly budget plus a bank balance — start this. It takes an afternoon to set up and an hour per quarter to maintain. The return on that time is invisible until the day you need it, and then it’s the most valuable document you have.

Anyone running a similar practice? I’m curious whether people use different horizons or update cadences — and whether scenario layers are standard or unusual at this scale.

Written by Carl-Gustav Öberg

I'm Carl-Gustav Öberg, founder of Forge Nord. I build AI systems, run infrastructure, and write about what I learn along the way.

More inBuilding & Leading See all in Building & Leading →