Marketing Measurement ·

A marketer’s guide to in-house MMM builds vs vendor tools

Should you build an MMM in-house or buy one? Open-source tools make building look easy. Here's why a model that holds up is so much harder to build.

Listen
0:00 / 0:00
AI-generated audio
A marketer’s guide to in-house MMM builds vs vendor tools

Most people can assemble a flat-pack bookshelf in an afternoon. A load-bearing staircase uses many of the same materials, like lumber, screws, and a drill, and from across the room a finished one doesn't look much more complicated. The difference shows up when someone carries a sofa up it. A staircase has to be engineered for the loads it'll carry, and that knowledge doesn't come in the box.

In-house marketing mix models (MMMs) have the same problem, but many marketing teams still wonder if they should build an MMM in-house or buy one. For most brands, buying is the better choice, as long as you buy a model that's actually built differently from what you'd build yourself. Standing up a basic MMM with an open-source library is easy. Building one that holds up when spend surges at peak season, when budgets shift, and when dozens of channels move at once is a research and engineering problem that takes specialists years. Many vendor tools are built on those same open-source foundations, so they inherit the same weaknesses.

We know there’s a lot riding on this decision. Your MMM tells you where next quarter's budget should go. A model that looks accurate but splits credit the wrong way will steer real money in the wrong direction, and it'll do it with charts that look perfectly convincing.

Key takeaways

  • For most brands, buying an MMM beats building one, but only if the model you buy isn't the same open-source approach with a dashboard on top.
  • Open-source MMM libraries make a first model easy to build, and early results often look strong because they fit past sales well.
  • A close fit to historical sales doesn't prove a model split credit correctly, and that gap tends to show up during peak seasons and budget shifts.
  • Most open-source MMMs assume sales are a baseline plus independent channel contributions, and that every channel's returns flatten. Many vendor tools inherit those same assumptions.
  • Prescient's MMM takes a mechanistic approach, building how marketing works into the model itself: funnel roles, delayed effects, flexible returns, and shifting efficiency.
  • In Prescient's peak-season simulation research, our model’s budget advice missed the ideal result by about 6%, while two common open-source setups missed it by roughly 32% and 45%.
  • A reliable in-house build needs specialized modeling talent, data engineering for every channel and retailer, and ongoing validation, which is a much larger commitment than the first prototype suggests.

Why so many data teams start with open-source MMM libraries

Data teams usually propose an in-house MMM because the tools to start one are free and well documented. Libraries such as Meta's Robyn, Google's Meridian, and PyMC-Marketing let a capable analyst go from raw data to a working model in a few weeks.

The first version tends to follow a familiar recipe. Pull two or so years of daily spend by channel and daily revenue, fit a regression-style model, and chart each channel's return. It feels like a customized alternative to paying a vendor.

Early results usually look good, too. The model tracks historical revenue closely, the channel returns seem plausible, and leadership gets a dashboard that appears to answer the budget question. That honeymoon is real, but it rests on a measure that doesn't tell you what you most need to know.

A model can reproduce past revenue almost perfectly and still assign the credit for that revenue to the wrong places. Many different ways of dividing credit between channels and baseline demand can produce the same total, and a close fit to history can't tell you which one is right. It takes a budget change, a peak season, or a forecast that misses for the problem to surface.

Where in-house open-source builds hit a wall

Open-source builds tend to hit a wall in four places: peak seasons, constant retuning, forced saturation, and channels that influence each other. None of these show up in the first few weeks, which is why they catch teams by surprise.

Peak-season spend and peak-season demand get tangled

Most open-source MMMs treat sales as baseline demand plus a set of separate marketing contributions. That works reasonably well when spend is steady. It breaks down when you raise spend exactly when shoppers are already buying more, which is what nearly every brand does for Black Friday, holiday launches, and big sales.

When spend and natural demand climb together, the data can be explained equally well with more credit to ads or more credit to the season. The model has no reliable way to choose, so its answer comes from its built-in assumptions rather than from your data. When too much seasonal demand gets credited to ads, the result is called baseline leakage, and it leads directly to recommendations to overspend at peak.

The tuning never ends

Because the data can't settle that split on its own, teams end up adjusting settings to get results that look reasonable: penalty strengths, parameter limits, and starting assumptions about each channel. Each adjustment picks a different answer out of the many that fit equally well. That's why a small tweak can move a large share of credit from one channel to another, and why the model's story can change from one month to the next without any change in your marketing.

Data teams can spend months in that loop. The work feels productive, but it's tuning a model that can't see the thing it's being asked to measure.

Every channel is assumed to flatten

