# Forecasting demand for fast-moving SKUs across channels
A shampoo brand runs a "buy one, get one" promotion across a national grocery chain. Their forecast said they would sell 100,000 bottles that week. They sold 140,000. Shelves emptied by Thursday. The 40% forecast error meant lost sales, angry retail partners, and a scramble to expedite freight at triple the normal cost.
This is the daily reality of demand forecasting for fast-moving consumer goods. When your SKUs (Stock Keeping Units, the individual product variants like "Shampoo, Anti-Dandruff, 400ml") move fast and sell across many channels, small forecast errors compound into big money.
Let us walk through how AI changes this.
Traditional forecasting uses history. If you sold 100,000 bottles last week, you will probably sell about that this week. This works fine for stable, slow-moving products.
Fast-moving SKUs break this logic for three reasons:
Promotions create spikes. A price cut or feature display can double or triple demand for a week, then depress it afterward as shoppers stock up. History alone cannot predict a spike that has not happened yet.
Channels behave differently. The same shampoo sells through grocery, drugstores, and e-commerce. E-commerce demand reacts to search trends and paid ads. Grocery demand reacts to in-store displays. A single forecast for "shampoo" hides these differences.
External factors matter. Heat waves lift demand for deodorant and cold drinks. Rain shifts shopping online. A traditional model that ignores weather is blind to these swings.
The result: a naive model that averages past sales will always be surprised by exactly the events that matter most.
The core idea is simple. Instead of using only past sales, an AI model learns the relationship between demand and many signals at once. Here are the main ones for FMCG.
POS data (Point of Sale). This is the scanner data from checkouts, showing what actually sold, where, and when. Retailers often share it through platforms or data pools. POS is more accurate than shipment data because shipments tell you what left the warehouse, not what the shopper bought.
Promotion calendar. A structured record of every planned price cut, display, coupon, and feature, by SKU, store group, and week. This is often the single most predictive input for fast movers.
Weather. Temperature, rainfall, and forecasts. Especially powerful for seasonal or weather-sensitive categories (ice cream, sunscreen, soup).
Pricing. Both your price and competitor prices. Demand is sensitive to relative price, not just absolute price.
Search and web signals. For e-commerce, search volume and site traffic lead sales by days or weeks.
Calendar events. Holidays, paydays, school terms, major sporting events.
The AI model finds patterns like "when we run a BOGO promo AND the temperature is above 30 degrees AND it is the week before payday, deodorant sales jump 55%." No human can hold all these interactions in their head. A model can.
Most modern FMCG forecasting uses gradient boosted trees (a machine learning method that builds many small decision rules and combines them) or deep learning models designed for time series. You do not need to know the math. You need to know the shape of the workflow.
Here is a simplified view of the feature table that feeds the model. Each row is one SKU in one store (or channel) for one week.
# Simplified training data structure
features = [
"sku_id", "channel", "store_cluster", "week",
"units_sold_last_week", "units_sold_last_year",
"on_promo", # 1 if promotion active
"promo_type", # BOGO, price_cut, display
"discount_depth", # e.g. 0.30 = 30% off
"avg_temp_c",
"competitor_on_promo",
"days_to_payday",
"is_holiday_week"
]
target = "units_sold" # what we predictThe model trains on years of these rows, learning how the target responds to each feature. To forecast next week, you fill in the known future values (the promo is planned, the weather is forecast, the calendar is fixed) and the model predicts units sold per SKU per channel.
For a deeper but still accessible primer on the underlying techniques, Google's Machine Learning Crash Course is free and well structured.
The shampoo brand does not need one forecast. It needs a forecast for each channel because each behaves differently and each has different lead times.
Grocery and drugstore (retail). Demand driven by promotions and shelf presence. Lead times are longer, so forecasts feed into replenishment orders weeks ahead. Errors here cause empty shelves or overstock that ties up cash.
E-commerce (own site and marketplaces). Demand driven by search, ads, and delivery promises. Faster reaction, shorter lead times, but also more volatile. A single influencer post can spike demand overnight.
Quick commerce (rapid delivery apps). Very short shelf life on decisions. Demand is hyper-local and time-of-day sensitive.
A good practice is hierarchical forecasting: predict at the fine level (SKU by store by day) and at aggregate levels (SKU by region by week), then reconcile them so the numbers add up. This prevents the common failure where store-level forecasts sum to something wildly different from the national plan.
Back to our shampoo brand. The 40% miss happened because the old model treated a BOGO week like a normal week.
With an AI model that includes the promotion calendar and promo type as features, the model has learned from dozens of past BOGO events that this specific promo, on this specific SKU, in these stores, lifts demand by roughly 45%. It also learned the pantry loading effect: the two weeks after a promo dip below baseline because shoppers already stocked up.
The practical payoff is not perfect accuracy. It is narrowing the error band and, crucially, quantifying uncertainty. Good models output not just "140,000 units" but a range like "120,000 to 160,000 with 80% confidence." Supply chain teams use that range to set safety stock intelligently instead of guessing.
Knowledge check
1. Why does traditional history-based forecasting tend to fail most badly for fast-moving SKUs during promotions?
2. A single aggregate forecast for 'shampoo' across grocery, drugstore, and e-commerce is problematic mainly because:
3. What is the core conceptual advantage of an AI model over a naive averaging model for FMCG demand?
4. Select ALL correct answers about why external factors like weather matter for FMCG forecasting.
Select all the correct answers.
5. Select ALL correct answers about why small forecast errors become costly for fast-moving SKUs.
Select all the correct answers.
Garbage promo data. The promotion calendar is often maintained in spreadsheets by sales teams, riddled with errors and last-minute changes. If the calendar says no promo but a store ran one anyway, the model learns the wrong lesson. Clean promo data is the highest-leverage fix in most FMCG forecasting projects.
Ignoring the cold-start problem. New product launches have no history. AI cannot learn from data that does not exist. For new SKUs, use analogs (forecast based on similar past launches) and blend in human judgment.
Over-trusting the model during rare events. A pandemic, a supply shock, or a viral moment falls outside the training data. Keep humans in the loop for anomalies. The model is a co-pilot, not an autopilot.
Forecasting the wrong metric. Optimizing for lowest average error can hide big misses on your most important, highest-margin SKUs. Weight your accuracy measures by value, not just volume.
Two metrics dominate FMCG forecasting.
MAPE (Mean Absolute Percentage Error): the average size of your errors as a percentage. Lower is better. Fast movers with heavy promotions often sit in the 20% to 40% range for weekly SKU-store forecasts even with good models, so context matters.
Bias: are you consistently over or under forecasting? Bias is often more damaging than random error because it systematically drains cash into excess inventory or starves shelves.
Track these by channel and by promo versus non-promo weeks separately. An overall MAPE that looks fine can hide a disastrous promo-week performance, which is exactly where the money is.