There is a particular kind of silence that happens in a distribution warehouse right before a stockout. The picks keep coming in. The system confirms available inventory. And then one morning, a picker walks to bin C-14 and there is nothing there. The cycle count was off by twelve units. The reorder point was set three years ago. The forecast said demand would stay flat, but demand has been quietly accelerating for six weeks.
That acceleration was visible in the data. It just was not in anyone's dashboard.
The Signal Is Already There
Most mid-market distributors run demand reporting in one of two modes: backward-looking (what sold last week compared to last year) or trigger-based (alert when stock drops below a threshold). Neither catches the early pattern. Backward-looking reports describe what happened. Threshold alerts fire after the problem has already arrived.
The signal that matters is not current stock level. It is the rate at which demand has been changing over the prior four to eight weeks, relative to the seasonal baseline for that SKU at that location. If a specific fastener SKU at your Memphis DC normally sells 40 units per week in April and has been selling 58 units per week for the past five weeks, something has changed. A new customer, a promotional bump, a competitor stockout driving demand your way. The forecast model should have flagged this five weeks ago. Instead, the planner finds out when the bin is empty.
The six-week window is not arbitrary. It maps to the practical minimum for corrective action at a mid-market distributor: two to three weeks to recognize the trend and place a purchase order, three to four weeks for the supplier to fulfill and ship. By the time the stockout is obvious, the reorder window has closed. You are already shipping partial orders and apologizing to customers.
What to Look For in the Data
There are four specific signals worth tracking at the SKU-location level. None of them require a data science team to compute. They do require that your demand data be organized at a granularity below the product category.
1. Week-over-week velocity change. Not absolute units sold, but the rate of change. A SKU that sold 30 units last week and 35 this week has a 16% velocity increase. Compound that for four weeks at a similar rate and you are looking at demand roughly double the baseline. Most aggregate forecasting models would treat this as noise within a stable category.
2. Demand consistency across order types. Is the demand spike coming from one large customer, or is it distributed across your order base? A single large order inflating the week's numbers is different from ten orders each slightly larger than normal. The latter is a structural shift; the former may be a one-time event. Your ERP transaction data can distinguish these, but only if you are querying at the order-line level, not the weekly shipment summary.
3. Stock coverage in days, not units. An absolute inventory number means nothing without the demand rate denominator. 200 units in stock sounds healthy. At the current demand velocity of 55 units per week, that is 25 days of coverage, which means the reorder needs to go out today if your supplier lead time is three weeks. Expressing coverage in days, recalculated daily against the current demand rate, is the simplest transformation that makes inventory status legible to a planner.
4. Forecast deviation history. How often has the forecast for this SKU-location pair been wrong in the same direction for three or more consecutive weeks? Systematic bias in a single direction is a model problem, not a noise problem. If the forecast has been underpredicting this item for five consecutive weeks, the model has not captured something real about demand patterns for that product. The bias itself is the signal.
Why Category-Level Forecasting Hides These Signals
The issue is not that aggregate forecasting is wrong in an absolute sense. It is that averages hide the distribution. If your industrial hardware category has 800 SKUs and overall category demand is stable, that stability masks enormous variance at the individual SKU level. Some items are accelerating. Some are decelerating. The net at the category level is flat, so nothing triggers an alert.
This is particularly acute in multi-location distribution. A distributor with three DCs might have stable category demand nationally, but have one DC where demand for a specific SKU has been running 40% above forecast for six weeks, drawing down local stock, while another DC has the same item overstocked. The national average looks fine. The Cincinnati planner is about to create a customer service problem.
The practical solution is not to build a custom BI tool. It is to change the level at which your forecasting system operates. Forecasts need to be built per SKU-location pair, not per SKU or per category. This is computationally heavier, but it is the only way to catch location-specific demand shifts before they cascade into stockouts.
Building a Six-Week Early-Warning Habit
Implementing per-SKU-location forecasting is a longer project. But while that is underway, there are simpler practices that planners can adopt today to extend the horizon.
First, build a weekly review of your top 50 fastest-moving SKUs by location. Not top-selling by revenue, but highest weekly velocity relative to the last 90-day average. These are the items most likely to be in an acceleration phase. A 30-minute weekly review focused specifically on this list catches the signal that gets buried in a category-level report.
Second, treat any SKU with stock coverage below 35 days as a priority reorder candidate, regardless of whether the threshold alert has fired. The threshold alert is calibrated to historical demand. If demand has shifted, the threshold is too low. Coverage in days, recalculated against recent demand velocity, gives you a real-time read that threshold alerts cannot.
Third, when a planner intuitively senses something is off about a product, document it. Experienced planners frequently notice anomalies in conversation with sales or customers before the data surfaces them. Building a lightweight mechanism to track these intuitions and compare them against the data creates a feedback loop that improves forecasting over time.
The Cost of Not Looking
Stockouts at mid-market distributors rarely make the news. They surface as partial shipments, delayed orders, and the kind of customer service calls that end with a competitor getting the next PO. The cost is diffuse and hard to attribute on a monthly P&L. But aggregated across a year, the picture is clear.
A distributor with 2,000 active SKUs and a 3% annual stockout rate on high-velocity items, each stockout averaging 1.5 weeks of lost sales, loses roughly 90 weeks of revenue per year across those items. At an average gross margin of 28%, the carrying cost of that lost revenue is significant. And none of it shows up as a line item. It shows up as customer churn that nobody can quite explain.
The data to prevent most of that is already sitting in the ERP. It has been there for six weeks. The question is whether your forecasting process is structured to surface it in time to act.