Retail inventory forecasting AI: cutting stockouts and overstock to single-digit forecast error
A chain beauty retailer faced a dual problem: serum out of stock for four days in the northern region while 2,000+ slow-moving holiday gift boxes sat in the warehouse. Both issues traced to the same cause: inaccurate forecasts. Over three months, we reduced demand forecast error from 37% to 8.6%, cut stockout rates by 70%, and reduced slow-moving inventory by 60%. This article examines what changed and the challenges we encountered with data quality, promotional causality, and model drift.
By
Tenten AI 交付團隊
產業交付
Published
November 9, 2025
Read time
5 分鐘

Last winter, we took over replenishment issues for a chain beauty retailer. They operated 78 store locations with roughly 3,200 SKUs, and weekly replenishment decisions came down to three senior buyers using gut feel and Excel. One week before their peak season that year, a hot-selling essence serum went out of stock for four days in the northern region, while the website still showed 'in stock.' At the same time, the warehouse held over 2,000 slow-moving holiday gift boxes. Once they reached their expiration date, they had to be written off.
One side out of stock, the other side overstocked. Not a contradiction. The same root cause: bad forecasts.
I pulled their historical data and ran the numbers. Overall demand forecast MAPE came in at 37%. Put plainly: for every 10 units ordered, nearly 4 were wrong. Stockout penalties from above, write-off losses piling up, three people working overtime every day revising orders. In that state, hiring two more buyers wouldn't have fixed it.
Retail inventory forecasting: what it predicts
Retail inventory forecasting AI doesn't provide a fixed number, such as 'you'll sell X units next month.' Instead, it forecasts the probability distribution of demand for each SKU, at each location, for each day. This distinction matters: traditional methods produce a point estimate while this approach yields a curve. It shows how much safety stock you need at a 95% service level versus 80%. Replenishment decisions become less about guessing a quantity and more about selecting an acceptable risk level.
We didn't rip and replace. First step was connecting data scattered across their POS, ERP, e-commerce backend, and store managers reporting in LINE group chats into a unified feature table. Just that step took six weeks. The real challenge was never the model, it was the data. Store managers manually overriding inventory numbers, promotional gifts that weren't logged, inter-store transfers that never got recorded. Poor data quality produces poor model output.
The model is straightforward. We used LightGBM as the foundation, feeding in features like price, promotion flags, weather, seasonal indicators, neighboring store sales, and social media volume. For long-tail, low-frequency SKUs, we added hierarchical Bayesian estimation, letting slow-moving items borrow demand patterns from similar categories. We avoided deep learning because retail demand signals are typically structured. Gradient boosting trees offer more value for the complexity involved.
The numbers after three months
We rolled out in shadow mode first, using 12 store locations and a single category. The AI generated replenishment suggestions daily, but the buyers continued with manual orders. We ran both processes in parallel. After five weeks, adoption of AI suggestions rose from 30% to 71%. Trust built, and we switched over completely.
Below are the changes three months after going live, compared to the same period before rollout:
| Metric | Pre-Implementation | Post-Implementation | Change |
|---|---|---|---|
| Demand Forecast Error (MAPE) | 37% | 8.6% | Into single digits |
| Store Stockout Rate | 11.2% | 3.4% | ~70% reduction |
| Slow-Moving Inventory (90+ days no movement) | 18% | 6.5% | ~60% reduction |
| Average Inventory Turnover Days | 74 days | 49 days | 25 days faster |
| Promotional Period Forecast Accuracy | ~55% | 88% | Not applicable |
Reducing forecast error from 37% to 8.6% required three elements: clean data, forecast granularity down to location-by-product-by-day, and the inclusion of exogenous variables like promotions and weather in features. The stockout rate fell 70% alongside a 60% reduction in slow-moving inventory. Both metrics improving together indicates genuine forecast improvement. If only one had changed, the adjustment would typically be a global increase or decrease in safety stock, addressing the symptom rather than the root cause.
What went wrong
Some product categories resisted this approach. New products and highly seasonal limited editions have sparse historical data. Model confidence intervals become so wide they offer little practical guidance. For these items, we recommended the client retain human judgment rather than force the AI to work on them. Additionally, promotional effects are complex. The same 30% discount produces different demand elasticity in an anniversary sale versus a clearance event. In the first three months, the model struggled here. Once we tagged promotional 'intent' as a feature, performance stabilized.
Model drift poses a persistent challenge. Consumer behavior shifts every quarter. We implemented weekly backtesting. When metrics degrade for two consecutive weeks, the system automatically alerts and retrains. Without this monitoring, even an accurate model degrades over time. Launch-day accuracy is not the end point.
Our process was consistent: engineers went on site and built the data pipeline, model, monitoring, and daily procurement workflow with the team. We remained until the buyers integrated it into their daily work and KPIs improved. Achieving 8% error in tests proved less important than maintaining full shelves and preventing warehouse overflow.

One stuck workflow
is enough to begin
Tell us what the team does today, where it breaks down, and what a better working day should look like.