All case studies
ProductionWorldLink US · 2025 – present

A price forecasting platform that ships itself

End-to-end forecasting on Databricks, from ingestion to a registered, promotable model.

AI Data Engineer: design and implementation

The problem

Forecasts existed, but getting one into production was a manual event. A model lived in a notebook, someone re-ran it by hand, and promoting a new version meant copying artefacts between environments and hoping nothing drifted. There was no registry, no validation gate and no clean way back if a release went wrong.

What I did

Architecture

Forecasting platform architecture: ingestion through to a served modelINGESTTRAINGOVERNSERVESource dataDelta / UCFeature jobversioned PySparkTrainingXGBoostMLflow trackingparams + metricsValidation gateaccuracy + slicesModel registryDev → ProdModel ServingREST endpointReact appDatabricks Applog every runpasspromoterollback = select previous version
Source data lands in Delta under Unity Catalog, features are generated by a versioned job, every training run is logged to MLflow, and only a candidate that clears the validation gate can be registered and promoted. Rollback is selecting the previous version.

What went wrong first

A model that scores well can still be wrong

Aggregate error hid failures on specific segments. I added slice-level checks to the validation gate so a candidate that improves the headline number but degrades a segment does not get promoted. The gate is deliberately stricter than the metric.

Reproducibility is a data problem, not a code problem

Re-running the same notebook gave different results because the feature inputs had moved underneath it. Pinning feature generation to versioned Delta reads made training runs comparable, which in turn made the registry meaningful.

Rollback has to be boring

The first design treated promotion as a deployment. That made rollback a redeployment, which nobody wants to do under pressure. Modelling promotion as a stage transition on a registered version turned recovery into a one-line change.

Results

production model versions registered
3production model versions registered
reduction in deployment cycle time
~40%reduction in deployment cycle time
MAPE reduction
18%MAPE reductionagainst the baseline time-series model
fewer production rollbacks
~30%fewer production rollbacks

The measurable win was cycle time, but the durable one was confidence. When promotion is gated and reversible, a team ships more often because a bad release costs minutes instead of a day.

Stack

DatabricksMLflowXGBoostPySparkDelta LakeUnity CatalogModel ServingDatabricks AppsCI/CD