AmIVisible
Methodology

How we measure AI visibility

Everything we show you is measured, sampled, and traceable to a raw AI answer — and when we claim a fix worked, we prove it against a control group instead of drawing a line that went up. This page explains exactly how, formulas included. Honest data, no AI theater.

What we measure: visibility %, not ranks

Your visibility score is the share of real buyer questions where an AI engine mentions your brand: visibility = mentions / total samples. If we ask 25 questions 3 times each and your brand shows up in 30 of those 75 answers, your visibility is 40%. We report this per engine and per week. We deliberately do not report a “rank” or “position” — see below for why that number would be noise.

Surfaces: which engine, which surface

Each engine is checked on the surface your customers actually use, not a proxy:

Surface disclosure: Perplexity is measured via the official API — API answers can differ from what a logged-in consumer sees in the Perplexity app (no personalization, different model routing). The DataForSEO-collected surfaces (ChatGPT, Google AI Overviews / AI Mode, Gemini) are scraped from clean logged-out sessions — they can likewise differ from a logged-in user’s personalized UI. We label each engine with the surface actually measured and never present one surface as another.

ChatGPT

The real web app (not just the API), via a data provider, on clean logged-out US sessions — no personal history skews the answers.

Google AI Overviews

Extracted from live Google result pages. AI Overviews render on only a subset of queries — when absent we record that (not "brand not mentioned") and exclude it from the denominator. Sampled from logged-out sessions; availability and answers vary by market.

Google AI Mode

The dedicated AI answer surface, read from live SERPs. Availability varies by market; an unavailable surface is recorded, not scored as an absence.

Perplexity (API)

The official Perplexity API, kept together with its citations.

Gemini

The Gemini web UI via a data provider.

Claude

The official Anthropic API with web search. Because the API path costs ~15× a scrape, Claude is sampled 1×/week (Growth & Agency plans).

Coverage honesty: what we measure — and what we don't

Every report and dashboard footer names the exact engine set behind its numbers (“Measured AI services: …”), generated from the engines actually used — never a hardcoded list. We report what those measured engines recommend; we never claim to know “what AI recommends in your country” unqualified. Where a market has significant AI services we do not measure yet (for example Yandex Alice and GigaChat in Russia), the footer says so explicitly until they are added.

The same honesty applies to competitors: not every brand named in an AI answer competes in your market. Detected competitors default to unclassified; only competitors confirmed as direct (by you, or by a classifier above a strict confidence floor) drive Competitor Gap and the money estimate, and market dominance is only ever computed from our own measured answers, never asserted from world knowledge.

Sampling & Wilson 95% confidence intervals

AI answers are not deterministic — the same question can produce different shortlists on consecutive runs. So we never rely on a single answer. Every monitored prompt runs as N prompts × 3 samples, every week, per engine (Claude via the official API with web search is sampled 1×/week). Google AI Overview / AI Mode runs where no surface renders are recorded as surface-absent and excluded from the visibility denominator, not counted as an absence. Around every visibility number we compute a Wilson score interval at 95% confidence (z = 1.96):

center = (p̂ + z²/2n) / (1 + z²/n)
half-width = z·√(p̂(1−p̂)/n + z²/4n²) / (1 + z²/n)

That band is drawn on every chart. If the band is wide, we tell you the sample is small — we never pretend to more precision than the data supports.

Recommendation Share: recommended, not just mentioned

Being named in an answer is not the same as being recommended. Our headline metric, Recommendation Share, counts only the answers where the AI puts you on an explicit shortlist (a numbered/bulleted “best options” list) or endorses you directly (“we recommend…”) — the answers that actually shift a buyer. It uses the same Wilson CI as visibility. If an engine mentions you in 40% of answers but only recommends you in 15%, that gap is the most actionable thing on your dashboard: the model knows you exist but doesn’t pick you.

Why we don't show “position #4”

The order in which AI engines list brands is close to random between runs. Independent research (see SparkToro’s study) shows list order in LLM answers is unstable run-to-run, so a tool telling you that you “moved from #4 to #2” is selling noise. We show the median mention order only as a secondary signal, clearly labeled as close to random, and never treat it as a metric to optimize.