Most open-source MMMs fit each channel's returns to a curve that always levels off, such as a Hill or Weibull function. Where the curve tops out gets set by the highest spend in your history, so a budget limit can masquerade as a channel limit. When Prescient compared response shapes on campaign data, simple straight lines tracked real spend-and-revenue patterns better than either standard curve did, which means these models can steer brands toward chronic underspending on channels that are still working.

Each channel is modeled as if it works alone

In a model built from separate pieces, a YouTube campaign and a branded search campaign are two independent sources of sales. Real marketing doesn't work that way. Upper-funnel spend builds demand that other channels later convert, and a model with no way to represent that tends to hand the credit to whichever channel is closest to the sale.

Buying isn't automatically the fix

Buying an MMM only solves these problems if the vendor's model is built differently. Many vendor tools use the same open-source libraries or the same modeling recipe underneath, with better data pipelines and a nicer interface added on top. That saves your team the setup work, but it doesn't change the assumptions, so the same peak-season and saturation problems come along with it.

That makes the most useful build-vs-buy question a different one: whose assumptions are you buying? When you evaluate any MMM, in-house or vendor, it's worth asking how it separates seasonal demand from ad performance, whether it forces every channel's returns to flatten, how it handles channels that influence each other, and how it's validated beyond fitting past sales.

What it takes to build an MMM that holds up

An MMM that holds up under real conditions has to be built around how marketing actually works, not just fitted to historical data. Prescient calls this a mechanistic approach, and our MMM is designed this way from the ground up.

Treating marketing as a living system

Instead of treating sales as a sum of independent slices, Prescient models marketing as a system with underlying states, such as brand awareness, buying intent, and how efficient marketing is at a given moment, that change over time. Spend acts on those states, and the sales you see are the visible result. Seasonal demand and marketing are modeled together, so the model doesn't have to split them apart after the fact.

Building something like this is closer to systems engineering than to fitting a regression. It means estimating states nobody can observe directly, keeping them stable as new data arrives every day, and making sure the structure doesn't simply invent whatever explanation fits.

Building marketing's real behavior into the model

A mechanistic model has to know some things about marketing before it ever sees your data. Our model builds in four of them.

  • Funnel roles. Demand-creating channels, such as video, CTV, and prospecting, build interest that demand-capturing channels, such as branded search and retargeting, later convert. That's what lets Prescient measure halo effects, the sales a channel drives by way of another channel.
  • Delayed and uneven effects. A brand campaign can build over weeks while a promotion fades in days, and our MMM learns those patterns per tactic instead of assuming one rate of decay.
  • Flexible returns. Channels aren't forced onto a curve that levels off, so a channel whose returns hold up as you add budget is shown holding up.
  • Shifting efficiency. The same spend can perform differently in a holiday week than in a slow one, and our model treats that as a change in how well marketing is working rather than folding it into baseline demand.

Each of these sounds simple to state. Getting all four to work together, stay stable, and avoid creating patterns that aren't in the data is where most of the years of work go.

Choosing models for stability, not just fit

A good fit to past sales is only the starting point. Prescient selects models that stay stable when reasonable assumptions change, not just the ones that score best on historical fit. In practice, that means testing predictions on data the model hasn't seen, checking that results don't swing when trend or seasonality settings shift slightly, and looking for cases where one part of the model—often the trend line—soaks up credit that belongs to marketing.

Lower-spend channels need extra care. Rather than estimating them alone, where noise can look like efficiency, Prescient first learns stable patterns across groups of channels, then lets smaller channels draw on that information so their estimates stay within realistic bounds.

Keeping the data flowing

None of the modeling matters if the data falls behind. Prescient maintains integrations with 112-plus platforms, from ad networks and creator tools to CTV and retail media, normalizes retail sales data from retailers that share it, and refreshes its models daily for online channels and weekly for retail. For an in-house team, each of those connections is a pipeline someone has to build, monitor, and fix every time a platform changes its API.

How test results get incorporated

Incrementality tests, such as geo-lift studies and holdouts, are one place where in-house builds often go wrong. A common workaround is to force the model's estimate for a channel to match the test result. That makes the model agree with the test in the place and moment the test ran, but it can pull the rest of the model out of line with everything else in your data. The model ends up locally accurate and globally inaccurate.

Prescient's approach is to treat a test as one piece of evidence. A test result can be incorporated into the MMM as a prior, and Prescient shows you the model's accuracy with the test included and without it. If the test improves the overall picture, that's clear. If it conflicts with the rest of your data, you can see that too, and you decide whether to keep it.

What the peak-season evidence shows

