MMM-Lite: Media Mix Modeling for Startups That Can't Hire a Data Science Team

  1. Blog
  2. Measurement & Budget

By Saroj Jha · July 17, 2026 · 9 min read

MMM-Lite is a compact media-mix model plus simple incrementality tests: privacy-first measurement that tells startups where the next $1,000 works hardest.

  1. 1Weekly spend
  2. 2Model
  3. 3Test
  4. 4Reallocate

↺ Reallocate feeds back into Weekly spend

The MMM-Lite loop

Measurement that never tracks a single individual user.

MMM-Lite is a loop built on aggregate data: weekly spend and conversions go into a compact model, the model's claim is checked with an incrementality test, and the result reallocates budget before the next cycle begins.Source: AAJ MMM-Lite framework

If that sounds like something only enterprises with seven-figure media budgets do, that was true five years ago. Two things changed. Signal loss made click-based attribution unreliable: since iOS 14.5 in April 2021, apps must ask permission before tracking anyone[1], and much of what persuades a buyer happens in dark social, where no pixel sees it. (Chrome, for the record, kept third-party cookies: Google confirmed in April 2025 that users will keep choosing in Chrome’s settings[2].) And the modeling itself got radically cheaper: what once required a specialist vendor now runs on free open-source libraries and a spreadsheet’s worth of data.

MMM-Lite is a small regression on weekly spend and conversions, checked by one geo test a quarter and acted on through small, reversible budget moves. It earns its keep once you have about a year of weekly data, spend that varied, and three or more channels.

In three numbers

  • 2 years the minimum weekly history Meridian’s docs set for a geo-level model; three years for a national one[3]
  • 1 in 10 Robyn warns when a model has more than one variable per ten observations[4]
  • Jan 2025 when Google opened Meridian, its Bayesian open-source MMM, to everyone[5]

Why attribution keeps lying to you

Last-click attribution answers “which ad got the final click?”, not “which spending caused customers to exist?” Those are different questions, and the gap between them is where budgets go wrong. In my view, podcast ads, LinkedIn content and PR look terrible in last-click and are often the actual engine. Meanwhile branded search looks heroic while mostly harvesting demand something else created.

MMM sidesteps the whole problem. Instead of following users, it looks at the relationship between what you spent and what happened, week by week, across channels: the same regression logic large advertisers use to judge their media[6], shrunk to startup size.

What MMM-Lite actually is

Three parts, none exotic:

  1. A small regression model. Weekly conversions as a function of channel spend, seasonality and promo flags, with spend transformed twice: adstock, so a week’s spend keeps working in the weeks after, and saturation, so each extra dollar buys less than the last[6],[7]. Regularized so a small dataset doesn’t hallucinate. Output: a marginal ROAS per channel, the value of the next dollar[8], which is the only number a reallocation decision needs.
  2. An incrementality test. The model proposes; a geo-holdout test disposes. Turn a channel off (or up) in a random set of regions, compare against the rest, and measure the true lift[9]. One pre-registered test per quarter keeps the model honest.
  3. Decision rules. Monthly: move 10–25% of the weakest trustworthy channel’s budget toward the strongest. Never zero anything on model evidence alone. Where model and test disagree, the test wins; all three libraries below can feed test results back into the model.

That last part is the point. MMM-Lite isn’t a dashboard; it’s an operating cadence for budget decisions.

Figure 1 MMM-Lite is a monthly loop that never tracks an individual user: model, test, then move money
  1. 1 Weekly spend Spend and conversions per channel, by week. Aggregate data only. The input
  2. 2 Model A regression with adstock and saturation gives each channel’s marginal ROAS. Proposes
  3. 3 Test One geo-holdout test a quarter checks the model’s biggest claim. Disposes
    • 4 Reallocate
    • Move 10–25% of the weakest channel’s budget toward the strongest.
    • Feeds next month’s spend

The loop closes: next month’s spend, now varied on purpose, becomes the model’s new data.

AAJ’s MMM-Lite method, as described in this article.

You don’t have to write the model from scratch: three free, open-source libraries do the heavy lifting. Google’s Meridian, open to everyone since January 2025, is a Bayesian model that can use reach and frequency, not just impressions, and take experiment results as priors[5]; its GeoX tool now runs the geo experiments as well[10]. Meta’s Robyn, an R package with a Python port still in beta, fits a ridge regression and uses multi-objective optimisation to choose its adstock and saturation settings[4],[11]. PyMC-Marketing is a Bayesian Python library with lift-test calibration built in[12].

Figure 2 With a decay rate of 0.5, one week’s spend is still doing half its work the week after
  • $10,000 Week 1
  • $5,000 Week 2
  • $2,500 Week 3
  • $1,250 Week 4
  • $625 Week 5
  • $313 Week 6

Week the money was spent Carryover into later weeks

