The what-if buy plan: sizing against three demand scenarios
Size your next big buy against bad, base, and good demand scenarios instead of one forecast: worked example with cash exposure per scenario.
InventoryX is in development and not available today. ClearStock is the live Shopify app.
A single forecast is a bet on one future, with no odds attached. Size a big quarterly buy off one demand number and the entire cash outlay rides on that number landing exactly — which merchants know from experience it won't. The alternative is a what-if buy plan: size the purchase against three demand scenarios (bad, base, good), price what each wrong guess costs, and only then pick the scenario to fund. Below, the full method worked out for a phone-stand store heading into Q4: a three-scenario table with visible arithmetic, the cash exposure of every wrong pick, a decision rule for which scenario to buy against, and the weekly triggers that justify upgrading mid-season.
Scope note: this article does the sizing math. The calendar around it — when you sit down, what gets reviewed monthly — is the monthly inventory planning process; this exercise slots into its scenario step.
Why one forecast breaks down on a big buy
Small repeat orders forgive a bad forecast — the error costs you days, the next PO corrects it. A seasonal container buy doesn't: one PO, one production slot, six-plus weeks of lead time, no second chance once the factory queue fills for the holidays. That slot is bookable — the factory capacity booking guide turns queue risk into a reserved date. The error you'd shrug off in July becomes the difference between a strong January and a clearance sale.
Merchants increasingly distrust single-point forecasts anyway (the export-and-recompute habit behind the three scenarios runs on standard Shopify sales exports — Shopify Help Center, accessed November 2026). A seller in r/shopify (2026) argued that their app's projections were no more legitimate than guesses, and a Prediko reviewer wrote that the prediction method was "a black box… I actually built a more useful/customized tool just with spreadsheets and ChatGPT for effectively $0" (Prediko App Store listing, accessed November 2026). The instinct behind that spreadsheet is sound; what it lacks is structure — a defined range, and a rule for choosing. That structure is the method below.
The deeper problem isn't that forecasts are bad. It's that one number hides the distribution. When demand can plausibly land anywhere in a 40% band and the PO is sized for the midpoint, "the forecast was roughly right" and "you're 300 units short" can both be true.
The three scenarios: bad, base, and good
Each scenario is a complete input set (demand rate, horizon, on-hand stock, unit cost), so each produces a real PO with a real dollar figure. Build them in this order:
- Base. The number your data supports. A clean baseline velocity — computed from in-stock days only — multiplied by the seasonal uplift your own history shows. How to compute that floor is covered in baseline demand; turning last year's holiday curve into a single multiplier is the job of a seasonal index.
- Bad. Your worst comparable season, recalled accurately — the weakest seasonal multiplier you've actually experienced, not a made-up floor. If last year's softest month ran 1.4× baseline, that's the bad case; it already encodes whatever went wrong then.
- Good. Your best comparable season, plus demand you've already paid for: ad commitments booked for November, wholesale orders, placements. It isn't optimism; it's the ceiling your history and calendar both attest to.
Three scenarios, three POs. Now the arithmetic.
Sizing the Q4 buy under each scenario
The example store (all numbers illustrative throughout) sells phone accessories. The hero SKU is STAND-AL-02, a folding aluminum phone stand. It's late September; the supplier's sea lead time is 42 days, so the PO must be placed by October 6 to be sellable November 17. Season window: November 17 through January 10 — 55 selling days. On hand: 520 units. Baseline velocity: 10 units/day. Landed cost: $6.50/unit.
From the store's own last two Q4s: the best month ran 2.6× baseline, the worst 1.4×. Those become the good and bad multipliers; 2.0× is the base.
Pre-season burn (same in every scenario): 10/day × 42 days = 420 units Bad: 14/day × 55 days = 770 → total demand 420 + 770 = 1,190 → buy 1,190 − 520 = 670 units → 670 × $6.50 = $4,355 Base: 20/day × 55 days = 1,100 → total 1,520 → buy 1,000 units → $6,500 Good: 26/day × 55 days = 1,430 → total 1,850 → buy 1,330 units → $8,645
| Scenario | Season rate | Demand Oct 6 → Jan 10 | PO quantity | Cash outlay (illustrative) |
|---|---|---|---|---|
| Bad — 1.4× baseline | 14/day | 1,190 units | 670 | $4,355 |
| Base — 2.0× baseline | 20/day | 1,520 units | 1,000 | $6,500 |
| Good — 2.6× baseline | 26/day | 1,850 units | 1,330 | $8,645 |
Each row ends the season at exactly zero by construction — every bet sized to land at zero in its own world. If that feels too tight, add a deliberate cushion of one to two weeks of cover as a separate line — slack as a decision, not invisible padding.
What each wrong pick costs
The spread between scenarios is 330 units per step — small enough to tabulate every combination of buy versus reality:
| Buy ↓ · demand lands → | Bad (1,190) | Base (1,520) | Good (1,850) |
|---|---|---|---|
| Bad buy — 670 units | ends at zero | 330 short | 660 short |
| Base buy — 1,000 units | 330 left over | ends at zero | 330 short |
| Good buy — 1,330 units | 660 left over | 330 left over | ends at zero |
Translate to dollars with the example unit economics — sells at $26, landed at $6.50, roughly $13 contribution per unit after fees and pick-pack (all illustrative):
- Overbuying. A 330-unit leftover ties up 330 × $6.50 = $2,145; 660 ties up $4,290 (illustrative). The recoverable error: January's baseline of 10/day clears 330 units in about a month at full price; 660 needs two months or a modest markdown.
- Underbuying. 330 missed units ≈ $4,290 of missed contribution; 660 ≈ $8,580 (estimated, and assuming every missed unit is lost). This error is mostly unrecoverable within the season — the production queue is full, and Q4 demand won't wait 42 days for a second container.
Both directions deserve a haircut. On the overbuy side, carrying cost and markdown risk shave the recovery. On the underbuy side, not every unmet unit is lost: some customers buy the same brand somewhere else, some substitute a sibling variant, some wait out the dark days and return, and some never come back. For a single online store, "elsewhere" is lost too — the real cushion is your own substitutes and customers who return after a fast restock. Haircut both and the asymmetry survives: underbuying costs roughly twice overbuying per unit in this setup. That asymmetry, not confidence in any forecast, should set the default.
Which scenario to buy against
The default falls out of the arithmetic: buy against base, then tilt. Tilting up costs $2,145 per 330 units of extra commitment (illustrative); tilting down saves that cash but exposes roughly double that in estimated missed contribution. Tilt direction depends on four things:
| Situation | Buy against | Reasoning |
|---|---|---|
| One-shot buy, no mid-season reorder possible, proven hero SKU, healthy margin | Base, leaning up | Underbuy is unrecoverable; overbuy is just inventory you sell in January |
| Top-up PO pre-negotiated with the supplier | Base, plus the option | Cheap upside: upgrade only if triggers fire |
| New SKU, one season of history or less | Bad, small buy | No trustworthy baseline; treat it as a test order |
| Cash tight, credit line near its limit | Bad to base | Overbuy cash is certain pain; missed margin is hypothetical until demand proves it |
| SKU carries your Q4 ad traffic | Base to good | The hero going empty mid-campaign wastes spend already committed |
The strongest move is the second row, and it costs almost nothing to set up. Before the season, agree with the supplier on a mid-season top-up: air freight, 12-day lead, $8.90/unit landed versus $6.50 by sea, a $2.40/unit premium (illustrative). A 330-unit rescue costs about $792 extra (estimated) against $4,290 of estimated missed contribution. Base-case cash plus a pre-priced option on the good case beats paying for the good case up front — provided you've committed, in advance, to the conditions that fire the option. The rescue PO's break-even arithmetic is the expedite worksheet in the expedited freight guide.
One input the table takes as given: the cash ceiling all three POs must fit — the inventory budget guide computes it; the holiday cash calendar funds Q4.
Triggers that upgrade or downgrade your scenario
An option is worthless without a tripwire. Decide the triggers in September, in writing, and check them weekly — Monday works, since it lines up with the review most planning cadences already run. Shopify has no native low-stock email alert, so monitoring means a weekly-checked saved view, a Shopify Flow automation (Shopify Help Center, accessed November 2026), or the same rows in the spreadsheet you're already keeping.
- Velocity trigger. Two consecutive in-stock weeks above the base-case rate — 20/day in the example — means the base case is already conservative. Fire the top-up while the air window is open.
- Cover trigger. Days of cover falling below lead time plus a buffer while the top-up window is open — below roughly 35 days of cover at any point before early December, in the example.
- Committed-demand trigger. Ad spend booked against the SKU, a wholesale order, a gift-guide placement. Committed demand upgrades the good case before it shows up in velocity.
- Downgrade trigger. Two weeks below the bad-case rate means freeze further POs and run markdown math on the position you're holding. Scenarios cut both ways; the bad case deserves a tripwire too.
Keeping the inputs grounded
One trap: baseline velocity computed across out-of-stock days understates demand. If STAND-AL-02 went dark for a week last September, its recorded velocity blends selling days with absence — and the "base" case built on it is secretly the bad case. Compute velocity from in-stock days only; if that materially raises the number, your old base was wrong, and part of the gap between base and good was just correction.
One note about our own tool belongs here. InventoryX won't run scenario tables — there's no forecasting dashboard in V1, and we don't pretend otherwise. What it keeps current is the base-case input: the Monday Buying List recomputes days of cover and suggested quantities per SKU weekly from in-stock-only velocity, so the number feeding your base scenario is current, not a September snapshot. The multipliers stay in your spreadsheet, the right place for a judgment call.
Common questions
What is a what-if buy plan? A purchase sized against three demand scenarios (pessimistic, expected, optimistic) instead of a single forecast. Each produces its own order quantity and cash figure; you compare what being wrong costs in each direction, and you choose what to fund before the PO goes out, not after the container lands.
Which demand scenario should I buy against? Base, by default: it's the scenario your data actually supports. Move up toward good when a mid-season top-up PO exists, margins are healthy, and the SKU has a proven seasonal history. Move down toward bad when cash is tight, the product is unproven, or the buy is one-shot.
How do I set the bad and good scenarios? Anchor both to your own history rather than mood. The bad case mirrors your worst comparable season (a lower multiplier plus a haircut); the good case mirrors your best, plus demand you've already paid for. Real multipliers from last year, applied to a clean baseline velocity, put real bounds on both.
What triggers moving up from the base-case buy? Triggers you committed to before the season: two consecutive weeks of in-stock velocity above the base rate, cover falling below lead time plus buffer, or demand already paid for through ad commitments, wholesale orders, or placements. Any trigger firing while the top-up window is open means placing the second PO immediately.
Is scenario planning a replacement for forecasting? It's a hedge, not a replacement. A single-point forecast pretends one number is knowable; scenarios make the uncertainty explicit and price it. Compute a disciplined baseline for the base case, then bracket it with judgment-set bad and good cases.
Next step
Four inputs and three multipliers are all the table above needs. Open a spreadsheet tab for your biggest upcoming buy and fill it: baseline velocity, three multipliers, horizon, on-hand units, cost per unit. Thirty minutes puts the cash exposure of every bet on paper. Then write the triggers underneath while it's calm (two velocity weeks, one cover floor, one downgrade rule) and check them Mondays. When you want the odds-attached version of the buy-against decision, service-level inventory planning is the formal next rung.