Marketing Data engAnalyticsMLAgentic retailmarketplace Revenue +11% at flat spend

Budget reallocation engine

4 people · 7 months Data engineer · ML engineer · Analytics engineer · Me — architecture and delivery
the engagement client data — not shown
heard
"We spend forty million a year and I cannot tell you which ten million of it I could stop spending tomorrow."
real problem

Spend decisions were made on last-click attribution from a reporting layer that had no notion of incrementality. Channel teams were each optimising a number that double-counted the same conversions.

system built

A weekly reallocation loop: a channel-level panel built from ad platform exports and order data, a geo-holdout uplift model per channel, and an agent that drafts the next week's budget split with the expected lift and a written rationale. A human approves before anything is pushed to the platforms.

what broke

The first version proposed a 40% cut to a channel whose holdout had run for three weeks. We added a minimum-evidence gate and a cap on week-over-week movement.

the open rebuild same architecture · public data
dataset

Criteo Uplift Prediction (25M impressions, treatment/exposure flags)

what the rebuild covers

Same three-stage architecture: panel build, uplift model, allocation agent with an approval gate. Budget figures are synthetic; the estimator and the gate logic are the ones that shipped.

artifacts
NotebookCodeDatasetWrite-upDemo
Open the code Open notebook