Iterate fast.
Many models.
One winner.

Three marketing mix modeling engines on the same data: Robyn, Meridian and PyMC-Marketing. You set the specification on each model and pick the best result.

Built on Meridian · Google Robyn · Meta PyMC-Marketing
The canvas

Five things the canvas does that a script on a laptop doesn't.

Every project is a canvas. The nodes are the pieces of your model: the dataset, the variables, the period, each Robyn, Meridian or PyMC run, each budget allocation, and the benchmark that compares them.

📄
Drop your file here
CSV or Excel · any column format
📊 Q4_media_data.xlsx ✓ Uploaded
01 · No infrastructure

The only thing you provide is the file

No R, no Python, no environment to set up, nothing running on anyone's laptop. Upload a CSV or Excel in whatever shape it already has and map your columns on screen: KPI, media spend, organic, controls, and geo and population if you have them.

That mapping becomes the Dataset and Variables nodes, and every model you hang off them reads the same one. Edit it later and meryn tells you how many trained models it invalidates before you confirm.

Drag to canvas
Dataset
Variables
Period
EDA
Robyn
Meridian
PyMC
Allocator
Benchmark
Note
Robyn
Not configured
Connect from a Period node
02 · Drag and drop

Build the pipeline by dragging it

Ten node types in the palette. Drop one on the canvas and drag a wire from whatever feeds it: a model hangs off a period, an allocator off a model, the benchmark takes as many as you connect to it.

No form asks which dataset this model uses — the wire already said so. Six months later you open the project and see what fed what.

Run 3 running · 1 queued
Robyn
Baseline
running…
Robyn
Longer adstock
running…
Meridian
Informed priors
running…
Meridian
Wide priors
Queued
03 · In parallel

Run every model at the same time

Hang as many models as you want off the same period and press Run. You don't wait for one to finish to start the next: they train at the same time, and the ring around a node means that model is training right now.

Anything over your plan's concurrency waits in a queue and starts by itself when a slot frees up. Close the tab; the canvas is where you left it when you come back.

Benchmark
Q4 2024 · media plan
Winner Published
1 Informed priors Fixed budget R² .91 3.7×
2 Baseline Max response R² .89 3.4×
3 Longer adstock Target efficiency R² .87 3.1×
4 Custom curves R² .84 2.9×

Meridian and Robyn agree Paid Social is underinvested by ~12%. Their allocators disagree on TV — that's where to dig.

04 · Compare models and frameworks

Robyn, Meridian and PyMC in the same table

Wire models and allocators into the benchmark node and it puts all three engines on the same axes: fit, ROAS, contribution per channel — with each budget allocation sitting next to the model that produced it, not in a separate tool. Which channels the engines agree on, and which they don't, is visible in the same table.

Every finished model also arrives with a verdict: Ready to use, Use with care, Not ready, or Not enough to judge. Each finding says what is off and where its threshold came from — the statistics literature, our own judgement, or the spread of the runs that already exist.

Marking a winner doesn't publish anything. When you publish the flow, whoever has the link sees that winner and its optimized budget, read only, without an account.

Inside · your team
Whole team Specific people AI MT JL
Outside · one link per project
meryn.ai/share/8f3c… Copy
Link active Revoke
They open the winner and its budget. Not the drafts, not your files.
05 · Share the result

Your client sees the answer, not the drafts

Publish a flow and the project's link opens it: the winner you marked and its optimized budget, read only, with no account to create. The models you tried and discarded stay where they are. Revoke the link whenever you want and it stops working.

Inside, a project is open to the whole team or to the people you name, and everyone who has it can create and run models. There's no read-only seat to hand out, because a link already does that: nobody has to be added to your team to see a result.

What's in the box

What you can set, and what you can't.

Every parameter below is one you set yourself, in the model node, before the run. The second list is what isn't supported today.

