How-To Guide

How to Add AI Visibility as a Channel in Your MMM

Step-by-step instructions for adding AI search visibility as a discrete channel in Robyn, LightweightMMM, or commercial MMM tools. Data formats, transforms, and validation checks.

By Ramanath, CTO & Co-Founder at Presenc AI · Last updated: May 17, 2026

Step 1: Get the AI Visibility Time Series

You need a weekly numeric series that proxies AI exposure for your brand. The standard metric is LLM share of voice: the percentage of category-relevant prompts in which your brand is mentioned across the major AI platforms, weighted by platform reach in your audience. The series should be exported as a CSV with two columns: week (ISO date) and SOV value.

For backfit work, you need at least 52 weeks of history. Presenc AI provides historical backfill via prompt-testing against the AI platforms' time-stamped state; without backfill, the variable will be informative only after six to twelve months of forward measurement.

Step 2: Pick the Variable Type

In Robyn, the AI variable enters as a paid_media_var with a corresponding paid_media_spend column. Because AI visibility is exposure rather than spend, set the spend column to a constant placeholder (1 per week) and rely on the impression-style coefficient for interpretation. In LightweightMMM and PyMC-Marketing, the variable enters as a media variable with the same convention.

Alternative spec: enter the AI variable as a control variable in the base equation rather than a media variable. This is acceptable when the data history is short or when the brand wants the model to be conservative about the AI channel's contribution. The trade-off is loss of a standalone response curve, which means budget allocation recommendations cannot include AI as a discrete line.

Step 3: Set Adstock Priors

Use a geometric adstock with half-life prior of two to four weeks for most categories. Long-consideration B2B categories may need half-life up to eight weeks; short-cycle consumer purchases may use one to two weeks. The prior matters because the AI visibility series is typically short relative to TV-style channels, and uninformative priors will produce wide posteriors.

In Robyn syntax: set adstock = "geometric", and supply theta_min and theta_max bounds that correspond to your half-life prior range. In LightweightMMM, use the carryover_loc and carryover_scale arguments on the AI variable.

Step 4: Set Saturation Priors

Use a Hill or S-curve saturation with the half-saturation point prior in the middle of the observed AI visibility range. The intuition is that AI visibility, like any exposure variable, hits diminishing returns once your brand is consistently mentioned in the top three of the relevant prompts. Past that threshold, additional SOV improvements produce smaller incremental conversion gains.

In Robyn: hill_function = TRUE with alpha and gamma bounds reflecting moderate saturation. In LightweightMMM: use the saturation_loc and saturation_scale priors on the variable.

Step 5: Run the Refit

Refit the model with the AI variable added. In Robyn, this is robyn_run() with the updated InputCollect; in LightweightMMM, this is lightweight_mmm.fit() with the updated media data. Expect the run to take longer than baseline because the Bayesian sampler has an additional variable to identify.

If the run fails to converge, the most common cause is multicollinearity between the AI variable and existing channels (especially branded search and PR-driven brand mentions). Address this by orthogonalizing the AI series against the most correlated existing variable or by tightening priors on the AI coefficient.

Step 6: Validate the New Decomposition

Three checks. First, look at the channel contribution waterfall. The AI variable should have a non-trivial contribution (greater than 1 percent of decomposed revenue) if the model identified it. Second, the base demand contribution should have dropped relative to the pre-AI-variable model, because some of that base is now attributed to AI. Third, the MAPE on a holdout period should improve, indicating the AI variable adds explanatory power.

If any of these checks fails, revisit the spec. The most common issue is adstock too short (AI carryover underestimated) or the AI series being too noisy because the prompt set is too small.

Step 7: Inspect the Response Curve

Plot the response curve for the AI variable. It should show clear diminishing returns at the upper end and a reasonably steep slope at typical operating SOV levels. A flat response curve indicates the model did not identify the variable; a hockey-stick response curve indicates the saturation prior is too weak.

The response curve is the operational output. It is what the budget optimization step uses to decide whether the next dollar of marketing investment should go into the inputs driving AI visibility or into the next-best channel.

Step 8: Document and Govern

Document the AI variable in the model governance pack: the prompt set used, the platforms covered, the SOV computation, the adstock and saturation priors, the validation results. Any change to the prompt set or platform list is a model change and needs to be flagged in the next refit.

How Presenc AI Helps

Presenc AI exports weekly LLM share of voice in the exact CSV format that Robyn, LightweightMMM, and PyMC-Marketing expect. The export includes a stable prompt set governance trail, platform weighting that matches the brand's audience profile, and historical backfill so the AI variable has 52 weeks of context from the first refit.

Frequently Asked Questions

As an exposure variable with a placeholder constant in the spend column. Robyn expects every paid_media_var to have a corresponding paid_media_spend column, but for AI visibility (which is not a spend channel) the spend column is a formality. Interpretation focuses on the response curve and coefficient, not on ROI-per-spend math.
Use it anyway with informative priors on the AI coefficient to compensate for limited data. Expect wide posteriors for the first one to two quarters of measurement. The alternative is to leave AI out of the model, which guarantees zero attribution to a channel that is demonstrably moving demand. Vendor-provided historical backfill (such as Presenc AI's default 52-week series) is the cleanest fix.
Yes. Recast, Northbeam, Measured, Mass Analytics, and most commercial vendors accept arbitrary CSV inputs as custom channels. The same adstock and saturation principles apply. Some platforms have AI channel templates that pre-configure reasonable priors, which is a useful starting point but not a substitute for category-specific calibration.
They are correlated but not duplicative. PR spend produces AI visibility, but AI visibility is also driven by content, structured data, Wikipedia, and product-led growth. The clean spec includes both variables; the model identifies the marginal contribution of each. If multicollinearity is severe, the standard fix is to orthogonalize the AI series against PR spend before refitting.

Track Your AI Visibility

See how your brand appears across ChatGPT, Claude, Perplexity, and other AI platforms. Start monitoring today.