National demand: history and 12-month forecast
What the shape encodes. The COVID quarters, the FY25 price-decrease year that opened the volume-value gap, the four price tranches from late March 2026, and the Q1 FY27 inversion where value growth overtook volume. Amber ticks mark Diwali; crimson ticks mark Vijaya Dashami — note how far apart they drift, and that Dashami has ranged from 28 September to 26 October.
SKU forecast · next three months
Base × pack, the unit the plant actually makes. Colorant demand is derived from measured Colour Bank dispense mix rather than a national average.
Rolling-origin backtest
Forecast Value Add is the number that decides this. The incumbent statistical baseline row is the scoreboard: absolute WMAPE is for scoping, but the improvement against what Berger already runs is the commercial claim. Eight origins, embargo set to the plant-slate freeze, every reconciliation and conformal parameter fitted in-fold.
Scenario levers
Modelled drivers, not sliders on the output.
Driver attribution
Method. Ablation deltas on weighted CRPS — retrain without the block, measure the loss. Not attention weights.
Depot despatch: weekly history and 8-week forecast
Product replenishment · next four weeks
Weeks of cover against the P50, and a suggested order quantity at the service level set on the right. The recommendation moves with the quantile, not with the mean — which is the whole point of forecasting a distribution.
Rolling-origin backtest · weekly
Why weekly errors are larger. Depot despatch is quantised by truckload and driven by dealer scheme timing, so a weekly bucket carries irreducible lumpiness a monthly bucket smooths away. The Puja-window column is the one the East supply-chain team will judge: eight of ten stock-outs that matter happen in those six weeks.
Scenario levers
Modelled drivers, not sliders on the output.
Driver attribution
Note the reordering versus the national tab. Colour Bank offtake and scheme timing dominate at weekly depot grain; repaint stock and macro drop to nothing. Same model family, different weight vector — which is why the two levels are trained separately and reconciled.