Robyn Meta · R
  • Three adstock shapes — geometric, Weibull CDF and Weibull PDF
  • Hyperparameters per channel — alphas, gammas and thetas, plus shapes and scales on Weibull
  • Train/test split at the train size you pick — Robyn splits the rest between validation and test
  • An effort level — low, medium or high — that sets how long the evolutionary search runs
  • Prophet trend, seasonality and holidays by country
  • Lift-test calibration — your incrementality results become a third objective the search optimizes against
  • The whole Pareto front — R², DECOMP.RSSD and paid-media share for every solution, not just the one we liked
  • Waterfall decomposition, response curves, fitted vs actual, residuals
  • Budget allocator — max response and target efficiency
Meridian Google · Python
  • Geo-level or national, read straight from your geo and population columns
  • Priors per channel — ROI, marginal ROI, contribution or coefficient on paid media; contribution or coefficient on organic and non-media
  • Lift-test results go in as custom ROI priors, which is how Meridian is meant to be calibrated
  • Adstock max lag, plus knots or automatic knot selection
  • Out-of-sample holdout at the fraction you pick
  • An effort level that sets adaptation, burn-in and kept draws. Chains are fixed at two — the job has 2 vCPU, so more of them compete instead of running in parallel
  • Convergence you can audit — R-hat, divergent transitions, effective sample size
  • Budget allocator — fixed budget, flexible budget and target marginal ROI
PyMC-Marketing Open source · Python
  • Geo-level or national — markets share one hierarchical model instead of one model each
  • Five adstock shapes and nine saturation curves, combined however you want
  • Priors per channel, or spend-informed defaults that start each channel at its share of spend
  • A raw JSON editor for anything the guided form doesn't expose, validated before it saves
  • An effort level that sets draws, tuning and chains
  • Out-of-sample holdout, cut by date so no market leaks into its own test
  • Lift-test calibration — one measured point on a channel's saturation curve
  • Budget allocator — fixed budget, target response, and the only engine that can move budget between markets
Not in the box yet

None of these are supported today. If one of them is a dealbreaker, better to know before you upload anything.

Exposure, reach and frequency. Media goes in as spend — not impressions, GRPs, reach or frequency — in all three engines.
Model refresh. A rerun with new data is a new model, not an update that carries the old fit forward.
Robyn on by-market data. It models national totals, so a by-market project offers Meridian and PyMC only.
Editing a trained model. Settings are fixed once it runs: editing the configuration discards the model and everything downstream, and the form comes back empty. Renaming it, and picking a different Robyn solution, don't require a retrain.
Common questions

If you're hesitating, it's probably one of these

"We already run Robyn or Meridian internally." +

Good — then you know a single run is the easy part. What Meryn adds is the tenth run, and the thing that compares all ten. Your data scientists keep their workflow. Your media analysts, strategists and clients stop queuing behind them for every variation.

"Does it really run several models at the same time?" +

Yes — each model trains in its own isolated container, so they don't share memory, disk or each other's files. Your plan sets how many run at once: 1 on Free, 3 on Pro, 10 on Enterprise. Anything beyond that waits in a queue and starts by itself the moment a slot frees up. You don't have to be watching.

"Our agency handles our MMM." +

Can you see the priors they set? Can you rerun the model next quarter with updated spend? If the pipeline lives in their environment, you don't own your measurement. On a canvas the whole thing is one diagram you can reopen, rewire and rerun — whether the agency built it or you did.

"How do I know the model output is correct?" +

Every finished model carries a verdict — Ready to use, Use with care, Not ready, or Not enough to judge — with the findings behind it and where each threshold came from: the statistics literature, our own judgement, or the spread of the runs that already exist. A clean panel is not a guarantee. It means we found none of the problems we know how to look for. And you don't have to take one run's word for it: when several models with different priors point at the same channel, that's evidence, not a dashboard telling you what to believe. The engines are the same open-source code published by Meta, Google and PyMC Labs.

Upload your first dataset today.

We're onboarding teams one at a time. Leave your email and we'll reach out.

Join the waitlist →

Runs Robyn, Meridian and PyMC · Export your models and charts