Show the numbers as a table
Week Effective spend
Week 1 $10,000
Week 2 $5,000
Week 3 $2,500
Week 4 $1,250
Week 5 $625
Week 6 $313
Total over six weeks $19,688 (exactly $19,687.50)

Illustrative: geometric adstock, decay rate 0.5, applied to a single fictional week of $10,000 with nothing spent after. Robyn’s authors note that geometric decay rates typically range from 0 to 0.8[4]; the model estimates yours.

Running case: Example Co. Fictional

Example Co. sells scheduling software and spends $40,000 a month: $20,000 on paid search, $12,000 on LinkedIn ads and $8,000 on Meta ads. With each conversion valued from its unit economics, its model reads paid search at $3.00 of value per dollar on average but only $1.00 on the next dollar. Meta ads return $2.00 on average and $1.67 at the margin. Last-click would fund search. The margin says the opposite.

Figure 3 At $20,000 a month, paid search returns $3.00 per dollar on average but only $1.00 on the next dollar

Average ROAS: $3.00 (value ÷ spend) Marginal ROAS: $1.00 (slope at today’s spend)

Show the numbers as a table
Channel Spend Value Avg ROAS Next $
Paid search $20,000 $60,000 3.00 1.00
LinkedIn ads $12,000 $24,000 2.00 1.33
Meta ads $8,000 $16,000 2.00 1.67
Total $40,000 $100,000 2.50

Example Co. is fictional: a one-parameter Hill curve, value = 90,000 × spend ÷ (spend + 10,000) a month. Meridian models saturation with a Hill function and reports marginal ROI as the outcome of the next dollar[7],[8].

What you need before it’s worth doing

Honesty here saves everyone time:

  • A year or more of weekly data. Conversions and spend per channel. The open-source tools ask for more. Meridian’s docs set a minimum of two years of weekly data for geo-level models and three years for national ones[3], and Robyn warns when a model has more than one variable for every ten observations[4]. By that rule a year of weekly data supports about five variables: three channels, seasonality and a promo flag. With less than a year, in my view, the model is a vibe.
  • Spend that actually varied. A model can’t estimate the effect of spend that never changed; Meridian’s docs warn that variables with very low variability are hard to estimate[13]. Flat, steady budgets are unmeasurable budgets, which is itself an argument, in my view, for deliberate ±20% variation.
  • 3+ channels and roughly $15–20K+/month total, my rule of thumb. Below that, benchmark-based planning (the free Marketing Budget Planner) beats modeling: the model’s error bars would be wider than the decisions.
  • A value-per-conversion number from your unit economics: it converts “conversions per dollar” into “money per dollar.” (Two minutes in the free Unit Economics Calculator if you don’t have one.)
Figure 4 By Robyn’s one-in-ten rule, a year of weekly data supports about five variables
  • 26 weekshalf a year 2 variables
  • 52 weeksExample Co.: 3 channels, seasonality, a promo flag 5 variables Example Co.
  • 104 weekstwo years 10 variables Meridian geo minimum
  • 156 weeksthree years 15 variables Meridian national minimum
Show the numbers as a table
Weekly history Variables at one per ten weeks Note
26 weeks
52 weeks Enough for Example Co.’s model
104 weeks Meridian’s minimum for geo-level models
156 weeks Meridian’s minimum for national models

Variables allowed = weeks of data ÷ 10, from Robyn’s warning when a model has more than one variable per ten observations[4]. Meridian minimums from its data guide[3]. Example Co. is fictional.

Do this

Pull a year of weekly spend and conversions per channel into one sheet, flag every promo and launch week, and count your variables against the one-in-ten rule before you fit anything.

Free template

Start from a model that already runs

The free MMM-Lite Starter Kit has the ready-to-run model, the exact data schema, the test pre-registration template and the decision rules.

Get the starter kit

The traps that sink startup MMMs

Trusting a flattering fit. In-sample R² always looks great; only out-of-sample (walk-forward) fit tells you whether the model generalizes; Robyn has a time-series validation split built in for this[4]. If it’s weak, the outputs are guidance, not instructions.

Unflagged promos and launches. A spike the model can’t explain gets attributed to whatever channel happened to spend that week. Log them.

Collinear spend. If two channels always move together, the model can’t tell them apart: Meridian’s docs note that high multicollinearity widens the uncertainty around each channel’s effect[13]. The tell is unstable or negative coefficients.

Acting too big, too fast. The 10–25% monthly step exists because models are wrong at the margins and budgets should be reversible. Google’s researchers found that the “optimal” media mix a model recommends has a large variance[6].

Running case: Example Co. Fictional

Before moving money, Example Co. runs the quarter’s test: paid search cut by $500 a week in a random half of its regions for six weeks, $3,000 less spend in all. Value in those regions fell by $3,300 against the rest, an incremental ROAS of 1.1, close to the model’s 1.07 for a cut that size. Model and test agree, so the rule applies: Example Co. moves $4,000 a month, 20% of paid search’s budget, to Meta ads. On the model’s curves, monthly value rises from $100,000 to about $101,540 for the same $40,000. Moving $6,000 would gain less, about $1,390, because by then the next dollar in search returns $1.56 and in Meta ads only $1.32.

