When a new hire, a client data scientist, or a procurement reviewer hears "MMM" in 2026, they usually picture one specific family of tools: open-source Bayesian MMM. Two names dominate. Google Meridian is Google's open-source Bayesian MMM, the successor to its earlier JAX-based LightweightMMM; it fits hierarchical geo-level models with priors on adstock, saturation and ROI, and reports posterior uncertainty on everything. Meta's Robyn is the other pole of the open-source world: semi-automated MMM built on regularised (ridge) regression, with the Nevergrad evolutionary optimizer searching the adstock/saturation hyperparameter space and a multi-objective selection step balancing fit against business plausibility. Strictly speaking Robyn is not Bayesian at all - it is a frequentist/machine-learning hybrid - but it travels in the same conversation, and together the two set the frame this program gets measured against.
Both trees share an academic ancestor: Jin, Wang, Sun, Chan & Koehler (Google Research, 2017), "Bayesian Methods for Media Mix Modeling with Carryover and Shape Effects". That paper standardised the modern vocabulary - geometric carryover (adstock) plus a Hill-type shape (saturation) applied to media before regression - and put Bayesian priors forward as the way to keep such heavily parameterised models identifiable. Read the adstock and Hill transformations in this program's own pipeline (module 1.5) and you are reading the same two functions; the ancestry is shared even where the estimation philosophy is not.
What a Bayesian MMM does, in one paragraph: the modeller expresses beliefs as priors - distributions over each channel's likely adstock decay, saturation point, and ROI, often informed by experiments or category norms. The sampler combines priors with data into a posterior: a full distribution over every parameter, from which you read not just "TV ROI is 1.4" but "TV ROI is 1.4 with a 90% credible interval of 0.9 to 2.1". Hierarchical structure lets geo-level data share strength across regions. The posterior propagates into everything downstream - contributions, response curves, optimizer outputs all carry uncertainty bands natively.
This program's Rapid ROI stack is a different, equally legitimate branch of the same family tree: an Unobserved Components Model (UCM) - a structural time-series / state-space model - estimated by frequentist methods via the Kalman filter, with maximum likelihood built from the filter's innovations (module 2.3 has the machinery). The observed sales series is explicitly decomposed into latent states - trend, seasonality, and a time-varying baseline level - alongside the regression effects of media and base drivers. Where a Bayesian MMM buys identifiability with priors, this program buys it with two different instruments:
- A discrete hyperparameter grid: adstock alpha and Hill beta are searched over per-platform candidate grids in the YAML config (module 1.5's
platform_cat_parameter_ranges), not sampled from prior distributions. Every candidate combination is fitted; the scorecard of module 3.1 ranks the results. - Constraint-based bound setting: coefficient lower/upper bounds derived from business heuristics - ASSR bands, correlation ladders, the ±15% target-bound template of Tracks 1.6/1.7 - constrain each fit directly. This is the program's functional stand-in for priors: the same business knowledge a Bayesian would encode as a prior distribution enters here as hard bounds on the admissible answer. (The KT sessions even call these "priors" informally - the terminology crosswalk matters when you talk across camps.)
What is gained. The state-space form gives an interpretable decomposition natively: trend, seasonal and level components are estimated objects you can chart and hand a client, not residual afterthoughts - and in a brand-health-driven program, a clean separation between slow baseline movement and fast media response is the product. There is no prior-elicitation burden: nobody has to defend a ROI prior distribution in a client workshop; the bounds come from auditable business rules with a worked template behind them. And those business rules act directly and transparently - a bound either binds or it doesn't, visible in the output.
What differs. There are no native posterior intervals: a single fitted model reports point estimates (the Kalman filter does produce state variances, but the program does not surface parameter-level credible intervals the way a Bayesian posterior does). Uncertainty is handled procedurally instead - hundreds of candidate models are fitted across the grid, ranked, and adjudicated (module 3.1), and the discipline of the bound-setting keeps any single answer inside a defensible envelope. Candidate spread plays the role that posterior width plays elsewhere. It is a different theory of uncertainty, managed by process rather than by probability calculus - honest to say, and important to say precisely.
| Bayesian MMM (Meridian / LightweightMMM) | Robyn (Meta) | This program (Rapid ROI) | |
|---|---|---|---|
Model form | Bayesian regression, often hierarchical by geo | Regularised (ridge) regression | UCM / state-space with time-varying level, Kalman-estimated, frequentist |
Carryover handling | Adstock (geometric or delayed), parameters given priors | Geometric or Weibull adstock, parameters searched by Nevergrad | Geometric adstock (alpha), searched over per-platform discrete grids |
Saturation | Hill-type shape with priors | Hill saturation, hyperparameters searched | Hill transformation (beta), common candidate grid |
Priors / bounds | Explicit prior distributions (adstock, saturation, ROI), ideally experiment-calibrated | Hyperparameter ranges plus multi-objective selection (fit + business plausibility) | Business-rule coefficient bounds (ASSR bands, correlation ladders, ±15% target-bound template) constraining each fit directly |
Uncertainty | Native posterior credible intervals on every quantity | Bootstrapped/heuristic; model-selection spread across Pareto-optimal candidates | Candidate-model ranking across the grid + bound discipline; no native parameter-level intervals |
Tooling | Open source (Python/TensorFlow Probability lineage) | Open source (R, Nevergrad) | Proprietary in-house pipeline (YAML-configured, per-cell, human-adjudicated) |
When preferred | Strong prior knowledge or experiment results to encode; uncertainty intervals contractually or culturally required; geo-level data rich | Fast semi-automated iteration, small teams, exploratory scoping | Baseline/trend interpretability is the product; business-rule governance must be explicit and auditable; large-scale parallel delivery with human validation gates |
The honest summary of the table: these approaches differ most in how they encode judgment (priors vs bounds) and how they express doubt (posteriors vs candidate spread), and least in the marketing science itself - carryover, saturation, decomposition and response-curve-driven optimization are common to all three columns.
You will be asked this - by clients who read Google's blog, and by new joiners who used Robyn at their last job. A fair, non-defensive answer, in roughly the words you might actually say:
Notice the structure, which you should keep even if you change every word: concede the shared science, state the genuine differentiator (state decomposition for the ST/LT story), translate priors-vs-bounds without jargon, volunteer the trade-off before they find it, and defuse the naming collision. What kills credibility is pretending there is no trade-off; what wins it is naming the trade-off and showing it is managed.
On that naming collision, to be fully explicit: this account's internal report design system is also called Meridian (the HTML style guide and CSS carry the name). It predates any connection to - and has none with - Google Meridian, and neither of them relates to this program's modelling stack. Three uses of one word; keep them apart in client conversation.
Draft your own answer to "why don't you use Meridian?" in 150-200 words, in your voice, for a client audience of marketers plus one sceptical data scientist. Constraints: concede at least one genuine strength of the Bayesian approach; name this program's trade-off honestly; use no equations and at most one statistical term. Keep it in your back pocket - the question arrives without an appointment. Compare against the model answer above only after writing yours.
- Google Meridian - official open-source documentation and GitHub (Bayesian MMM, successor to LightweightMMM); LightweightMMM (Google, JAX-based) for lineage
- Meta Robyn - official open-source documentation and GitHub (ridge regression core, Nevergrad hyperparameter search, geometric/Weibull adstock, Hill saturation, multi-objective model selection)
- Jin, Wang, Sun, Chan & Koehler, "Bayesian Methods for Media Mix Modeling with Carryover and Shape Effects" (Google Research, 2017) - the shared academic ancestor
- Program-side characterisation cross-checked against internal modules only: UCM/state-space/Kalman theory (module 2.3 sources), YAML hyperparameter grids (module 1.5), bound-setting method (modules 1.6/1.7), candidate ranking (module 3.1)
- Naming note: the account's internal report design system "Meridian" (
templates/STYLE_GUIDE_HTML.md/meridian-style.css) is unrelated to Google Meridian