← All work01 / 03 · Marketing mix

Allocation AI

Where to spend.

Getting commercial leaders to move marketing money where a model, not instinct, said it should go. A Bayesian budget-allocation system Heineken publicly credits with a 36% ROI improvement.

Role
Product lead
Context
Heineken · 2021 – 2026
Domain
Marketing effectiveness
Approach
Bayesian ML · Azure
Annual plan · % change vs current

Where the model wants to move next year's budget

Colored by direction. Cells the model isn't sure about are flagged for a human call.
Channel
Nordlys
Verano
Kestrel
Aurora
Brand building
Paid social
+25%
+10%
+25%
+10%
Online video
+10%
+25%
+10%
−10%
TV
−25%
−10%
−25%
0%
Sponsorship
0%
+10%
−10%
+10%
Activation
Out-of-home
−10%
−25%
+10%
+25%
Trade / retail
+10%
+25%
+25%
+10%
Net move
+6%
+9%
+8%
+7%
cut grow low confidence · needs a human call
The model proposes the moves; it also flags where it isn't sure. On the low-confidence cells a person makes the call instead of trusting a number blindly. That legibility, not the accuracy, is what got commercial teams to actually reallocate.
Illustrative concept, not the actual product.Fictional brands and data.
Where the model wants to move next year's money, and where it won't commit. The cells it's unsure about are flagged for a person to decide. I built it to propose and to admit doubt, because a system that silently reallocates millions gets ignored, while one that shows its confidence gets executed.
36%
ROI improvement across brands and touchpoints, publicly credited by Heineken.
Public · Heineken newsroom
Behaviour change
Intuition → model-driven
Annual planning shifted from "last year plus a bit" to a modelled, defensible split.
Adoption
Piloted → scaled
Commercial leaders reallocated budget on the model's guidance, in the planning cycle, at scale.
Scope
~€2.9B in play
The annual marketing spend this system was built to allocate across markets, brands and channels.
01Overview

What Allocation AI does.

Every year Heineken's operating companies face the same question: where should the next marketing euro go?

Five million on TV, or on trade promotions? More weight behind a global brand, or a local power brand? Historically these calls leaned on experience and last year's plan. Allocation AI answers with evidence. It builds a Bayesian response model per operating company, brand and channel, learning how sales actually react to investment.

The core output is a set of response curves (spend on one axis, expected volume or ROI on the other) that let teams test budget scenarios before committing a cent. A constraint-aware optimizer then reads those curves and proposes the allocation that maximises return within real strategic limits: brand-role rules, long-term brand-building floors, and short-term caps.

Scenario · "Shift to digital, protect brand"

What this budget scenario delivers

Projected outcome vs last year, before the plan is committed.
Volume
3.8M
↑ 5.0%
LY 3.6M
Net revenue
€540M
↑ 9.0%
LY €495M
Gross profit
€270M
↑ 6.0%
LY €255M
ROI
3.1×
↑ 14%
LY 2.7×
Projected net revenue vs last year, by brand
Nordlys
100
118
+18%
Verano
90
104
+16%
Kestrel
120
131
+9%
Aurora
70
82
+17%
Last year Optimised plan
A planner spins up a scenario and sees its projected outcome before committing a euro. Every number is labeled as a projection, because it is. This is what moved annual planning from intuition to a model teams could interrogate, compare, and trust enough to act on.
Illustrative concept, not the actual product.Fictional brands and data.
What a plan delivers before a euro moves. Every figure is labelled a projection and broken out by brand, so a leader can interrogate the split rather than accept a headline. Numbers people can pull apart are the ones they'll put their name on.
02The problem

Moving money is a political act.

Heineken spends billions on marketing every year: roughly €2.9B, about 9.8% of net revenue. Historically that budget was split across markets, brands and channels by habit and last year's plan, not by predicted return. Data science could build response curves and calculate where the next euro pays back best. That was not the hard part.

The hard part was authority and trust. To act on the model, a commercial leader has to pull real money out of a channel they believe in, on the say-so of a system, and defend that to their market. A reallocation nobody executes is a slide, not a system. The blocker was never the optimizer: it was whether a person with budget authority would move the money.

03My role & ownership

Accountable for whether the money actually moved.

