Methodology
How MentionFlow measures AI search
Visibility data is only useful if you can defend it. This page documents exactly how we sample each engine, how every metric is computed, and where the limits are. When the methodology changes, we version it and annotate your charts.
Sampling
- Every tracked prompt runs on every selected engine once per day (plan-dependent cadence), per configured region with its local language and Google location targeting.
- We sample consumer surfaces wherever they diverge from developer APIs — our published bake-off found official-API ChatGPT answers agreed with the real surface only 42–67% of the time on brand presence.
- Raw answers are stored verbatim and re-scored whenever our extraction improves (it has happened twice already; both re-runs are in the changelog).
- All metrics report on rolling windows — never single runs. Windows with fewer than 5 samples are flagged low-confidence.
Extraction
- Two passes: a deterministic alias matcher decides presence, then an LLM pass ranks every brand in the answer (tracked and untracked), assigns sentiment, and quotes the verbatim evidence behind it.
- mention position means rank among all brands in the answer — what a buyer actually sees.
- Measured on a hand-labeled golden set: presence F1 100, sentiment agreement 84% and climbing as the set grows.
- Sponsored content policy: ads that engines display inside answers are captured, excluded from every metric, and shown separately on each answer's receipt.
Per-engine method
ChatGPT
- Method
- The real consumer chatgpt.com surface, sampled through managed browser infrastructure (logged-out sessions, geo-targeted per region). We tested this against the official API with web search: the API rarely searched (8% vs 100%), cited ~1 source vs 13–14, and ran an older model — so we sample what users actually see.
- Fidelity
- Exact surface, current consumer model. We record the model version on every run.
- Caveat
- ChatGPT now shows sponsored ads inside answers. We capture them, exclude them from every metric, and surface them separately as ad intelligence.
Gemini
- Method
- The consumer Gemini interface, sampled via managed scraping — not the developer API.
- Fidelity
- Exact surface, including citation cards and tables.
- Caveat
- Consumer model routing changes without notice; the recorded model version tracks it.
AI Overviews
- Method
- Real Google SERPs with AI Overviews, geo-targeted per region and language.
- Fidelity
- Exact. This is the actual consumer surface.
- Caveat
- AI Overviews don't trigger on every query; an empty result is itself a data point we record.
AI Mode
- Method
- Google's conversational AI Mode surface, sampled per region and language.
- Fidelity
- Exact surface, markdown and references preserved.
- Caveat
- A young surface — Google iterates on it quickly; expect more answer churn than AIO.
Copilot
- Method
- The consumer copilot.microsoft.com surface, sampled through the same managed browser infrastructure as ChatGPT and Gemini. Citations are read from the answer's own source list.
- Fidelity
- Exact surface, including its cited sources.
- Caveat
- The newest engine in the lineup — collected since July 2026, so its long trend windows are still filling in.
Perplexity
- Method
- Official Perplexity Sonar API. Citations are returned natively by the engine.
- Fidelity
- Very high — the API is the same engine behind perplexity.ai, so no scraping needed.
- Caveat
- Pro-subscriber model variants may differ from the default Sonar model we sample.
Claude
- Method
- Anthropic API with the web search tool enabled. Sampled weekly by default.
- Fidelity
- High.
- Caveat
- Small consumer-search share and ~40× the per-answer cost of other engines — hence weekly cadence, documented rather than hidden.
Grok
- Method
- xAI's Agent Tools API with the built-in web-search tool. The URLs the answer actually referenced are recorded as citations; what its searches merely retrieved is stored separately and never counted as a citation. Sampled weekly by default, daily with the Grok add-on.
- Fidelity
- High — search happens server-side at xAI, and the citations are returned with inline text offsets.
- Caveat
- How deep it searches is the model's own choice: we measured that turn and tool-call caps are accepted but do not bind, so we send none — the depth a real Grok user gets is the depth we sample.
The eight above are the search-grounded engines — they retrieve the live web before answering, and they are the only ones every blended headline metric is computed over. Three more answer purely from what the model absorbed in training:
deepseek-v4-flashPinned with thinking explicitly disabled — the bare model name defaults to thinking on, which changes latency and cost without changing the question we asked.
mistral-large-2512A dated snapshot, not the -latest alias: Mistral echoes back the name we requested, so an alias would make every stored answer unattributable the day it repoints.
Their APIs have no web-search step, so their citations are honestly empty — not missing data, an absence of anything to cite. That is also why they are excluded from the blend: a memory-only mention measures something different from a retrieved one, and averaging the two would give the headline number two meanings. Per-engine views show them in full, and filtering to one of them shows that engine unblended.
Metric definitions
| Presence Rate | runs where you appear ÷ all runsThe honest, unweighted baseline. |
| Visibility Score (0–100) | 100 × Σ 1/log₂(1 + position) ÷ runsFirst mention earns full weight; later mentions decay logarithmically. Absence scores zero. |
| Share of Voice | your mentions ÷ all mentions across your TRACKED setZero-sum by construction — gains are taken from someone. A within-set number: brands an answer names that you don't track are not in the denominator, so this is your share of the set you chose, not of the market. |
| Citation Share | runs citing your domain ÷ runs with any citationOnly answers that cite sources count in the denominator. The meter on this metric is coloured, so here is the cutoff. An answer that cites anything usually cites several sources, and one of them being you is the bar we band against. Across 7,800 answers that carried a citation, measured 2026-07-26, the typical one named 7.67 distinct domains — the median named 8. An even split of that is |
| Sentiment Index (0–100) | 50 + 50 × (positive − negative) ÷ all sentiment-bearing mentions50 is neutral. Computed only on runs where you appear. |
Prompt volume
Nobody outside the AI labs knows how often a specific prompt is asked. OpenAI, Google and Anthropic don't sell their logs; vendors claiming "real prompt volumes" are projecting from small browser-extension panels. So we don't pretend. Our estimate is a model, and here is exactly how it works:
- Start from what assistants actually did. When an AI engine answers a tracked prompt, it usually runs web searches first. We record those exact queries on every collected answer — observed behavior, never simulated.
- Measure real Google demand for them. Those queries (plus the prompt's own head keyword) are looked up against Google Keyword Planner volumes — real search demand, not an index. The estimate is anchored on the strongest matched query (the maximum, not a sum: most engine-rewritten queries have zero measurable volume, and summing would reward that noise).
- Scale to AI usage — as a band. Published research places search-like AI asks at roughly 4–12% of comparable Google volume. We show that whole range (e.g. "1.2K–3.5K/mo"), never a false-precision integer.
- Calibrate against your own Search Console. When your site is connected, we match those same queries against what Google itself reports for your site. A match is real demand evidence from your market: the prompt is labeled measuredand we show your site's actual impressions on that query over the last 28 days — a real number, next to the modeled band, never blended into it. GSC impressions are how often your site appeared on Google for that query, not how often the query is asked globally, so the band stays a band.
- Label the confidence. measured = a query behind this prompt appears in your own Search Console data. anchored = a search an assistant actually ran for this prompt matched real Google demand. modeled = only the prompt's head keyword matched. "—" = no measurable demand signal yet — which is information, not zero.
This is a modeling choice, not a measured relationship: we don't claim a validated link between Google search volume and how often a prompt is asked inside an AI tool — and neither can anyone else. The only exception is labeled as such: measured impressions come from your own Search Console and count your site's Google visibility, nothing more. We'd rather show you an honest band than an invented count.
Known limits
- LLM answers are non-deterministic; day-to-day movement inside a window is expected noise. Judge trends, not ticks. Measured on our own tracked brands (1,034 prompt×engine consecutive-day pairs, July 2026): 92.6% kept the same brand presence between consecutive days. Per-engine flip rates ranged from ~4% (Perplexity) to ~11% (AI Overviews). We re-run this number as the dataset grows.
- We sample logged-out, so personalization and memory are excluded. We consider this a feature for measurement, and we say so out loud.
- Engines ship model updates without notice. We record the model version on every run and annotate charts when versions shift.
- US-English sampling by default; additional locales are sampled separately, never blended.
Questions about the method?
We'd rather lose a deal than fudge a metric. Ask us anything.
[email protected]