
Demand Forecasting Engine for a Fast-Fashion Retailer's Micro-Batch Buying
Let's Connect
Overview
What we built
A fast-fashion retailer was guessing what would sell: hits vanished in days while slow movers piled into markdowns. We built a forecasting engine that tells buyers what to order, in which sizes, before the trend passes.
In plain terms: the retailer's 30 stores and growing online arm were buying stock on instinct. When a style took off it sold out within days and the reorder arrived after the moment had passed. When a style flopped it sat on racks until markdowns cleared it, and those markdowns were consuming 22% of revenue. Buyers worked from month-old sales exports and had no view of which sizes were actually in demand.
We built a demand forecasting engine that reads sales history, product attributes, web behaviour and seasonality together, and predicts demand for every style and size for the weeks ahead. Buyers now see ranked reorder recommendations and suggested first-order quantities in a planning dashboard, so they can buy small, watch what proves itself, and replenish winners quickly. Forecast accuracy rose from 61% to 82% within two buying seasons, markdowns fell from 22% to 14% of revenue, and full-price sell-through improved from 48% to 63%.
The Problem
Sell-outs and markdown mountains
Fast fashion punishes guesswork twice. Buy too little of a winner and it sells out within days, leaving empty rails exactly when demand peaks. Buy too much of a loser and it lingers until markdowns move it, and at this retailer markdowns had grown to consume 22% of revenue. Both failures were happening at once, season after season, across 30 stores and a growing online arm.
The buying team was not careless; it was blind. The freshest data available was a month-old sales export, which in a business measured in weeks meant every decision was made on a trend that had already moved. There was no view of size-level demand at all, so even when a style was clearly winning nobody knew whether to reorder more smalls or more larges.
The reorder problem was the sharpest edge. Winning styles announce themselves within days of hitting stores, but the signals were buried in exports nobody would see for weeks. By the time a reorder was placed the trend window had closed, and the second batch arrived just in time to be marked down.
Instinct-led buying
Initial buy quantities came from experience and gut feel, so the same season produced sell-outs on hit styles and markdown piles on misses.
Month-old data
Buyers worked from sales exports a month behind reality, reading trends that had already peaked or passed by the time decisions were made.
No size-level view
Demand was only visible at style level, so stores ran out of popular sizes while unpopular ones filled the markdown racks.
Reorders too late
Winning styles were reordered after the trend window closed, so replenishment stock arrived as full-price demand was fading.
What it was costing them
Markdowns were swallowing 22% of revenue, which is margin handed back to clear buying mistakes. Full-price sell-through of 48% meant fewer than half of garments earned their intended price. Sell-outs on hit styles turned the strongest demand of the season into empty rails and disappointed shoppers, and every late reorder converted a trend the retailer had actually spotted into stock it would eventually discount.
The Solution
Style-level demand forecasting
We built the forecasting engine around the signals the business already generated but never combined: sales history, product attributes, web behaviour from the online arm, and seasonality. Together they let the models predict demand at the level buyers actually need, per style and per size, for the weeks ahead rather than the month behind.
Forecasts only matter if they change orders, so the engine's output lands in a planning dashboard as ranked reorder recommendations and suggested initial buy quantities. A buyer opening the dashboard sees which styles the models expect to win, how many units to commit, and how the size curve should split, with the reasoning traceable back to the underlying signals.
The operating model changed with the tooling. Instead of one large instinct-led commitment per style, buyers now place smaller first orders, let early sales and web behaviour confirm or deny the forecast, and replenish proven sellers quickly on the engine's recommendation. The risk of each individual buy shrinks, and the winners get the stock they deserve while the trend is still alive.
Key decisions
Forecast styles and sizes together
The engine predicts demand per style and per size, because a style-level forecast that ignores the size curve still leaves stores out of stock where it matters.
Use web behaviour as an early signal
Online views and engagement move ahead of till receipts, so the models read the web arm as an early indicator of which styles are catching.
Recommend, ranked and quantified
Buyers get a ranked reorder list with suggested quantities rather than raw model output, keeping the decision with them but starting from evidence.
Smaller first orders, faster replenishment
The buying strategy shifted to modest initial commitments with data-backed replenishment of proven sellers, cutting the downside of any single miss.
Measurable Impact
What changed after launch
Style-level forecast accuracy improved from 61% to 82% within two buying seasons, and the commercial results followed the accuracy. Markdown share of revenue fell from 22% to 14%, full-price sell-through rose from 48% to 63% across the store network, and the stockout rate on top-50 styles dropped by 35% even as overall inventory fell 18%.
The numbers describe a calmer business. Buyers commit less capital to any single guess, winning styles stay on the rails through their trend window, and the markdown racks have thinned because fewer buying mistakes need clearing. The month-old export has gone from being the basis of every decision to a historical artefact nobody misses.
Forecast accuracy
61% at style level, instinct filling the gaps
82% within two buying seasons
Markdown burden
Markdowns consuming 22% of revenue
Reduced to 14% over the same period
Availability
Hit styles selling out within days
Top-50 stockouts down 35%, inventory down 18%
Full-price selling
48% of garments sold at intended price
63% full-price sell-through across the network
Headline results
Style-level forecast accuracy improved from 61% to 82% within two buying seasons
Markdown share of revenue reduced from 22% to 14% over the same period
Stockout rate on top-50 styles dropped by 35% while overall inventory fell 18%
Full-price sell-through improved from 48% to 63% across the store network
Tech & Tools Used
What powered the build
Every tool below earned its place in this engagement. Here is the part each one played.
Python (Pandas)
The workbench for preparing sales history, product attributes and web behaviour into the feature sets the demand models train on.
XGBoost
The core gradient-boosted models predicting style-and-size-level demand for the weeks ahead from the combined sales, attribute and seasonality features.
scikit-learn
Handled feature pipelines, model evaluation and the baseline models the gradient-boosted forecasts were judged against.
Apache Airflow
Orchestrates the recurring forecast runs, from refreshing source data through retraining and scoring to publishing new reorder recommendations.
dbt
Models the raw sales, product and web data into clean, tested tables so every forecast run starts from consistent definitions.
PostgreSQL
The operational store for forecasts, recommendations and buying decisions, serving the planning dashboard's queries.
FastAPI
Exposes the forecasting engine's outputs as an API, feeding ranked recommendations and suggested quantities to the planning dashboard.
React
The planning dashboard buyers use daily to review ranked reorder recommendations, size curves and suggested initial buy quantities.
AWS S3
Holds the raw sales exports, web behaviour extracts and model artefacts that the pipeline picks up and versions on every run.
Ready to Build your Fashion Retail Business with Predictive Modeling & Forecasting
Ask Byte
Ask Byte
Typically replies instantly
just Now
Hi! I'm OrganByte's assistant. How can I help you today?
AI-generated content may be incorrect

