Engineers Clinic
IntermediateSoftware trackFP-AI-04

Store-level demand forecasting for a grocery chain, with honest backtesting

Forecast daily sales per store and product family 14 days ahead, beat a seasonal-naive baseline in a rolling backtest, and turn the forecast into order quantities.

AI, Data & AnalyticsData Science
6 Guided Steps44h Internship TierSubmit: GitHub repo with pipeline + reports/backtest.md with fold-by-fold results + order-rule notebook + one-page store-manager noteVerified CertificateAI Rubric Graded
Program Overview

Industry project · for FreshCart Grocers, a 38-store regional supermarket chain with a central distribution centre

FreshCart runs 38 supermarkets supplied from one distribution centre. Store managers order fresh and packaged goods by gut feel, two weeks ahead. The result: about 4.5% of fresh produce is thrown away, and on busy weekends the top 200 products run out in about 1 store in 6. Finance estimates the waste alone at 2.3% of fresh revenue.

The supply-chain head wants a forecast for each store and product family, 14 days ahead, refreshed weekly. He has been burned before: a consultant showed a model with "97% accuracy" that fell apart in its first month because it had been tested on the same period it was trained on.

You will use a public retail dataset with daily store sales, promotions, holidays and oil prices (the Kaggle "Store Sales — Time Series Forecasting" data is a good fit), treat its stores as FreshCart's, and build: - a seasonal-naive baseline (same day last week); - a gradient-boosted model with calendar, promotion and lag features; - a rolling-origin backtest with at least 6 folds of 14 days each; - a simple order rule that turns the forecast into a suggested order with a safety buffer.

The target is a weighted MAPE at least 15% lower than the baseline across the backtest, without any fold being worse than the baseline by more than 5%. Done looks like a re-runnable pipeline, a backtest report with fold-by-fold numbers, and a one-page note for store managers explaining how to read the forecast.

Time-series forecastingRolling-origin backtestingFeature engineering with lagsGradient boostingForecast error metricsInventory basics
What you submit

GitHub repo with pipeline + reports/backtest.md with fold-by-fold results + order-rule notebook + one-page store-manager note

Stack: Python, pandas, LightGBM or scikit-learn, matplotlib, Jupyter

How it is graded
  • Honest backtest35

    At least 6 rolling folds, no feature uses data after each fold's cut-off, and fold-by-fold numbers are reported for baseline and model.

  • Beats the baseline25

    Weighted MAPE is at least 15% lower than seasonal-naive across the backtest, or the shortfall is shown and explained.

  • Order rule20

    The forecast becomes a suggested order with a safety buffer, and the trade-off between waste and stock-outs is shown on backtest data.

  • Communication20

    The store-manager note explains the forecast and its uncertainty in plain words on one page.

Pass 60% · Merit 75% · Distinction 90%

Learning Outcomes
Build a seasonal-naive baseline
engineer lag and calendar features without leakage
run a rolling-origin backtest
choose and explain forecast error metrics
convert a forecast into order quantities
Target Audience

Engineering Students

Diploma, B.Tech, B.E., BCA, MCA, or M.Tech students seeking practical experience.

Aspiring Developers

Developers who want to build proof-of-work capstone projects for tech resumes.

Job Seekers

Graduates looking for AI-evaluated code review & verified industry credentials.