A forecast is not a plan.
George Storm's Forecast Loop: the read, the response, the operating system. Regime-aware forecasting as a live loop, not a quarterly CRO artifact.

The Forecast Loop as an operating discipline.
By George Storm. CRO at NRich May 2026.
The thesis up front
The forecast is the read. The plan is the response. The loop is the operating system.
The CRO has to watch regimes. Hope is not a forecastmade that argument. But watching is the start, not the work. The work is running the read, the response, and the loop they form together, faster than the regime can drift underneath them.
A forecast is not a plan. It’s the first step in an operating system the seat has to run.
Act I. The Read
A forecast is the read of where the year is going. Hope is not a forecast made that read regime-aware. This is what it took to make the read actually work.
From point estimate to curve
A few weeks ago I published a piece called “Hope is not a forecast.” The argument was simple. The economy isn’t behaving the way conversion-rate spreadsheets assume it does. The model can’t stay still while the regime shifts under it. I introduced three regimes (Calm, Turbulent, Stormy) and a 55% prior for Turbulent borrowed from the WEF risk outlook. The point was that you can’t build a board-defensible forecast off conversion rates that were calibrated in a different weather system.
The piece landed surprisingly well and pretty fast :) Most importantly I received positive feedback from operators I really respect like Carl Carell and Urban Bucht - my thanks gentlemen.
It also landed "wrong" in one important way.
Jacco van der Kooij, pointed out that what I’d published was a regime-weighted expected value. A point estimate with three weights stapled to it. A board can’t act on that. They need a distribution. They need to read it off a curve, not back-solve it from a paragraph.
*needless to say that I was overjoyed with the feedback :)
He was right. So I rebuilt the model.
CDF vs point estimate
The original model treated each input as a number. A single point. You picked a value, plugged it into the regime-weighted formula, and got an expected ARR out the other side. The Monte Carlo wrapper made it feel rigorous. It wasn’t. A point estimate is a point estimate even when you average three of them.
The rebuilt model treats each input as a spread. Not “win rate is 17% under Turbulent.” Win rate is a distribution with a centre, a variance, and a tail, conditional on the regime. The whole forecast is the joint distribution of those spreads, sampled tens of thousands of times across the three regimes, mixed by priors.
That sounds like a technical move. It’s actually a philosophical one. You’re saying out loud that the variables a CRO operates against are not numbers. They are ranges with probabilities attached to them. And the shape of those ranges is what determines whether the year holds. That’s how the forecast becomes something you can act on instead of something you can only argue about.
The output isn’t an expected value. It’s a CDF, a cumulative distribution function. The board reads probabilities off the curve directly. The 70% number isn’t a paragraph anymore. It’s a coordinate. The 90% line, the 50% line, the tail beyond the commit, all of it visible at once, on one chart, with the math sitting underneath it.
For readers who want the construction in detail (Monte Carlo over three regime-conditional triangular distributions, regime priors as a Bayesian posterior, every parameter band documented), the math reference ships alongside the calculator. The mechanics are deliberately legible. Nothing is in a black box.
Signals are what move the read
The read doesn’t sit still between forecast cycles. It moves with the signals.
The job of the signals is to tell the simulation that the inputs are about to move before they show up in the conversion data.
The model takes eleven signals. I split them into two categories on purpose.
Sales-process-internal signals
These are the things the org can move. Pipeline coverage by stage. Conversion at each stage relative to the cohort. Ramp time per AE. Win rate by segment and by region. Deal-cycle drift. Discount discipline.
The signals you’d already track in a healthy QBR. These adjust the conversion rates within a regime. They tell the model that even if the weather hasn’t changed, your performance inside it has.
Macro / regime signals
These are the things the org can read but not move.
Capital-market tightening. Sector-specific demand collapse. AI-disruption in your category, when LLM-native competitors show up in buyer evaluations. Search shift, Google removing the keyword layer your inbound was built on. And the one most B2B SaaS forecasting misses: role compression on the buyer side.
Role compression is where two forces converge on the buyer side. People in your buyer base are getting fired in 2026 for two reasons that fire together. AI absorbs duties on one side. Missed targets driven by the Turbulent regime eliminate roles on the other. Both compress roles. Both eliminate seats. The champion who bought you last year is no longer in the seat. Either because the team was consolidated into an AI-augmented version with one head instead of three, or because they missed the year and got replaced. It is the macro signal that, more than any other, decides whether the deal you closed twelve months ago would close again today.
These five signals shift the regime prior itself. They tell the model the weather is changing, not just that you’re playing differently inside it.
The split matters because the two categories feed the model differently. Sales-process signals re-weight conversion rates inside a regime. Macro signals re-weight which regime you’re in. Most forecasting models I’ve seen conflate the two. They treat everything as performance variance. That’s how a forecast survives until the quarter it has to be wrong.
Signal taxonomy split
That’s the read. Regime priors, conditional spreads, signals that move both. The CDF is what the read looks like at any moment. It updates as the signals come in.
But a distribution is not an action.
Act II. The Response
A forecast tells you what’s coming. It doesn’t tell you what to do. The plan is the response.
Why a forecast is not a plan
Now you have a distribution. You can tell your board there's a 70% chance you land between X and Y. You can walk them through the regime priors and the signals underneath the curve. You can defend the math line by line to a sceptical CFO. You can do all of that, and you can still miss the year.
Because the math was never the hard part.
The hard part is what the org does with the math. Whose metric is on the line when the model says win rate will compress 8-12% over the next two quarters? Who decides what to do about it, when, and with what budget? How do the sales team, the marketing team, the CS team know that their individual metric just got re-priced, and what they need to change before the quarter ends?
Most forecasting models stop at the slide. They give the CRO a number and a confidence band, and then the CRO has to figure out everything else on her own. The model doesn’t connect to the action layer. It sits in a different deck. It updates on a different cadence. It’s owned by a different team. By the time the model’s read gets translated into a function-level action, the quarter the model was warning about has already started.
That’s the failure mode. Not bad forecasting. Disconnected forecasting. The BI team owns the model. The CRO owns the number. Marketing owns their own metric, sales owns theirs, CS owns theirs. Nobody owns the connections between them.
Disconnected forecasting
Take a concrete shape of it. The model flags that win rate in your enterprise segment is going to compress 8-12% over the next two quarters. The CRO sees it Thursday. The marketing review is two Wednesdays out. By the time the conversation about which campaigns to re-prioritise actually happens, the segment has already started running against the compressed rate.
Three weeks of mistimed spend. Two weeks of pricing decisions made against the old assumption. Six weeks of CS triage queued behind the wrong priority. None of it is anyone’s fault individually. All of it is the failure mode of a forecast that updates quarterly inside an org that moves weekly.
On a healthy 4× coverage book, a two-quarter win-rate compression left unaddressed is roughly the delta between hitting and missing the year by mid-single-digit millions.
The cost isn’t in the forecast being wrong. It’s in the action being late.
The new bar for the seat
You don’t get fired for missing the number. You get fired for not seeing it coming.
I opened my last article with that line.
What matters now is the speed at which you see it coming, and respond to it. The seat hasn’t been trained for this. Most CROs got here by running the number. The new bar is different. Not “did you hit it?” but “did you see it coming, and did you respond in time?”
That requires the CRO to own the model. Not commission it from BI. Not consume it from a dashboard. Build it. Run it. Act on it day to day. The forecast isn’t something the seat receives anymore. It’s something the seat operates.
Here’s the chairman’s view I see hardening across B2B SaaS boards this year, in the conversation that follows the miss the CRO didn’t warn them about:
“I don’t mind the model being wrong. I mind that the model and the operation weren’t on the same clock. If your forecast can’t tell my CRO something they didn’t already know two weeks ago, what am I paying the forecast for?”
That’s the bar now. The forecast isn’t a slide. It’s the read layer of an operating system. If the read layer lags the org by a quarter, the operating system was always going to break.
For the board members reading this:
the practical question is whether the cadence at which your CRO reads the year is faster than the rate at which the market is changing it. If the answer is no, that’s the conversation worth having before the next quarter, not after the next miss. The forecast cadence is now a measurable board-level variable. Treat it like one.
The seat isn’t the same seat. The CRO who runs forecasting as a quarterly artifact and the CRO who runs it as a live operating system are doing different jobs against different bars. That isn’t a stylistic preference. It’s the role evolving in real time. The boards that already see it are the boards already replacing the seat-holders who don’t.
Influence is the unlock
AI/PLG-native companies have an advantage traditional SaaS/Sales-Led doesn’t get for free. Their product generates real-time engagement data. The model retrains on it overnight. The org adjusts on Monday. The feedback loop runs continuously, no ceremony required. Jacco van der Kooij and the Winning by Design team have been the loudest practitioner voice naming this, and growth loops are the language the industry uses for it now.
Sales-Led doesn’t inherit that loop. Pipeline, conversion, ramp, churn, the data that should be telling you where the revenue number is going, sits in different systems on different cadences. The feedback loop, when it exists at all, runs once per board cycle. Which is the slowest clock in the operating system.
That’s the gap. PLG-native gets the loop for "free" because the product produces signal.
Sales-Led has to construct the loop deliberately. The mechanism is what I call influence.
Influence is the deliberate actions the seat takes against a moving metric, treated as model inputs rather than as offline commentary. When I move three deals to senior coverage in response to a ramp-time signal, that’s not a footnote. It’s a perturbation to the win-rate spread in that cohort, and the model should treat it as such.
When marketing redirects budget from broad outbound to ABM in response to a SAL-quality signal, that’s an input to the conversion-rate spread in the next cycle. The CRO’s deliberate moves are what makes the loop close in the absence of a product telemetry layer doing it automatically.
That single move, treating influence as a model input, is what makes the difference between forecasting a regime and operating against one. It’s the move that turns a sequence of static reads into a loop. And it’s what lets a Sales-Led CRO compete on cadence with an AI-native company that has the product doing the work for them.
That’s the response. Not a plan deck. Not a quarterly meeting. Not a dashboard. Deliberate actions taken against the moving metric, logged so the next read absorbs them.
Act III. The Operating System
The forecast is the read. The plan is the response. The loop is the operating system.
Here’s what that looks like running.
The loop in motion
This is what one full turn looks like.
- Signals arrive continuously. Ramp time on a new hire. A keyword you used to rank for. Win rate in one segment compressing relative to another. A capital tightening in your sector. Each one re-weights one part of the spread.
- The model updates in flight. Sales-process signals adjust the conversion rates inside the current regime. Macro signals shift the regime prior. The CDF redraws.
- The drift becomes visible before it lands in conversion data. That’s the whole point. You see win rate compressing one to two quarters before the lagging metric confirms it.
- You act on the metric the signal is pointing at. Not on the lagging number. Not on the QBR. On the live read.
- The action gets logged as influence. The campaign you ran, the deal-cycle interventions, the pricing flexibility. These aren’t just things the org does. They’re inputs the model takes and uses to refine its forward read.
- The loop closes. The next round of signals arrives against a sharper model. The drift gets caught earlier. The action happens earlier. The lag between regime shift and CRO response compresses.
Closed loop - optimised for speed.
One cycle in real numbers
The read:
Three weeks into Q3, a signal lands. Ramp on the new AE cohort is running behind plan. The model picks it up. The ramp-time signal pulls the capture band inside the Turbulent regime down by roughly 7%, and the compounded effect on the next-two-quarter ARR spread is an 8-12% compression on top of the Turbulent baseline. The CDF for Q3 ARR redraws. The 70% line moves from €2.4M to €1.95M.
The action:
I look at which deals in the late-stage pipeline depend on AE-led closes, and move three of them to senior AE coverage. That decision gets logged as influence, a deliberate action taken against the moving metric. The same signal, on a quarterly cadence, would have surfaced in the Q4 review, three months after the deals it described had already slipped.
By week five the next signal lands.
Late-stage conversion in that cohort is up 4 points. The CDF redraws again. The 70% line moves to €2.18M. Half the compression is recovered.
The loop closed sharper than the baseline because the action was logged and the next reading absorbed it. Without the loop, the recovery shows up, if it shows up at all, in the next-quarter retrospective. Alongside the unrecovered compression in everything else the read didn’t catch.
That’s not a forecast update. That’s a forecast running.I built it because I needed it.
Same discipline, faster clock
This isn’t a different job. It’s the same job, running on a tighter clock.
Hope is not a forecast made the argument that the CRO has to own the forecast. That the seat’s work is gather → read → execute → repeat, against a model that takes the regime seriously. The model has to be live, not annual, to make that possible.
The mitigation work I walked through in the earlier piece, the SAL volume + quality ask, the cruise-mode CS rebuild, the buyer-mindset reframe on stalled deals, none of that goes away. All of it stays. The difference is when it gets triggered. Before, the loop ran in three weeks from regime read to committed action. Now it runs continuously, signal by signal, against a model that’s updating between every cycle.
The bar that used to be forecasting honesty has shifted. Now it’s loop speed.
That’s the bet. The forecast is no longer the artefact. The loop is.
If the loop is faster than the market, you can act before the quarter is decided. If the market is faster than your loop, the loop is window dressing on the same old miss.
The same loop runs at portfolio level. The regimes don’t care which company they’re hitting. The signals look similar across portcos in the same sector. A PE operator running this across fifteen SaaS portcos doesn’t need a different framework. They need the same one, instantiated fifteen times, with the regimes co-monitored across the cohort. The Forecast Loop scales by replication.
Tomorrow morning
A forecast is not a plan.
The forecast is the read. The plan is the response. The loop is the operating system.
Three things to run this week. Track. Read. Act.
If you’re a CRO reading this and you want to start operating against the loop on Monday morning, three steps. No new tooling required.
Track. Pick one signal and read it weekly. Pick one of the eleven. Ramp time. Conversion at stage. Deal-cycle drift. Whatever is most likely to move first in your book, and start reading it weekly. Write the reading in the same place every Monday. After four weeks you have a manual signal feed. After eight weeks you can see the drift before the lagging metric confirms it. That’s the loop, running at one-signal granularity, on your own data.
Read. Declare your regime, explicitly. Calm, Turbulent, or Stormy. Put it on every pipeline slide. State it explicitly to your team and to your board. Anchor it to external evidence. The WEF priors are a defensible starting point if you don’t have your own read of your market. Most CROs never explicitly declare what regime they’re operating in. They inherit last year’s assumptions and re-run them. The declaration is what turns the signal feed into a strategic read.
Act. Pick one influence action and log it. The next time you take a deliberate action against a moving metric, senior coverage on a slipping deal, a campaign reallocation, a pricing flex, write down the expected magnitude and the date. Then check it. Did the spread move the way you said it would? That’s the seat’s actions becoming model inputs instead of offline commentary. That’s the loop closing.
Three weeks of running those three steps, Track, Read, Act, gets you most of the way to operating against your own Forecast Loop. The calculator just makes it faster.
Sidebar. Three levels of maturity
The Forecast Loop runs at three levels. Each requires the level below it, and the math sharpens at every step.
Level one: Illustrative. Where the methodology stands today. The structure is real. Three regimes, eleven signals, Monte Carlo across the priors, a CDF the board reads off live. The architecture is running against my actual book today. The within-regime variance bands and the influence-input magnitudes are anchored to historical pipeline data and external benchmarks, informed estimates not measurements from controlled cohort experiments. The math reads like a board narrative the team can run against.
Level two: Informed. The spreads are calibrated to your own data, not assumed. Pipeline coverage stops being a single number with assumed variance and becomes a real distribution measured across reps, regions, segments, and quarters. Same for win rate, cycle length, NRR. The variance in the model matches the variance in the book.
Level three: Operational. The influence inputs are tested via controlled experiments with holdout groups. You run the action on one cohort, hold the other constant, measure whether the spread moves the way the model said it would. The next cycle absorbs the result. The model isn’t simulating anymore. It’s learning from how the seat actually operates.
Calibrating your Forecast Loop in stages
If you'd rather hear the argument as a conversation, I went into it with Daniel Nackovskiand Thomas Sjöbergon episode 212 of The SaaSiestPodcast. The war stories that didn't fit here. The chairman frame. What's actually happening on my book right now. Same thesis, different texture.🎙 https://open.spotify.com/episode/0Ai7lJqKzWMxKXldnWab8i