Brightmoor Foods · 2026
Forecasting fresh produce for Brightmoor against waste cost, not average error
Four days of shelf life and a median of three units per store-SKU per day, which is too thin for per-store models. We pooled into category models trained on the newsvendor quantile instead of average error, taking waste from 6.1 to 2.9 per cent while availability rose to 98.7 per cent.
- Agritech
- 7 months
- 5 engineers, 2 data scientists, 1 delivery lead
- 6.1% to 2.9%
- Units written off as waste
- 98.7%
- On-shelf availability, up from 96.1%
- 40 minutes
- Weekly retraining across 5.6m series
The challenge
What was wrong
Brightmoor forecasts produce with four days of shelf life across 6,200 SKUs and 900 stores, and commits volumes to growers 10 days ahead. Spreadsheets plus a flat safety stock were throwing away 6.1 per cent of units while still missing 4 per cent of demand. The median store-SKU sells three units a day, far too thin for per-store models, and promotions and weather move demand considerably more than the seasonal baseline does.
The approach
What we did
We pooled data into category-level gradient-boosted models with learned store embeddings rather than fitting 5.6 million series independently, and trained against pinball loss at the quantile implied by each SKU's margin against its waste cost. That optimises the ordering decision rather than the forecast number. Predictions are reconciled across store, region and grower commitment so the totals agree. Retraining runs weekly in 40 minutes; we chose weekly over daily to keep grower orders stable.
“They argued us out of chasing forecast accuracy and into optimising the ordering decision instead. Waste halved. The accuracy metric barely moved at all.”
Stack
What it runs on
- Python
- LightGBM
- Feast
- Airflow
- Snowflake
- dbt
- FastAPI
- React
Services
Practices involved
AI & Data
Machine Learning
Forecasting, ranking and detection models that keep working after the data shifts.
AI & Data
Data Engineering
Pipelines with contracts, tests and an on-call rota, not a folder of scheduled scripts.
AI & Data
Business Intelligence
One definition per metric, and a report someone actually opens on Monday morning.
Engineering
Web Application Development
Browser-delivered software measured on the slowest device your users actually own.
More work
Other engagements
Meridian Exchange · 2024
Bidding engine rebuild
Meridian was losing bids to lock contention in the closing seconds of every auction, and disputes over bid order had to be settled manually. We rebuilt the engine around per-lot single-writer partitions and an append-only log, trading cross-lot transactions for provable ordering at 1,800 bids per second.
Kestrel Industrial · 2023
Shop-floor system modernisation
Four plants, 300 machines and a VB6 application nobody could test safely. We replaced it one production cell at a time behind a routing gateway, keeping Oracle as the book of record until the final cell was live. Total unplanned stoppage across the entire programme came to 11 minutes.
Northwind Commodities · 2025
Incremental end-of-day valuation
A seven-hour overnight batch left Northwind's traders working from yesterday's P&L whenever a curve was corrected. We replaced it with an incremental graph over versioned inputs, cutting the full run to 34 minutes and a curve correction to 90 seconds, with 12 months of valuations replayable to the input.

