All notes

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.

A model is not finished when evaluation ends
A model is not finished when evaluation endsVerified project view

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.