When Prescient put standard open-source setups through a simulated holiday season, their budget advice gave up between a third and almost half of what was achievable. That research ran our model and two common open-source approaches through a synthetic marketing environment with a known ideal budget, so every model's advice could be scored.

Measure (peak period)Regression-based open-source MMMBayesian open-source MMMPrescient’s model
Shortfall from following its budget adviceAbout 32%About 45%About 6%
Black Friday and Cyber Monday budget versus the idealAbout 81% too highAbout 11.5% too lowWithin about 1%
Error estimating each channel's peak lift (lower is better)About 0.56About 1.06About 0.28

The overspending model had credited holiday demand to ads. The underspending one had assumed marketing would run out of room long before it did. Both are the kinds of mistakes an in-house team is unlikely to catch from historical fit alone, because both models fit past sales well.

The true cost of building in-house

The real cost of an in-house MMM isn't the first prototype. It's everything needed to make a model trustworthy and keep it that way. Here's what a build that holds up typically requires.

What you'd needWhy
Modeling specialists with time-series and systems experienceBuilding a mechanistic model is research work, well beyond configuring a library.
Data engineersEvery ad platform, sales channel, and retailer needs a maintained data pipeline.
A validation processOut-of-sample testing and stability checks have to run continuously, not once.
Ongoing maintenancePlatforms change, channels get added, and the model has to keep up without breaking.
TimeGetting from a working prototype to a model you'd stake a peak-season budget on can take years.

There's also a subtler risk. A model built on mismatched assumptions doesn't get better as you feed it more data. Instead, it gets more confident in the same wrong split of credit. A team watching its fit improve can reasonably believe the model is improving, while the underlying problem stays exactly where it was.

In-house open-source build vs. Prescient

The comparison below summarizes the main differences between a typical in-house build on open-source libraries and Prescient's MMM.

In-house build on open-source librariesPrescient's MMM
How it models salesBaseline plus independent channel contributionsEvolving demand and efficiency, modeled as one system
Peak seasonsProne to crediting seasonal demand to adsModels seasonal demand and marketing together
Funnel rolesChannels treated as independentDemand creation and demand capture modeled differently
Returns on spendForced to level offLevel off only when your data shows it
Test resultsOften forced into the model by handAdded as a prior, with accuracy shown with and without it
Peak-season budget advice (simulation)About 32% to 45% shortfallAbout 6% shortfall
What you maintainModeling, pipelines, and validationPrescient maintains the model and integrations

Where Prescient comes in

With Prescient, omnichannel brands get a mechanistic MMM on day one instead of after years of research and engineering. Your site, Amazon, and retail sales sit in the same model, Modeled ROAS is broken out down to individual campaigns, and halo effects into other channels and retailers are measured and refreshed every day.

Your data team doesn't go away. It gets to spend its time pressure-testing results and planning with them instead of maintaining pipelines and retuning penalties. If you'd like to see how a mechanistic MMM reads a real brand’s anonymized data, book a demo.

FAQs

Is it cheaper to build an MMM in-house?

The first prototype is cheaper, since open-source libraries are free. The full cost is much higher once you add modeling specialists, data engineering for every channel and retailer, ongoing validation, and maintenance. For most brands, a model that holds up during peak seasons costs more to build and maintain than to buy.

Are open-source MMMs like Robyn and Meridian accurate?

They can fit historical sales well, and they're useful for learning how MMMs work. Their standard setups assume sales are a baseline plus independent channel contributions and that every channel's returns level off. Those assumptions are most likely to cause problems during peak seasons and large budget changes, when spend and natural demand rise together.

Why does a high R² not mean an MMM is accurate?

R² measures how closely a model reproduces past sales, not whether it gave credit to the right channels. Many different splits of credit can produce the same total, so a model can fit history almost perfectly and still be wrong about what drove it. Testing on unseen data and checking stability under alternative assumptions gives a better read.

What should I ask an MMM vendor before buying?

Ask how the model separates seasonal demand from ad performance, whether it forces every channel's returns to level off, how it handles channels that influence each other, and how it's validated beyond fit to past sales. It's also worth asking whether it's built on an open-source library, since that tells you which assumptions you're inheriting.

What is a mechanistic MMM?

A mechanistic MMM builds known features of how marketing works into its structure, such as funnel roles, delayed effects, and changing efficiency, instead of fitting a generic formula to historical data. That gives the model the right shape before it sees your data, so it's less likely to settle on an explanation that fits the past but misleads future budgets.

The Halo

Exclusive insights, every week.

Subscribe to The Halo for sharper marketing thinking.

Keep reading