How a reseller replaced gut feel with 86% forecast accuracy
.png)
86%
Forecast accuracy on held-out products
12M
Amazon products behind every forecast
5 mo
From raw data to a live system
TL;DR
JWC, one of Amazon's top 100 resellers, sized its monthly purchase orders by hand on historical sales and category feel.
We built a demand forecasting system on Google Cloud: behaviour clustering over roughly 12 million products, fine-tuned Chronos-2 models, and a forecast API with confidence bands.
It forecasts at 85.8% accuracy on 4,030 held-out products, including products with no sales history, and went from raw data to live in 5 months.
Ever bought Nike or Adidas gear on Amazon? Chances are it came from one of the platform’s top 100 resellers for those brands.
Every reseller at that scale loses money in the same two places: stockouts on products that were selling, and write-offs on products that were not. Both trace back to a single decision made monthly, by hand.
We rebuilt that decision around a forecast. Buyers now size purchase orders against a projected demand range with a stated confidence level, and products with no sales history at all get forecast too.
Here is how the system works, and what forecasting demand across 12 million products taught us.
The challenges
Purchasing ran on experience, category feel and Excel formulas. That carried the business for years, and it broke down in four places.
No forward-looking signal
Reviews looked backwards at historical sales. There was no systematic way to answer whether a specific product would sell, and roughly how much, over the next few months.
Capital trapped in products that never sold
Stock that does not move ties up cash, adds storage cost and eventually becomes a write-off.
Winners caught late, or missed entirely
Products sold out early because nobody spotted them in time, or nobody had the confidence to put real money behind them.
New products worst of all
A product with no sales history is pure instinct, and those are the buys where the stakes run highest.
What we built
The system sits between the reseller's sales history and its purchase orders. Products are grouped by how they behave in the market, each group gets its own forecasting model, and a confidence layer turns the raw prediction into a range a buyer can act on. A forecast API serves it to the buying team, and a drift monitor retrains the models before accuracy quietly decays.
From two data sources to a 13-week forecast range.

Two sources feed an ETL pipeline on Google Cloud: the client's own sales, units and pricing from Amazon's Selling Partner API, and large-scale external market data from Keepa, which is what lets the system say something useful about a product the client has never sold.
Both APIs throttle hard, so ingestion backs off, retries, checkpoints and resumes without double counting.
Grouping products by how they sell
K-means over roughly 12 million Keepa ASINs produces five behaviour clusters: long-tail-steady, steady-staple, seasonal-peak, spiky-promo and fast-ramp, with a silhouette of 0.52 and mean coherence of 0.74. New products route to a cold start path until they join a cluster.
This layer is where accuracy had been leaking. One global model averaging across products with nothing in common produces a number that fits none of them.

A model per behaviour, and a path for cold start
On 4,030 held-out ASINs the forecaster lands at an R² of 0.83, or 85.8% accuracy. Accuracy tapers from 88.4% in month one to 79.1% in month three, and the 80% confidence band holds 86% of the time.

One call per product, one run per month
Once a month the same forecast runs in batch against the incoming supplier list, checking projected demand and margin at supplier cost, to produce a replenishment shortlist the buying team can work straight through.
Watching its own accuracy and retraining
It currently reads a data drift PSI of 0.08 against a 0.20 threshold, and model drift of 1.3 points against an alarm at 5. The last automatic retrain was 13 July 2026, validated and promoted without anyone touching it.
Conclusion
The largest recurring capital decision in the business now runs on a number instead of an instinct: less money trapped in products that do not move, and more winners caught early. Scope has expanded since launch.
Products do not all sell the same way, and the whole system is built around that. Detect the pattern a product follows, route it to the behavioural segment and model that fit, and everything downstream works.
Want a forecasting system built like this one? Get in touch.
86%
Forecast accuracy on held-out products
12M
Amazon products behind every forecast
5 mo
From raw data to a live system
Data sources: Amazon Selling Partner API | External market data: Keepa
Pipeline: automated ETL on Google Cloud (ingest, de-duplicate, FX-normalise, aggregate)
Models: fine-tuned Chronos-2, five behaviour-cluster models plus one cold-start | Clustering: K-means, K=5
Serving: Forecast API v4 on Google Cloud Run | Horizon: 13 weeks at monthly resolution
Monitoring: Vertex AI drift detection, automated retraining, frozen-set validation, canary promotion
FAQ
How do you build an AI demand forecasting system for an Amazon reseller?
Feed Selling Partner API sales and Keepa market data through an ETL pipeline, cluster products by sales behaviour, train a forecasting model per cluster, and serve 13-week forecast ranges through an API.
How do you forecast demand for products with no sales history?
A cold start path combines the first month of sales, behavioural comparables from clustering, and a calibrated confidence layer, so a buyer gets an honest range instead of a guess.
How accurate is AI demand forecasting for e-commerce?
85.8% accuracy (R² of 0.83) on 4,030 held-out ASINs, tapering from 88.4% in month one to 79.1% in month three, with the 80% band holding 86% of the time.
How do you prevent model drift in a demand forecasting system?
Vertex AI monitors data drift and forecast error, and retrains automatically, validating against a frozen test set and promoting behind a canary. More on production AI agents.


