AI Development

Bramwell Grocers

A demand forecasting model for a regional grocery chain that cut food waste by predicting store-level demand instead of ordering off manager intuition.

Bramwell Grocers — A demand forecasting model for a regional grocery chain that cut food waste by predicting store-level demand instead of ordering off manager intuition.

Industry

Retail & E-commerce

Timeline

14 weeks

Team

2 ML engineers, 1 data engineer

Category

AI Development

The challenge

Where things stood

Bramwell's store managers ordered perishable inventory based on gut feel and last week's numbers, which meant chronic overordering on some items and stockouts on others across 40 stores.

The approach

How we got there

01

Store-level historical pipeline

Built a data pipeline covering two years of store-level sales, seasonality, and local events to train against, cleaning up inconsistent SKU naming across stores first.

02

Demand forecasting model

Trained a model to forecast store-level demand per SKU a week out, accounting for seasonality and local promotions.

03

Manager override loop

Gave store managers the ability to override a forecast with a reason code, feeding that feedback back into future model retraining instead of ignoring local knowledge.

The results

What changed

~22%

Reduction in perishable food waste

40

Stores forecasting through the model

~15%

Fewer stockouts on high-turnover items

Under the hood

Tech stack

Python

The language for the forecasting pipeline and model training.

PyTorch

Trains the store-level demand forecasting model.

scikit-learn

Handles feature engineering and baseline forecasts used to validate the model's lift.

AWS SageMaker

Runs training and serves weekly forecasts to each store.

PostgreSQL

Stores historical sales, forecasts, and manager override reason codes.

Docker

Packages the forecasting pipeline consistently across environments.