SupplyPulse

Overview
SupplyPulse is an inventory replenishment tool. It predicts weekly demand for each SKU, recommends reorder quantities that respect case packs and minimum order quantities, and then proves the policy with a Monte Carlo inventory simulation. Planners get three ways to use it: a local Streamlit dashboard, an Excel what-if model with live formulas, and a Power BI-ready data model.
Forecasting
A gradient-boosted model forecasts weekly demand from lag, rolling-average, promotion and seasonality features. The features are built with SQL window functions that only look backwards, and a test perturbs future rows to check that no past feature moves, so there is no leakage.
On a held-out final year, forecast error (WAPE) falls from 26.3% to 21.5% against a 4-week moving average, and from 35.7% to 23.2% in promotion weeks.

Choosing safety stock
A PuLP cost-minimization model picks a service level for every SKU. It minimizes holding cost plus expected lost-sales cost, subject to a fill-rate floor, using the forecast error measured on a separate calibration fold.
Proving it with simulation
Both policies are run against identical demand paths with lead times, case packs, MOQs and lost sales. Against the rule-of-thumb policy:
- 46% fewer stockout events (2.5% to 1.3% of SKU-weeks)
- 16% less inventory at the same fill rate, found by sweeping the baseline’s buffer into a cost/service frontier
- 23% lower holding plus lost-sales cost

Honest limits
The demo data is generated, with seasonality, trend, promotions and heavy-tailed noise, so the results show the method works rather than what a real business would see. The simulation is single-location with lost sales and no backorders, and skewed demand is under-protected by the normal-error safety stock model. The README covers these in detail.
Stack
Python · SQL (SQLite window functions) · scikit-learn · PuLP · Streamlit · Excel (openpyxl) · Power BI