MODEL LIVE — 500 SKUs TRACKED

Know what sells
before it sells out.

A production-grade demand forecasting engine for retail inventory — trained on 5 years of transaction history across 10 stores and 50 SKUs, served through a REST API with sub-second inference.

868K
training rows
14.8%
MAPE
500
store–SKU pairs
<80ms
inference time
Demand Forecast — Store 1 / Item 1
LIVE
/// pipeline

From raw transactions to a shelf-ready prediction

Five stages turn five years of point-of-sale data into a single number an inventory manager can act on.

01

Ingest

5 years of daily sales across 10 stores, 50 items — cleaned and validated.

02

Engineer

Lag windows, rolling means, cyclical calendar encodings built per SKU.

03

Train

Gradient-boosted model (LightGBM) fit across all 500 series jointly.

04

Validate

Time-based holdout — never random split — mirrors real forecasting conditions.

05

Serve

FastAPI endpoint returns a demand prediction with confidence context.

/// insights

The model explains its own reasoning

Feature importance shows recent sales momentum — not season or weekday — drives most predictions.

sales_lag_7
920
rolling_mean_7
810
rolling_mean_30
680
sales_lag_14
540
month_sin
390
dayofweek
310
Monthly seasonality — avg units/day
/// api

One endpoint. Any store, any SKU, any date.

Point-in-time demand prediction, ready to wire into a dashboard, a purchase-order script, or a WhatsApp stock alert.

POST /predict
GET /docs ↗
Connecting…
// live request — store 1, item 1, next Tuesday
{
  "store_id": 1,
  "item_id": 1,
  "target_date": "…"
}

// live response from pulse-demand-api-2.onrender.com
{ fetching live prediction… }
Note: hosted on a free instance — first request after idle can take 20–30s to wake up.
—
units predicted
—
confidence range
—
model MAPE
24/7
uptime target

Run a live prediction

/// stack

Built on a production ML stack

Python 3.13
LightGBM
Pandas / NumPy
FastAPI
Pydantic
Uvicorn
Render.com
WhatsApp Cloud API