Model registry, drift monitoring and an automatic retraining trigger
Take an existing demand model into production properly: tracked experiments, a model registry, drift and performance monitoring, and a retraining trigger with a promotion gate.
Industry project · for Kestrel Mobility, an e-scooter and bike-share operator running 9,000 vehicles in 6 cities
Kestrel predicts hourly rental demand for each of its 420 docking zones, so night crews know where to move scooters. The model was trained once, eight months ago, by a data scientist who has since left. Nobody knows which data or code produced the file in production. Since a new city opened and a competitor arrived, the operations team says the predictions "feel off", but nobody can prove it, because no one compares predictions with actual rentals.
The head of data wants the model treated like software. Every training run is logged. Every production model can be traced to its data, code and metrics. Drift is checked daily. When performance drops past a set limit, retraining starts automatically, but the new model only replaces the old one if it is better on a recent holdout.
You will use the public UCI Bike Sharing dataset (hourly rentals with weather and calendar fields) as Kestrel's history, and replay it day by day to simulate production, including a deliberate shift you introduce, such as a new-city effect or a weather pattern change.
You will build: - experiment tracking and a model registry with MLflow; - a batch prediction job; - data-drift checks (PSI on key features) and performance monitoring (MAE against actuals with a 48-hour delay); - a retraining pipeline triggered when 7-day MAE rises more than 20% above the registered model's validation MAE; - a promotion gate and one-command rollback.
Done looks like a repo that runs the whole loop locally with Docker Compose, a replay over 120 simulated days showing at least one drift alert and one automatic retrain, and a runbook the on-call engineer can follow.
GitHub repo with Docker Compose stack + replay script and logs over 120 days + monitoring dashboard screenshots + docs/runbook.md
Stack: Python, MLflow, Docker Compose, scikit-learn or LightGBM, pandas, pytest
- Lineage and registry20
Every registered model links to its data version, git commit, parameters and validation metrics, and stages are used correctly.
- Monitoring that catches the shift25
PSI and delayed MAE are computed daily in the replay, and the injected shift raises an alert within 7 simulated days.
- Safe retraining25
Retraining triggers on the stated rule, the promotion gate compares challenger and champion on the same recent holdout, and a worse challenger is rejected at least once.
- Operable system15
docker compose up runs the stack, and rollback to the previous version takes one command.
- Runbook15
The runbook tells an on-call engineer what each alert means, what to check and how to roll back.
Pass 60% · Merit 75% · Distinction 90%
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.