I was the founding product hire in the analytics group and the product owner for this system, from discovery to delivery: the problem framing, the scope, the roadmap, and the adoption path into the annual planning cycle.

I was accountable for whether operating companies actually reallocated budget, not just whether the model produced an answer. I was the standing bridge between the data scientists who built the models and the OpCo commercial leaders who had to change how they planned.

04Key decisions

Three product bets that earned adoption.

Each one traded theoretical elegance for something a commercial leader would actually execute.

01
Answer over charts

A decision tool, not a reporting dashboard.

The cheaper path was a BI dashboard showing historical ROI by channel. I argued against it: teams didn't need more charts, they needed a defensible answer to "where should the next euro go" that they could take into a planning meeting.

The tradeoffFar more product surface, and far more trust to earn, than a dashboard would have needed.
02
Curve over number

Exposed the curve and its uncertainty, not a single "optimal" number.

The tempting move was a one-click "here is your optimal budget" black box. I rejected it. A black box that silently reallocates millions gets ignored; showing the diminishing-returns curve, the marginal ROI, and the confidence band lets a leader see why the model wants to move money, and where it is unsure.

The tradeoffMore for a leader to read, in exchange for a recommendation someone will actually execute.
03
Strategy over optimum

Made the optimizer respect strategy, not just maximise ROI.

I built in guardrails (brand role, long-term brand building) so the model couldn't starve a strategic brand to chase short-term return. Pure ROI-maximisation would have produced a higher number on paper and lost the room in one meeting. The human sets the objective and the constraints; the system searches within them.

The tradeoffA lower theoretical optimum, for a recommendation that fits how the business actually decides.
Decision 02, made visible

Show the whole curve, not just a number.

Heat-map → Nordlys · TV

Is this spend still paying back?

Revenue keeps rising, but ROI peaks and falls. The model shows where you are on both.
◆ ★ Revenue ROI Spend → peak ROI current
Revenue ROI ◆Current spend ★Peak ROI
Current spend sits past the point of peak ROI. Each extra euro still adds a little revenue but returns less, so the model recommends easing back toward the peak (the ~25% cut the heat-map flagged for this cell). It shows the whole curve, not just a number, so the team sees the tradeoff and makes the call.
Illustrative concept, not the actual product.Fictional brands and data.
What the model sees that instinct doesn't. Revenue keeps climbing with every extra euro, but ROI peaks and then falls, and this channel is already spending past the peak. I chose to show the whole curve, not a single "optimal" number, so a leader could see the tradeoff and make the cut themselves.
05What shipped

A production system in the planning cycle.

Bayesian response-curve models built per operating company, brand and channel; a scenario simulator for testing budget splits; and a constraint-aware optimizer that weighs hundreds of ROI projections against strategic limits, all on Heineken's Azure platform. Piloted in a first set of markets, then scaled into the annual planning cycle.

Bayesian response curvesScenario simulatorConstraint-aware optimizerAzure
Manage scenarios

Every plan, organised and comparable

Scenarios grouped in folders, versioned, and owned.
Folders
2026 Annual Plan12
Meridia West5
Nordvik4
Experiments8
Archive21
ScenarioTypeUpdatedOwnerROI
{{ s.name }}
{{ s.desc }}
{{ s.type }} {{ s.updated }} {{ s.initials }}{{ s.owner }} {{ s.roi }} ⋯
Illustrative concept, not the actual product.Fictional folders, scenarios, and names.
Used, not piloted. Dozens of plans (versioned, owned and comparable) built by real teams inside the annual cycle. Being able to spin up a scenario and defend it in a planning meeting is what actually moved budget, not the optimizer alone.
06The lesson

The value of an optimizer isn't the optimum. It's whether a human with authority will execute it, so legibility and real-world constraints beat a higher theoretical number no one acts on.

07In context

The macro engine of a three-part system.

Allocation AI sets the sandbox (where each channel and brand gets budget) that Promo Advisor and Smart Flighting then execute against.

If this resonates, let's talk

Got a budget model nobody follows?

Tell me where the money goes today and who overrides the model. I'll tell you what I'd build first.

LinkedIn ↗ tomasz@czarnecki.ai
Tomasz Czarnecki ↑ © {{ year }} · Designed and built by me with Claude Code · czarnecki.ai · Product visuals are illustrative concepts