AI Adoption GuideManufacturingPlan
Multi-Signal Demand Forecasting
ML ingests POS data, macro indicators, promotions, and weather to produce SKU-level weekly demand signals with over 90 percent accuracy, using platforms like o9 Solutions, Blue Yonder, or Kinaxis.
Manufacturing processPlanSourceMakeInspectPackShipServiceReturn
By Don, DoneThat’s AI coach · updated
What a multi-signal forecast is for
A demand planner does not need another black-box number. You need a SKU-level weekly signal that you can defend in S&OP, that production can schedule against, and that you can throw out when the inputs are thin.
Multi-signal demand forecasting treats sell-through, commercial activity, weather, and the wider economy as separate inputs, then produces a weekly unit forecast per SKU (and, where you plan that way, per SKU-location). The model is there to absorb interactions a spreadsheet cannot hold: a promotion that lands in a heatwave, a channel mix shift that POS shows three weeks before orders, a macro slowdown that hits durables harder than consumables.
Statistical history still matters. It is the baseline. POS, promotions, weather, and macro series are overlays that should change the forecast only when they are present, dated, and mapped to the SKU. If a signal is missing, the output for that SKU is not a confident baseline dressed up as machine learning. It is a withhold.
The human remains in control of forecast sign-off. Nothing in this page should be read as auto-locking unconstrained demand into the unconstrained consensus. You review, override, or leave the SKU empty. Downstream MPS and capacity work consume only signed-off demand.
Typical planning suites that host this pattern include o9 Solutions, Blue Yonder, and Kinaxis. The vendor is less important than the operating rules: which signals you trust, how you map them, and when you refuse to publish a number.
Signals worth ingesting, and how to map them
Start with POS (or equivalent sell-through) at the grain you actually replenish. Weekly SKU, or SKU-location if DC or plant assignment changes the picture. POS is usually the earliest honest demand signal in retail and distributor networks. Orders lag. Shipments lag more. If POS coverage is partial (modern trade only, or a subset of customers), treat uncovered volume as a separate stream. Do not blend sparse POS into a national SKU forecast as if it were a census.
Promotions need a calendar, not a comment field. Capture start and end dates, mechanic (price, display, feature, coupon), expected lift owner (sales vs. brand), and which SKUs and channels are in the offer. The model can estimate lift only if like-for-like history exists for similar mechanics. A first-time bundle, a new pack size, or a retailer-exclusive SKU has no clean analog. Flag those SKUs for planner judgment instead of letting the engine invent a lift.
Weather is useful when the SKU is weather-sensitive and the forecast horizon is short enough that a forecast (not a climatology) still has skill. Outdoor, beverage, HVAC, seasonal apparel, and some building materials are the usual cases. Use the same geography as demand, not a single national temperature series. If you plan nationally but sell regionally, keep weather at the region and roll up. Do not attach a heat index to an industrial fastener.
Macro indicators (industrial production, housing starts, PMI, consumer confidence, commodity prices) belong on SKUs whose demand actually moves with those series. Capital equipment, construction-linked SKUs, and discretionary durables are candidates. Staple SKUs with stable consumption usually are not. Map each indicator to a product family first, then inherit to SKUs. A weekly SKU model that swallows an unfiltered basket of national macros will overfit noise.
Keep a signal dictionary: source system, grain, lag, refresh cadence, owner, and fail-closed behavior. POS two days late is different from POS missing for a customer that is 40% of the SKU. Promotions loaded without end dates are not promotions. Weather from the wrong region is contamination. Document the mapping once so S&OP does not relitigate it every week.
Weekly cycle: generate, exception, sign off
Run generation after the latest POS drop and after commercial has frozen next week's promo calendar (or explicitly marked it still open). Produce three artifacts per SKU in the active horizon: the multi-signal point forecast, a residual or analog-based interval if your platform supplies one, and a data-sufficiency flag.
Work exceptions, not the full catalog. Typical exception buckets:
- Large week-on-week change versus the prior signed-off forecast, after accounting for known promos.
- Forecast that disagrees with customer or sales commitments by more than your agreed band.
- New, slow-moving, or returning SKUs with thin history.
- Any SKU whose sufficiency flag is fail.
The planner (or a named backup) owns sign-off. Sign-off means: this weekly profile is the unconstrained demand the company will use until the next cycle, unless a documented emergency override is raised. It does not mean the model was right. It means a person accepted the number given the evidence on screen.
Overrides should be typed: commercial intelligence (a win/loss you trust), supply substitution (customers will take B if A is short), or data correction (POS hole, mis-coded promo). Free-text-only overrides disappear in audit. Keep the model forecast stored beside the signed-off forecast so you can see where judgment moved volume.
Do not let the engine write straight into the S&OP demand plan. Gate on status: generated, in review, signed off, withheld. Only signed-off rows feed constraint-aware MPS generation and scenario-based capacity simulation. Withheld SKUs stay visible as a gap, not as a silent zero that looks like no demand.
If two planners can sign the same family, define a RACI. Family-level consensus meetings should debate mix and mix-risk, not re-key hundreds of SKUs. SKU work happens in the exception queue before the meeting.
Withhold the SKU when evidence is insufficient
Empty is a valid forecast state. Publish nothing for that SKU-week (or SKU-location-week) when any of these hold:
- POS is missing, delayed beyond your lag SLA, or covers too little of the SKU's recent volume to represent demand. Define the coverage floor in the signal dictionary (for example, share of trailing shipments represented by POS-reporting customers). Below the floor, withhold. Do not impute a national curve from a handful of stores.
- History is too short or too broken for the algorithm you are running: new launch, long stock-out that censored demand, pack change that makes units incomparable, or a channel shift that invalidates last year's shape.
- Promotion mapping is incomplete for a week you know is on deal. A model that cannot see the mechanic will treat lift as base or miss it entirely. Either complete the calendar or withhold those weeks.
- Weather or macro inputs are stale or geographically unmatched, and those signals were supposed to be material for the SKU. Fail closed on the SKU, or fall back to a declared baseline method that does not claim to be multi-signal.
Withhold is not the same as forecast equals zero. Zero tells MPS and suppliers there is no need. A withheld SKU tells the process: do not schedule this as if the number were known. Route it to a manual method (sales estimate, analog SKU, or a conservative floor you publish as a separate, labeled series) or leave it out of constrained supply until a person writes a number.
Record the reason code. Recurring withholds on the same SKU are a master-data or customer-feed problem, not a modeling problem. Recurring withholds on a whole channel usually mean POS onboarding is unfinished. Fix the feed. Do not lower the coverage floor so the dashboard looks green.
Slow movers deserve a different rule, not a fake multi-signal story. Intermittent demand with long zero stretches is often better served by a simple policy (min display, kanban, or a lumpy-demand method) until POS density improves. Forcing weekly ML on sparse series produces jitter that production cannot use.
How the signed-off signal is used downstream
Unconstrained weekly demand is an input, not a production plan. After sign-off, pass the series into S&OP as the demand case for the current cycle. Capacity and materials work should consume that case plus explicit scenarios (upside promo, delayed launch, weather miss), not a second unofficial forecast living in a spreadsheet.
Constraint-aware MPS generation needs clean weekly (or bucketed) demand, substitution rules, and a clear list of withheld SKUs so the scheduler does not treat gaps as zero. If you hide withholds, MPS will underbuild and you will discover the miss in the plant meeting.
Scenario-based capacity simulation is where you stress the signed-off base against overtime, changeover, and freeze fences. Keep the demand model and the capacity model separate. Do not bake a capacity guess into the demand number. If the line cannot make it, that is a supply decision, not a quieter forecast.
Is this worth automating for you?
Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other. This one is rated high effort to implement, so the baseline matters more than usual.
DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.
Measure the baseline first