Skip to content

Resources White paper

Measuring AI visibility honestly

An answer engine does not rank; it samples. Ask the same prompt twice and you get two answers. This paper sets out how to turn that into a measurement: intervals instead of single runs, a sample size chosen before you measure, and a test before anything is called a change. Every number below is computed as you read it.

Published
October 2026
Author
AwesomeSEO
Data
@awesomeseo/evidence: Wilson intervals, two-proportion tests, count tests
Get the PDF by emailEvery number on this page is computed from the data at build time.

01One run is not a measurement

A tracker that asks ChatGPT once whether it recommends your brand and reports “yes” has measured one draw from a distribution. Named once in one run reads as 100%, and the honest interval around it is 21%–100%: almost anything. Named in 3 of 5 runs reads as 60% with an interval of 23%–88%. Only at 60 of 100 runs does the interval tighten to 50%–69%.

The same 60% at four sample sizes
3 of 5
60%23%–88% · n=5
15 of 25
60%41%–77% · n=25
60 of 100
60%50%–69% · n=100
240 of 400
60%55%–65% · n=400

Wilson score interval, 95% confidence. Computed with @awesomeseo/evidence.

Three things follow. A rate is only meaningful with its interval and its n. The interval is set by how many runs you can afford, so sample size is a decision made before measuring. And a change between two weeks is a claim that needs a test, because two intervals that overlap are usually the same number.

02The interval

We use the Wilson score interval. Unlike the textbook normal approximation it behaves at the edges (0 of 5 is not “0% ± 0”) and at small n, which is exactly where AI sampling lives. Its half-width shrinks with the square root of n: four times the runs halves the interval.

Half-width of a 95% interval by runs and underlying rate
RunsAt 50%At 20%At 5%
5±33.0 pts±29.4 pts±24.3 pts
10±26.3 pts±22.7 pts±17.0 pts
25±18.2 pts±15.1 pts±10.0 pts
50±13.4 pts±10.9 pts±6.6 pts
100±9.6 pts±7.8 pts±4.5 pts
200±6.9 pts±5.5 pts±3.1 pts
400±4.9 pts±3.9 pts±2.2 pts
1 000±3.1 pts±2.5 pts±1.4 pts

Wilson half-width. 50% is the worst case; a rarer or commoner brand gets a narrower interval for the same runs.

Five runs a week on one prompt give an interval of about ±33 points. That is a trend line over months, not a weekly reading. Pooling five weeks brings the same prompt to ±18 points.

03How many runs you need

Decide the precision first. runsNeeded inverts the Wilson half-width exactly, so it is the smallest n whose interval is at most the chosen width; it is slightly below the textbook formula z²p(1−p)/h² (93 runs against 97 for ±10 points at 50%).

Runs per prompt by precision, 95% confidence
PrecisionAt 50% (worst case)At 20%Weeks at 5 runs a week
±2.5 pts1 533982307
±5 pts38124577
±10 pts936019
±15 pts39268
±20 pts21145

Exact inverse of the Wilson half-width. Plan for 50% unless you have a prior.

±5 points on every prompt is expensive (381 runs each). The practical answer is to pool: prompts that share an intent on one engine measure the same thing and can be pooled; weeks can be pooled while the prompt set is stable. The sample-size calculator does the arithmetic for any precision, rate and prompt set.

04What counts as a change

A move from 51% to 63% on 35 runs a week looks like progress. A two-proportion z-test gives p = 0.334: not significant, and the product marks it n.s. The same difference held over eight weeks (144 of 280 against 176 of 280) gives p = 0.006: significant, with a 95% interval on the difference of 3% to 19%.

Two differences, one size, two sample sizes
ComparisonDifference95% intervalpVerdict
18/35 → 22/35 (one week)+11.4 pts-11.3 to 32.60.334n.s.
144/280 → 176/280 (eight weeks)+11.4 pts3.2 to 19.40.006Significant

Two-proportion z-test with Wilson-based interval on the difference (Newcombe). α = 0.05.

Counts need a different test. Citations, bot visits and AI referrals are events, not proportions, so the product uses an exact conditional test for two Poisson counts. Twelve citations one month and twenty the next is a ratio of 1.67 with a 95% interval of 0.83–3.36 and p = 0.215: not significant. The same ratio at 120 against 200 is significant (p < 0.001), interval 1.33–2.09.

05Many prompts, many engines

A workspace with 35 prompts on 7 engines compares 245 rates every week. At α = 0.05, noise alone would flag about one in twenty of them. The product controls the false-discovery rate with the Benjamini–Hochberg procedure before any prompt is reported as moved.

40 comparisons with no real effect: raw against controlled
2
flagged at p < 0.05, uncorrected
0
flagged after Benjamini–Hochberg, q = 0.05

Seeded simulation (mulberry32, seed 7): 40 p-values drawn uniformly, as they are under the null. Rerunning the build gives the same numbers.

Engines are reported separately, never averaged into one score. They differ in how they answer, cite and recognise brands, and the intervals make that visible: a brand can be steady on Perplexity and noise on Gemini in the same week.

06The protocol

AwesomeSEO samples the way this paper describes. The settings are fixed so weeks compare like with like.

Sampling as the product runs it
Runs
5 per prompt per engine per week, same prompt text, same market and language
Engines
7 sampled: ChatGPT, Gemini, Perplexity, Claude, Copilot, Google AI Overviews and AI Mode
Per run
Brand mentioned (yes/no), position in the answer’s list, sentiment towards the brand, domains cited, competitors named
Per week
1 225 runs for a 35-prompt set; rate, position, sentiment and citations per engine, each with interval and n
Pooling
Weeks are pooled within an engine while the prompt set is unchanged; prompts pool by intent
Change
Two-proportion test on rates, exact count test on citations and referrals, Benjamini–Hochberg across prompts; n.s. shown as n.s.
Source and age
Every figure carries which engine, which period, how many runs and when it was fetched

07The reporting template

A number that leaves the product carries seven fields. Anything less, and the reader fills the gaps with optimism.

What a sampled rate must carry
FieldMeaningExample
PointShare of runs mentioning the brand60%
Interval95% Wilson interval23%–88%
nRuns behind the point5
EngineOne engine, never an averagePerplexity
PeriodWeeks pooled, prompt set versionw40–w42, set v3
FetchedWhen the last run happened2026-10-19
ChangeTest result against the previous period11.4 pts, p = 0.334, n.s.

Example values from the worked numbers above.

08Definitions

Mention rate
Share of sampled runs in which the brand is named, for one engine and one prompt set.
Wilson interval
A confidence interval for a proportion that stays inside 0–1 and is accurate at small n (Wilson 1927).
Half-width
Half the distance between the interval’s ends; the “± points” a rate is reported with.
Two-proportion test
A z-test on the difference between two rates, with a Newcombe interval on the difference.
Count test
An exact conditional (binomial) test comparing two Poisson counts, with a ratio and its interval.
False-discovery rate
The expected share of flagged changes that are noise; Benjamini–Hochberg keeps it at q.
n.s.
Not significant at α = 0.05: the direction is shown, the change is not claimed.

Get “Measuring AI visibility honestly” as a PDF

Enter an address and the live product emails the PDF (awesomeseo-measuring-ai-visibility.pdf) with a link back to this page. You can also print this page: the layout is made for A4 and Letter.

Demo: nothing is sent from this page.

See the protocol run on a prompt set.

The demo workspace samples a fictional brand across seven engines and shows every rate with its interval, n and the test behind any change.