Products · #25 · Sales & Marketing
TIER A BLUEPRINT

Marketing Mix Model + Budget Optimizer

Know what TikTok, YouTube and Meta actually returned - and where the next €10k should go. Response curves with honest intervals, not last-click fiction.

from €1,990

MMM - RESPONSE CURVES ↔ BUDGET OPTIMIZER · LIVE

Meta mR 0.48→ 1.00
YouTube mR 1.31→ 1.10
TikTok mR 1.22→ 1.01

spend per channel, €k / quarter → · dashed = fitted knee · band = 90% credible

Budget €120k / quarter · unchanged
Meta
€52k€33.5k -€18.5k
YouTube
€28k€38k +€10k
TikTok
€22k€30.5k +€8.5k
Google
€18k€18k 🔒 min
+6.1% ±3.1 modeled return, same budget
optimum = marginal return equal across channels. Meta was buying past its knee.
audit_log ▸ #3187 sha256:8e04…a9 ⛓ chain verified · priors + curves + constraints versioned · region: eu-central-1

How it works

Last-click hands the credit to whoever stood closest to the conversion. This measures what actually moved the outcome, using the only data that survives cookie deprecation: your own spend and your own results.

01

Spend and outcomes, weekly

Weekly spend per channel, revenue or conversions, and the things that move sales and aren't ads: seasonality, promotions, price changes, LT holidays. Aggregate numbers only - no cookies, no user-level data, nothing to consent-manage.

02

Adstock and saturation

Ads don't work instantly and don't scale forever. Geometric adstock models the carryover into later weeks; Hill saturation models the point where another euro into TikTok stops buying anything. Those two curves are the model - the rest is bookkeeping.

03

Bayesian, so the answer has a range

Fitted in the PyMC-Marketing / Meridian lineage, so every channel's return arrives with a credible interval. "YouTube returned 2.1x, ±0.7" is a sentence you can plan against. "YouTube ROI is 2.1x" is a sentence somebody made up.

04

The optimizer moves the money

Constrained optimization over the fitted curves: maximize return against your total budget, channel minimums and contract commitments. The output isn't a dashboard - it's a reallocation you can act on Monday.

The Four Guarantees™ - this build

Measured value

Time-series cross-validation on held-out weeks, and where you can run one, a geo-lift or holdout test that checks the model's return claim against reality. Eval gate before ship: if it can't beat a seasonal baseline on your own history, we say so out loud.

Defensible

Every run versioned - data snapshot, priors, fitted curves, optimizer constraints - in a tamper-evident hash-chained audit log, with Annex IV regenerated each time. When the CFO asks why €40k moved from Meta to YouTube, the answer is a curve with an interval on it.

Self-correcting

Refit every cycle as new weeks land. Drift alerts when a channel's response curve shifts under you: platform algorithm change, creative fatigue, a competitor showing up. Lift-test results feed back as priors, so the model gets less wrong every time you test.

Yours & everywhere

One container, your cloud, full source handover. MCP tools so your agents can ask "what's the marginal return on TikTok right now" and get the current curve instead of last quarter's slide.

The claims, sized honestly

Reference buyer: LT/Baltic advertiser running 3-6 channels with two-plus years of weekly history and no honest read on incrementality.

3-6 channels modeled together - TikTok, YouTube, Meta, Google, offline
± every return ships with a credible interval, never a bare point estimate
~2 yr of weekly history is the honest minimum - you hear that before you buy
0 user-level tracking data required - aggregate spend and outcomes only

Three ways to own it

Tier What you get Price
Scaffolding The full repo - adstock and saturation transforms, the Bayesian MMM, the budget optimizer, eval gate, audit log, MCP server. Fitted on a synthetic spend dataset so you can read the code and the curves before your data moves. You own the source. €1,990
PoC ★★RECOMMENDED Fitted on your real spend and revenue history. Channel returns with credible intervals, response curves, and a proposed reallocation - validated on held-out weeks. Full code and the quality report are yours. No performance guarantee at this stage, by design. from €6,000
Implementation ★★★ Production: wired to your ad platform exports and revenue data, refit every cycle, optimizer running under your budget constraints, drift alerts, monthly report - and where you run lift tests, the model gets checked against them. The agreed number (conservative) attaches here. from €18,000

★ = engagement depth. PoC is the recommended path: quality proven on your data before production money. The PoC carries no performance guarantee by design; the agreed number (conservative) attaches at Implementation, informed by the PoC report.

The same engine, pointed at your budget

Allocating spend across channels is allocating capital under uncertainty. Fit a response curve, put an honest interval on it, size the bet where the marginal return is highest, and stop where it flattens. That's this build. It's also #23 Fight Outcome Model with a bankroll instead of a media plan, #18 Dynamic Pricing with elasticity instead of adstock, and #08 Demand Forecasting with inventory instead of impressions. Different table, same math - which is exactly why the calibration discipline carries over.

What we don't promise

MMM needs history, and it is not a tracking pixel. Under roughly two years of weekly data the credible intervals get wide enough that the honest answer is "we can't separate these channels yet" - and you hear that during the PoC, not after the invoice. MMM also can't tell you which individual user converted; it's aggregate by construction. That's the same property that lets it survive cookie deprecation, ATT and consent mode. If you want person-level attribution, that's a different product, and it's the one quietly going dark.

Ready to see your own number?

Request the build: within 48h you get a personal reply with the value sized to your volume.

No commitment · reply within 48h · your data stays in the EU