MLOps · 20 Jun 2026 · 6 min
A model is not finished when evaluation ends
What UrbanFlow adds around the model: publishing, an API, monitoring and decision logic.
01
Prediction and decision are different products
UrbanFlow uses 24 hourly CatBoost models to forecast traffic across 1,158 zones. A separate integer-programming optimizer chooses facility locations under constraints. Keeping both layers independent makes it clear what the model predicts and what the decision system optimizes.
02
Deployment changes the definition of done
A test metric cannot answer whether a city team can query a forecast, inspect a zone or reproduce a release. FastAPI, Next.js, Docker and GitHub Actions turn the modelling work into a service that can be used and updated.
03
Monitoring must match the operating unit
A single global score can hide systematic errors. The project monitors MAE by hour and looks for persistent errors by zone. It also states an important limitation: one month of training data is not enough to claim seasonal generalization.
Takeaway
What I take from it
The useful unit is not the trained model; it is the observable path from data to a defensible decision.