A $50M supplement brand we work with has 190 SKUs, four warehouses, and a forecasting spreadsheet that one person on the operations team rebuilds every Monday morning from yesterday's Shopify data. By Tuesday afternoon, the forecast is stale because Meta launched a new ad campaign that's driving 3x the usual volume on one SKU. By Friday, that SKU is out of stock. The pattern repeats every quarter.
This is what demand forecasting actually looks like at $20-100M D2C revenue. Not the textbook version where a model predicts next quarter's sales within 5%. The version where exogenous events (a viral TikTok, a competitor stocking out, a Meta ad campaign, an influencer post) drive most of the variance, and the spreadsheet rebuild can't keep up.
This is the operator's guide to what works, what doesn't, and how AI fits in honestly. No promises of a magic model. A clear pattern that compounds.
What demand forecasting actually means at mid-market
The textbook definition of demand forecasting is "predicting future sales using historical data and statistical models." That definition is correct and largely useless at $20-100M D2C revenue. Here is the more useful framing.
Demand forecasting at mid-market is three distinct jobs running in parallel:
- Baseline forecasting: how much will we sell of each SKU over the next 4, 8, and 12 weeks, assuming nothing weird happens. Boring. Largely solvable with moving averages and seasonality adjustments. Does not require AI.
- Exception monitoring: when actual sales diverge from the baseline by more than 30 percent in either direction, flag it and explain why. This is where most operators fail. They have the baseline but no signal when reality breaks from it.
- Scenario modeling: if we spend $50K on Meta this week on SKU-A47 at current ROAS, what does inventory look like in 14 days? This is where AI starts to earn its keep, because the scenarios are too varied to hard-code as spreadsheet formulas.
The brands that get demand forecasting right at this revenue band are the ones who treat it as these three jobs, not as a single forecasting model. The brands that fail are the ones who buy a $30K/year SaaS forecasting tool and expect it to solve everything.
Why traditional methods break at $20-100M D2C
Traditional demand forecasting (the methods taught in MBA programs and built into legacy ERP modules) work well in two situations: stable B2B businesses with long order cycles, and very large brands with thousands of SKUs where the law of large numbers smooths out individual variance.
Neither situation describes a mid-market D2C brand. At $20-100M D2C, you typically have:
- 50-500 SKUs (too few for law of large numbers, too many for individual attention)
- Highly variable demand driven by paid media, influencer cycles, seasonality, and exogenous events
- Short sales cycles (orders ship same-week, not next-quarter)
- Real-time pricing and promotion changes that disrupt baselines
- Multi-channel distribution (Shopify + Amazon + retail + wholesale) with different demand patterns each
Run a 6-month moving average against this and your forecast will be wrong on the SKUs that matter most (the volatile ones), right on the SKUs that don't matter (the stable ones). The traditional method optimizes for the wrong distribution.
The five inputs that actually matter
Before any forecast can work, you need five data inputs landing in one place. Most failed forecasting implementations at mid-market fail here, not at the model layer.
- Historical sales by SKU by day: at minimum 12 months, ideally 24+. Source: Shopify, Amazon, ERP. Update daily.
- Current stock by SKU by warehouse: source: 3PL or ERP, real-time or near-real-time.
- Demand signals: ad spend by SKU and channel (Meta, Google, TikTok), email send dates (Klaviyo), influencer post dates, Amazon BSR rank changes, search trend data. This is the layer most brands ignore, and it's the layer that explains 70% of the variance.
- Vendor lead times by SKU: PO history, on-time delivery ratios, average lead time. Source: ERP. Used to compute reorder points.
- Calendar and promotion data: planned launches, planned promotions, planned ad spend ramps, planned retail resets. Source: ops team's plan, often a Notion or Asana board nobody piped into the forecasting system.
The brands that nail forecasting spend the first 30 days of a forecasting project getting these five inputs reliable, before they touch a model. The brands that fail spend the first 30 days choosing a forecasting tool. We cover the broader e-commerce data architecture in the AI for e-commerce operations playbook.
The baseline forecast: simpler than you think
For 80 percent of SKUs at $20-100M D2C, the baseline forecast that beats both your gut and most SaaS tools is a weighted moving average adjusted for seasonality. That's it. No ML, no time-series transformer, no fine-tuned model.
The formula:
- Take the last 12 weeks of daily sales for the SKU
- Weight recent weeks 2x more than older weeks (recency matters)
- Multiply by a seasonality index for the current week of year (computed from year-over-year history)
- Output: expected sales for the next 4 weeks
This will be within 15-20% accuracy on stable SKUs. That's good enough to drive reorder decisions. The brands shipping "ML-driven demand forecasting" with 75% accuracy claims are usually benchmarking against zero-effort baselines, not against this kind of weighted moving average.
The 20% of SKUs where this fails are the SKUs driven by exogenous demand signals (new products, ad-driven SKUs, viral items, seasonal hero products). For those, the baseline is wrong by 50-200% in either direction. This is where you need the exception monitoring layer.
The exception monitor: where AI earns its place
The single highest-ROI AI use case in demand forecasting at mid-market is the exception monitor. It runs in the background, watches actual sales against the baseline forecast, and proactively flags when reality is diverging.
The pattern that works:
- Every morning, the system computes baseline forecast for the next 4 weeks per SKU.
- Every evening, it pulls actual sales for the day and compares against the implied daily rate.
- When divergence exceeds a threshold (typically 30% for 2+ consecutive days), it triggers a Slack alert to the operations lead.
- The alert includes: the SKU, the divergence percentage, the projected stock-out date or overstock risk, and a suggested cause pulled from the demand signal layer ("Klaviyo flow ABC sent yesterday to 50K subscribers" or "Meta ad spend on this SKU increased 4x last 3 days" or "Amazon BSR rank improved from 15K to 4K").
- The ops lead can either confirm the cause and trigger a reorder/markdown, or override the system.
This is the AI layer. Not the baseline forecast, which is statistics. The exception monitor is what catches the "we spent $50K on Meta and now we're going to stock out in 9 days" moment 7-10 days earlier than a human eyeballing dashboards would catch it.
For a $50M supplement brand we built this for, the exception monitor caught 14 stock-out events in the first 90 days that would have hit before the inventory reorder cycle could respond. The recovered margin paid for the entire implementation in 60 days.
Scenario modeling: what AI does that nothing else can
The third layer is scenario modeling. This is the highest-leverage use of AI but also the one most brands skip because they can't visualize it.
What scenario modeling answers: "If we run a Meta campaign at $X spend with Y ROAS on SKU-A47 starting next Monday, what does inventory look like in 14, 28, and 56 days? Do we need to expedite the reorder PO?"
This is impossible to encode in a spreadsheet because the variables compound. The AI's job: take the baseline forecast, apply the projected demand lift from the planned campaign, intersect with the planned reorder date, surface where the stockout risk sits.
For a brand we work with, this scenario layer is now built into the weekly marketing planning meeting. The marketing lead proposes a campaign. The AI returns: "At your projected ROAS, this campaign will sell out SKU-A47 by day 11. Your next PO arrives day 18. Options: pull the reorder forward by 7 days, cap the ad spend at $30K, or accept the stockout." Marketing and ops make the decision together with the actual numbers.
Build vs buy at $20-100M revenue
The build-vs-buy question for demand forecasting is more nuanced than vendors suggest.
Buy off-the-shelf: products like Inventory Planner, Cogsy, Genially, and Toolio sell SaaS demand forecasting for D2C. Cost: $500-3,000/month. They handle the baseline well for sub-$20M brands. At $20-100M, they fail in two ways: their exception monitoring is weak (alerts are noisy and infrequent), and they can't ingest your specific demand signal layer (your Klaviyo flow data, your influencer calendar, your retail reset dates).
Build custom: hire a data engineer + ML engineer internally. Cost: $300K-$500K/year loaded. Time to first useful system: 9-15 months. Most brands at this size do not have the senior data engineering talent to make this work and end up with a half-built system that nobody trusts.
Buy the OMS, build the AI layer, partner for the integration: the pattern we recommend on most engagements. Use a real OMS as the source of truth (see our guide to order management systems), build the exception monitor and scenario layer as custom code on top, hire an external partner to wire the data layer correctly. Total cost: $80K-$150K project + $12-20K/month ongoing. Time to first value: 60-90 days.
What to ignore
The demand forecasting category is full of vendors selling pseudoscience. Three claims to ignore at mid-market:
- "Our ML model is 95% accurate." Accuracy depends entirely on what you measure against. If they're measuring against a baseline of "do nothing," 95% is trivial. If they're measuring against a weighted moving average, 95% on volatile SKUs is essentially impossible because the variance is exogenous, not learnable.
- "Fine-tuned forecasting model trained on your data." At $20-100M D2C, your sales data is too sparse to fine-tune a useful model. Frontier models with retrieval + the weighted moving average baseline outperform fine-tuned alternatives 9 out of 10 times. We cover this argument in depth in our Microsoft AI for mid-market hub.
- "Predictive analytics will eliminate stockouts." No, it won't. Stockouts come from supply chain disruption, vendor failures, and demand spikes that no model can predict. What forecasting can do is shorten the time between event and response from 14 days to 24 hours. That's the actual ROI.
The 90-day rollout pattern
For a mid-market D2C brand starting a forecasting project from scratch, here's the pacing that works:
- Weeks 1-3: Inputs. Get the five data inputs landing reliably. ERP, demand signals, calendar. Skip this and the rest fails.
- Weeks 4-5: Baseline. Build the weighted moving average + seasonality model. Run it nightly. Store outputs in a structured table.
- Weeks 6-7: Exception monitor. Wire the Slack alerts. Tune the divergence threshold. Get the ops lead to confirm 5-10 alerts before declaring it production-ready.
- Weeks 8-9: Scenario modeling. Build the marketing-meeting-friendly query interface: "what if we spend X on Meta this week."
- Weeks 10-12: Embed. Per-team playbooks. Train ops and marketing on the new workflow. Measure adoption weekly.
This follows the same SOLVE Framework pacing we use across every engagement.
Common failure modes
- Choosing the tool before fixing the inputs. Same failure as every other AI project. Spend the first 30 days on data, not vendors.
- Forecasting daily when you should be forecasting weekly. Daily forecasts are noisy and lead to over-reaction. Weekly is the right granularity for reorder decisions at mid-market.
- Treating it as a finance project. Demand forecasting is an operations project. If finance owns it, it becomes a backward-looking report. If ops owns it, it becomes a forward-looking decision tool.
- No alert hygiene. Alerts that fire 10 times per week get ignored. Calibrate the divergence threshold so you get 2-5 high-quality alerts per week, not 50 noisy ones.
- Skipping the embed phase. The forecast that nobody acts on is worse than no forecast. Make sure the ops lead and the marketing lead are both consuming the output every Monday.
Frequently asked questions
What is demand forecasting in plain English?
Demand forecasting is the practice of predicting how much of each product you will sell over a future period, so you can order the right amount of inventory and avoid both stockouts and overstock. At mid-market D2C, it splits into three jobs: baseline forecasts, exception monitoring, and scenario modeling.
What software is best for demand forecasting at $20-100M D2C?
For sub-$20M brands, off-the-shelf tools like Inventory Planner, Cogsy, or Toolio work fine ($500-3,000/month). At $20-100M, the off-the-shelf products fail on exception monitoring and demand signal integration. The pattern that works is a real OMS as the data layer, plus custom AI code for the exception and scenario layers. Total cost typically $80-150K project + $12-20K/month ongoing.
How accurate should a demand forecast be?
Realistic accuracy targets at $20-100M D2C: 80-90% on stable SKUs (12+ weeks of stable history), 50-70% on volatile SKUs (recently launched, ad-driven, seasonal). Vendors claiming higher than this are usually measuring against a "do nothing" baseline that exaggerates their advantage.
Do I need machine learning for demand forecasting?
For the baseline forecast, no. A weighted moving average with seasonality adjustment beats most ML models at this revenue band because the data is too sparse and variance too exogenous. ML earns its place in two narrower jobs: exception monitoring (classifying alert priority) and scenario modeling (reasoning across multiple variables).
What demand signals matter most?
For D2C: paid ad spend by SKU and channel, email send dates, influencer post dates, Amazon BSR rank changes, and Google search trend data. The brands that integrate these signals into their forecast catch 80-90% of demand spikes 7-10 days earlier than brands relying on sales data alone.
How long does it take to roll out a forecasting system?
For a mid-market brand starting from spreadsheets: 90 days to a production system that drives reorder decisions, assuming the five data inputs are accessible. Compress this to 30-60 days if the data layer is already clean (rare). Stretch to 6-9 months if the data is fragmented (more common).
Bottom line
Demand forecasting at $20-100M D2C is not about a better model. It is about the right inputs, a simple baseline forecast, an aggressive exception monitor, and scenario modeling that the marketing team actually uses. Brands that try to skip to "the model" without fixing the data layer ship a forecast nobody trusts. Brands that invest the first 30 days in the data and the rest in the workflow ship a system that pays for itself within the first quarter.