How we measure AI visibility.

An AI answer is a probability distribution, not a ranking. Ask the same question twice and you can get two different citation lists back. Most AI-visibility tools hand you one clean daily number and hide how they got it, but a tidy number laid over noisy data is just noise with better styling. This page is the opposite: the full protocol behind every figure we publish. How we capture what the engines actually do before they answer, how we sample, how we compute confidence, and where we refuse to claim more than the data supports. No black box, no proprietary score you have to take on faith.

7runs per prompt per engine per day, the statistical floor
95%Wilson confidence interval on every trend we publish
0.12cross-engine source overlap: why scores are never blended
45.5%how often sentiment flips between runs, reported aggregated only

Query fan-out & grounding

Start with what almost every other tool misses: the prompt you track is rarely the query the engine actually runs. Before it answers, ChatGPT, Gemini, and the rest silently fan a single prompt out into several reformulated search queries. “best CRM for startups” becomes “best CRM for early-stage startups 2026,” “CRM pricing comparison,” and more. We reconstruct those reformulations straight from each engine’s own tool-call trace, because they, not your typed prompt, are the queries you actually have to win. Optimize against the prompt and you are tuning for a question nobody searched.

For every answer we also record which source the engine grounded each individual claim on: the citation backing a specific sentence, not just a bag of links at the bottom. That claim-to-source map is what lets us point at the exact passages that earned a citation and the ones the model read past.

And we discard data on purpose. An engine will sometimes answer from memory without searching the web at all, and that answer’s “mention” of your brand is not a visibility signal, it is a stale training-data echo. We detect whether each answer was genuinely grounded in live retrieval and drop the ungrounded ones before they ever reach your score. A number built on un-searched answers is worse than no number.

Sampling design

A single query run tells you almost nothing. Day-to-day overlap in cited sources for the same prompt averages a Jaccard score of 0.34 to 0.42 across 45 days of live engine monitoring: roughly two-thirds of cited sources change day to day with no content change anywhere on the underlying pages. Same-day repeated prompts come back nearly as unstable. One snapshot is a coin flip dressed up as a fact.

So we run every prompt multiple times per engine per day. The literature floor for a brand-rate standard error under 0.10 is 7 runs; that is our minimum, not our ceiling.

The schedule is adaptive, not flat. About 77.5% of prompt-engine cells are deterministic: your brand is always mentioned or never mentioned. After 14 days of history, a stable cell drops to 2 runs a day; a flipping cell (mentioned somewhere between 30% and 70% of the time) keeps the full 7. Same statistical confidence where it matters, roughly half the query volume overall.

Confidence intervals

Every trend line we publish carries a Wilson 95% confidence band, computed from the actual run count behind that cell. A narrow band means we ran enough queries to trust the point estimate. A wide band means we did not, and we show that width instead of hiding it behind a clean-looking line.

A change only counts as movement when the bands for two periods stop overlapping. If they still touch, we label it “no significant change,” full stop, even when the point estimate moved. Most of this category screenshots every uptick and calls it progress. We would rather tell you the data is flat than sell you a story it cannot support.

Share of voice

Share of voice for brand b on a given prompt set:

SoV(b) = M(b) / ( M(b) + Σ M(c) )

M(b) is how often your brand is mentioned across the prompt set. The sum in the denominator runs over qualified competitors only: brands that appear repeatedly or resolve to a real, checkable domain. A model hallucinating a made-up competitor name once does not earn a seat in the denominator, so it cannot quietly dilute your score. Most tools count every name the model happens to say; we filter first.

Per-engine isolation

ChatGPT, Gemini, and Perplexity draw from almost entirely separate source pools for the same prompt: cross-engine cited-source overlap sits around 0.12 Jaccard. They are not three windows onto the same answer. They are three different answers built from three different sets of sources.

That is why we never publish a blended “AI visibility score” across engines. Every number on this site and in your dashboard is reported per engine. Averaging them would smooth over the exact differences you need to see to know which engine actually needs fixing.

Sentiment, honestly

Sentiment is the least stable signal we measure. Across repeated runs of the same prompt, sentiment flips 45.5% of the time, 6.7 times noisier than a simple mention. A single answer’s sentiment is close to a coin flip.

We only report sentiment aggregated across 10 or more prompts per platform, with the sample size printed next to the number. No per-answer sentiment badges, no green or red chip on a single response. When the sample is too thin, we show no sentiment number at all rather than a false one.

API versus UI

We sample ChatGPT, Gemini, and Perplexity through their published APIs and label them API-sampled in your dashboard. That is a deliberate, repeatable, billable query path, and it can diverge from what a person sees typing into the consumer app: consumer interfaces layer on personalization, memory, and product-specific ranking that the API does not expose.

Google AI Overviews, Google AI Mode, and Microsoft Copilot have no equivalent API for this. We sample those from the real user-facing surface through data providers who scrape the actual product, not a proxy endpoint. Both approaches are labeled in the dashboard so you always know which surface produced a number.

Crawler verification

When we report AI crawler traffic on your site, we check the requesting IP against the vendor’s published range for that bot, not just the user-agent string a request can forge. A bot with a published range gets a verified badge. A bot without one gets labeled UA-only, because nobody, including the vendor running it, can currently prove a given request came from them.

BotVerification methodStatus
OpenAI (GPTBot, ChatGPT-User)Published IP rangesVerified
Google (Google-Extended, Googlebot)Published IP rangesVerified
Anthropic (ClaudeBot, Claude-User)Published IP rangesVerified
Perplexity (PerplexityBot)Published IP rangesVerified
Amazon (Amazonbot)Published IP rangesVerified
Bytespider (ByteDance)No published rangesUA-only
Grok (xAI)No published rangesUA-only
Meta AI crawlerNo published rangesUA-only
Mistral crawlerNo published rangesUA-only

Prior art

The design choices above are not opinions. They trace back to three 2026 papers and one public metric glossary, listed here so anyone can check our work.

arXiv 2604.07585

45 days of live engine monitoring measuring day-to-day citation volatility. Source for our run-count floor (n=7 for brand-rate standard error under 0.10) and the case for confidence bands over single snapshots.

arXiv 2606.20065

The Ranqo dataset paper on mention and sentiment stability across repeated runs. Source for the qualified-competitor share-of-voice formula, the cross-engine source-overlap figure, and the sentiment aggregation floor.

arXiv 2410.03492

Demonstrates that large language model outputs vary even at zero temperature and a fixed seed. Source for treating every measurement as a distribution rather than a single ground truth, and for cheap prediction-interval methods from repeated runs.

docs.peec.ai

Peec AI's public metric definitions, the closest existing prior art for generative-engine measurement terminology. We link it because a shared vocabulary helps buyers compare tools; we do not adopt every definition unchanged.

This protocol runs behind every audit.

Every metric in a Noetio audit is built on the sampling, confidence, and per-engine rules on this page. See the audit itself, or check where you stand first with the free scan.

Run the free visibility scan →See pricing →