Figure 5 Example Co.’s geo test found $1.10 of value per dollar cut, close to the model’s $1.07
$3,300 less value in test regions than the rest ÷ $3,000 less paid search spend: $500 a week for six weeks = 1.1 incremental ROAS; the model said 1.07 Show the numbers as a table
Item Value
Spend cut in test regions $3,000
Value lost against control $3,300
Incremental ROAS from the test 1.1
Model’s marginal ROAS for the same cut 1.07

Example Co. is fictional. Regions assigned at random to test and control, the design of a geo experiment[9]. The model’s figure is the value lost per dollar when search drops from $20,000 to $18,000 a month on its Figure 3 curve.

Figure 6 Example Co.’s next dollar works hardest in Meta ads, and a $4,000 move captures nearly all the gain

Marginal ROAS today

  • Paid searchaverage $3.00 $1.00
  • LinkedIn adsaverage $2.00 $1.33
  • Meta adsaverage $2.00 $1.67

Monthly value gained, by size of move from search to Meta

  • Move $2,000 +$1,057
  • Move $3,000 +$1,373
  • Move $4,000 +$1,538 the move made
  • Move $5,000 +$1,547
  • Move $6,000 +$1,389
Show the numbers as a table
Move Monthly value Gain Next $: search / Meta
$2,000 $101,057 Up $1,057 1.15 / 1.54
$3,000 $101,373 Up $1,373 1.24 / 1.48
$4,000 $101,538 Up $1,538 1.33 / 1.42
$5,000 $101,547 Up $1,547 1.44 / 1.37
$6,000 $101,389 Up $1,389 1.56 / 1.32

Example Co. is fictional; values come from the Hill curves in Figure 3, with total spend held at $40,000. The gain peaks between $4,000 and $5,000 and falls by $6,000.

And the meta-trap: treating the model as truth rather than triangulation. Model + tests + judgment, in that structure, is the whole method.

Related on AAJ

Articles

Playbooks

Templates and tools

References

The superscript numbers in the article match this list.

Example Co. and its numbers are illustrative, built to show the arithmetic. They are not client data.

Rules of thumb marked as my view are my working rules, not findings from the sources.

Documentation and papers were checked on October 15, 2026.

  1. Potuck, M. (2021). “Apple reminds developers about ATT requirements ahead of iOS 14.5 launch.” 9to5Mac, April 20, 2021, quoting Apple’s developer notice that ATT applies to all apps from April 26, 2021. 9to5mac.com
  2. Chavez, A. (2025). “Next steps for Privacy Sandbox and tracking protections in Chrome.” Privacy Sandbox blog, April 22, 2025. privacysandbox.google.com
  3. Google for Developers (2026). “Collect and organize your data.” Meridian documentation, last updated September 17, 2026. developers.google.com
  4. Runge, J., Skokan, I., Zhou, G. and Pauwels, K. (2025). “Packaging Up Media Mix Modeling: An Introduction to Robyn’s Open-Source Approach.” arXiv:2403.14674, version 3, January 24, 2025. arxiv.org
  5. Google (2025). “Meridian is now available to everyone.” Google Ads and Commerce blog, January 29, 2025. blog.google
  6. Jin, Y., Wang, Y., Sun, Y., Chan, D. and Koehler, J. (2017). “Bayesian Methods for Media Mix Modeling with Carryover and Shape Effects.” Google Research. research.google
  7. Google for Developers (2026). “Media saturation and lagging.” Meridian documentation, last updated July 8, 2026. developers.google.com
  8. Google for Developers (2026). “Incremental outcome, ROI, mROI and response curves.” Meridian documentation, last updated May 15, 2026. developers.google.com
  9. Vaver, J. and Koehler, J. (2011). “Measuring Ad Effectiveness Using Geo Experiments.” Google Research. research.google
  10. Google for Developers (2026). Meridian home page, with the notice that Meridian GeoX is available for geo experiments that calibrate the model. Checked October 15, 2026. developers.google.com
  11. Meta for Developers (2024). “Announcing the Python version of Project Robyn.” December 19, 2024; the robynpy package was still labelled beta at version 0.3.6 (April 2025). developers.facebook.com
  12. PyMC Labs (2026). PyMC-Marketing repository README: Bayesian MMM with adstock, saturation, lift-test calibration and budget optimisation; Apache 2.0 licence. Checked October 15, 2026. github.com
  13. Google for Developers (2026). “Perform an exploratory data analysis.” Meridian documentation, last updated September 24, 2026. developers.google.com

More in Analytics, Experiments & Budget

Part of the Analytics, Experiments & Budget hub - see all 29 resources on this topic.

Also useful in Paid Media.