Meridian and Robyn,
side by side. No setup.

Upload a CSV, drag the models you want onto the canvas, and run them at the same time. The benchmark puts them on the same axes: fit, ROAS, and each model's optimized budget.

Built on Meridian · Google Robyn · Meta
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 or Meridian 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 uses it. Change it once and it changes for all of them.

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

Build the pipeline by dragging it

Nine 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. Repoint the wire and the node reconfigures itself. 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 Wide priors R² .84 2.9×

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

04 · Compare models and frameworks

Robyn and Meridian in the same table

Wire models and allocators into the benchmark node and it puts Robyn and Meridian 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 two engines agree on, and which they don't, is visible in the same table.

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 Only these people AI MT JL
Outside · one link per flow
meryn.ai/s/q4-media-plan Copy
Anyone with the link Only invited emails
ana@client.com
tom@agency.com
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 you get one link. Leave it open to anyone who has it, or restrict it to the emails you invite. What opens is the winner you marked and its optimized budget, read only, with no account to create — and the eight models you tried and discarded stay where they are.

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 with the validation window you choose
  • Iterations and trials on the evolutionary search
  • Prophet trend, seasonality, weekday and holidays by country
  • The whole Pareto front — R², DECOMP.RSSD and baseline 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 in four types — ROI, marginal ROI, contribution or coefficient — set separately for paid, 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
  • Full MCMC control — chains, adaptation, burn-in and kept draws
  • Convergence you can audit — R-hat, divergent transitions, effective sample size
  • Budget allocator — fixed and flexible budget
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.

Calibration from lift tests in Robyn. Meridian takes them as ROI priors; Robyn's calibration_input isn't wired up.
Exposure variables. Media goes in as spend, not impressions or GRPs — in both engines.
Model refresh. A rerun with new data is a new model, not an update that carries the old fit forward.
Reach and frequency channels in Meridian. Paid media is modeled from spend only.
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?" +

You set the parameters yourself, so you know every assumption going in. The engine is Meridian and Robyn — the same code published by Google and Meta on GitHub. 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 not a dashboard telling you what to believe. That's evidence.

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 Meridian and Robyn · Export everything