Published on: June 9, 2026 · 9 min read
Most "data-driven" decisions are justified after the fact. We make the call, then build the deck that explains why it was obviously right. The real leverage — the thing I've spent a good chunk of my career doing — is the opposite: simulating the P&L impact of a decision before you commit, while you can still change your mind for free.
Pricing change, marketing-budget reallocation, a retention bet, a new market — these are all financial decisions wearing operational clothes. Each one moves the P&L through a chain of drivers, and the chain is usually knowable in advance. Not precisely. But well enough to tell a good bet from a bad one before you've spent the money.
The mistake I see most often is modelling the output — "revenue will grow 20%" — instead of the drivers that produce it. A driver-based model breaks the number into the levers you actually control or can forecast, so that when reality diverges you know which assumption broke.
Revenue isn't an input. It's customers × conversion × average order value × frequency. Margin isn't an input. It's revenue minus the costs that scale with it. Build the model as the chain, and a decision becomes a change to one or two links you can reason about.
# A driver-based P&L skeleton — deliberately simple
def monthly_pnl(new_users, conv, aov, freq, gross_margin,
fixed_cost, variable_cost_per_order):
orders = new_users * conv * freq
revenue = orders * aov
cogs = orders * variable_cost_per_order
gross = revenue - cogs
contrib = gross * gross_margin # after channel/processing
op_profit = contrib - fixed_cost
return {
"orders": orders, "revenue": revenue,
"contribution": contrib, "op_profit": op_profit,
}
# A decision = a change to one or two inputs.
# A 10% price rise is aov *= 1.10 — and probably conv *= 0.96.
That last comment is the whole game. A price rise doesn't just lift AOV — it usually dents conversion. The model forces you to write down the second-order effect instead of pretending it isn't there.
Never present a single forecast. A point estimate hides its own uncertainty and invites false confidence. Run at least three scenarios — base, bull, bear — built by flexing the key assumptions to honest high and low values.
| Scenario | Conv. uplift | Churn impact | 12-mo op profit |
|---|---|---|---|
| Bear | +2% | +1.5pp | −₹8L |
| Base | +6% | +0.5pp | +₹14L |
| Bull | +11% | −0.2pp | +₹41L |
Illustrative scenario set for a hypothetical pricing decision. The spread — not the base case — is what tells you how much you're really risking.
The decision rule lives in the spread. If the bear case is survivable and the base case is good, you take the bet. If the bear case is fatal, the expected value barely matters — you can't afford to be wrong even once.
Most models have a dozen inputs and one or two that move almost everything. Sensitivity analysis — flexing each input alone and measuring the swing in the outcome — tells you where to spend your remaining research time, and where precision is wasted effort.
Tornado-style sensitivity: how much 12-month op profit swings when each input is flexed across its plausible range, holding the rest at base.
A model's job isn't to predict the future. It's to make your assumptions explicit enough to argue about before they cost you anything.
I tell every stakeholder the same thing: this model is wrong, the only question is whether it's wrong in a way that changes the decision. Three failure modes I watch for:
None of that makes the exercise pointless. A model that's roughly right and explicit beats a gut call that's confidently wrong and unexaminable. The value was never the forecast — it was being forced to say out loud what you believe, and by how much, before the money moves.