Alerting: two-proportion z-test vs. your 4-week baseline

When your visibility moves, we test whether the move is statistically real before we alert you. The current week’s rate is compared against your rolling 4-week baseline using a two-proportion z-test:

z = (p₁ − p₂) / √(p̄(1−p̄)(1/n₁ + 1/n₂))

We fire a drop or gain alert only when p < 0.05 two weeks in a row, or when the change is at least 15 percentage points on a sample of 30+ answers. We also mark known AI model releases on your charts — when an engine ships a new model, everyone’s numbers jump, and you should know the difference between “the model changed” and “your visibility changed”.

Real change vs. within noise
Real changeWithin noiseInsufficient data

We only fill the badge — and only then send an alert — when p < 0.05 two weeks running or |Δ| ≥ 15pp. Below 30 answers a week we don’t call it either way — it stays “insufficient data”. We separate signal from noise so you don’t act on (or pay for) fake ranking changes. The delta, interval and p-value always sit next to the word “real” — numbers instead of adjectives.

Honest Lift: did your change actually work?

This is the part everyone else fakes. When you implement a fix, we freeze a baseline window and tag the prompts the change is meant to move (the target group). We also hold out a set of untouched prompts in the same niche (the control group). After a 3-day lag — long enough for the change to settle — we measure both groups over an equal-length window and compute a difference-in-differences:

Δ_target = share_after − share_before (targeted prompts)
Δ_control = share_after − share_before (untouched prompts)
Lift (DiD) = Δ_target − Δ_control , with a 95% CI

Subtracting the control’s change removes everything that moved for the whole market — a model update, a seasonality swing, a competitor’s campaign. What’s left is the part plausibly caused by your change. We report it with a confidence interval and one of five verdicts:

Confirmed liftDiD > 0, target significant at 95%, the DiD interval clears 0, and ≥30 answers per group/window.
Probable liftPositive, but medium sample, the interval touches 0, the control also rose — or there is no control group.
No signal yetThe move sits inside the noise band. The honest answer, not a spun one.
RegressionA statistically real decline net of the control.
Insufficient dataBelow the minimum sample in some window — we say so rather than guess.

For a single small brand there may be no clean control group. In that case we still show the before/after with its CI, but we cap the verdict at “probable” and say plainly that part of the move could be market drift. We would rather under-claim than sell you a false certainty.

Why a before/after graph lies

“We made a change, then our visibility went up” is not evidence the change worked. AI answers drift constantly — the same question rarely returns the same shortlist twice, and model updates move everyone’s numbers at once. A line that goes up after you did something is a coincidence until you show the untouched prompts didn’t move the same way. That comparison — not the pretty line — is the proof. It’s why we lead with the verdict and the interval, and treat the graph as decoration.

Prompt sets: generated, editable, versioned

We generate buyer questions from your niche across the whole journey — problem, solution, comparison, shopping — with at least 70% of prompts never mentioning your brand (that’s where discovery actually happens). You can edit any prompt. Edits create a new frozen version of the prompt set, and every chart shows a visible trend-break marker at the week the set changed — so you never mistake a questionnaire change for a market change.

Raw answers: every data point traceable

Every number in your dashboard links back to the full answer text it came from, with the engine, timestamp, and the sources the engine cited. No black boxes: if we say you were mentioned in 12 of 75 answers, you can read all 75.

When an engine fails: partial flags, never silent gaps

AI engines and data providers time out. When that happens, failed runs are excluded from the denominator, the affected report or weekly snapshot is explicitly flagged as partial, and the gap is visible on your charts. We never fill a gap with an estimate, and we never silently pretend a missing answer was a “not mentioned”.

What we don't promise

Nobody can guarantee placement in an AI answer — and you should be wary of anyone who does. AmIVisible shows you where the odds are, what changed, and whether a change is distinguishable from noise. We measure the best available estimate with honest bounds; we don’t sell certainty that can’t exist. When the honest answer is “it didn’t work” or “we can’t tell yet”, that’s exactly what you’ll see.

Questions about the methodology? Run a free check and see the raw answers for yourself.