System
One launch, three numbers.
Retail asks, Logistics plans capacity, SDM forecasts demand, and all three collide.
Focus
Zoom in: just SDM
Supply and Demand Management rations one capped supply across stores, once a model finds the honest demand behind each ask.
Even honest demand tops the cap, so SDM must ration the 1,050.
The data
The three Macedonia stores.
Different sizes, different signals. Preorders lead demand, and a stockout hides the real demand.
Request vs preorders
launch week, 3 storespreorders lead demand -> the earliest real signal per store
What the data can and cannot say
Legacy
Manual Excel misses the window.
Six to eight hours to refresh one country by hand, with a dozen countries to launch.
Cumulative manual hours
one planner, every countrypast the cutoff: 9 of 12 countries (75%) still stale
Breaks at fleet scale
country × store × SKUone spreadsheet, hundreds of cells
Stakes
What if the number is wrong?
Over and under are both costly, and at a launch they are not equal.
Two ways to miss the number
consequences only- excess stock
- tied capital
- markdowns
- units another country needs
- stockout in peak week
- lost sales
- customers to a competitor
- unhappy stores
Excess stock redeploys (at a cost); a launch stockout is a sale gone.
Model
Beat the baseline or don't ship.
One global LightGBM quantile model across all stores and SKUs, benchmarked on WAPE against SeasonalNaive.
Baseline vs the model
WAPE, backtestedNot ARIMA/ETS (per-series, cold on a new launch) or deep nets (data-hungry, overkill).
Calendar
Seasonality, events, and dates.
Launch phase, holidays, paydays, and promos are known ahead, so they become features.
Feature calendar
weeks around launchWeekly units, illustrative shape.
Competitor moves and weather stay risks, not features, at this horizon.
Source
Sourced from Snowflake, mind the traps.
That 12% only holds if the source is right.
One pull, three traps
planning schema-- grain: store x week, as-of run
select week, store, retail_request, preorders,
sell_through, on_hand, eta, stockout_flag, asof_ts
from analytics.planning.iphone_launch_signals
where country = 'Macedonia';
Evaluate
Prove it, then measure it.
Rolling-origin backtest against the baseline, scored with WAPE.
Rolling-origin backtest
walk-forward, 4 foldsWhy WAPE, not MAPE
same forecast, two readingsPayoff
More demand than phones.
The 1,050 commit splits across the three stores; the 320 ask over cap stays visible.
Country forecast vs cap
launch horizonStore split
3 Macedonia storesMonitor
Keep it honest, day after day.
Refresh, gate, watch drift, retrain on a trigger, then learn.