The GEO measurement guide · chapter 5
What a defensible AI visibility report shows
A defensible AI visibility report states its question set, engines, window and days actually read, gives every rate with the number of answers behind it, shows what was not measured as not measured, dates every change to the question set, and calls a change real only when it clears a significance test.
7 days free · card required
ChatGPT
- Days read
- 20 of 30
- Answers
- 2,274
- Named us
- 90
Perplexity
- Days read
- 24 of 30
- Answers
- 2,100
- Named us
- 90
Claude, Gemini, AI Overviews
- Days read
- Not measured
- Answers
- Not measured
- Named us
- Not measured
Last updated
Key facts
What does a defensible report look like on real data?
This is a report on our own brand, built the way this chapter says a report should be built. The data is Attensira's own workspace for attensira.com, read over the Attensira MCP on 4 October 2026. Read the left column first: every number on the right depends on it.
| Field | What our report says |
|---|---|
| Question set | 61 prompts. 3 contain our brand name and are reported as their own group; 58 do not. |
| Changes to the set | The 3 branded prompts started producing answers on 24 September. Other prompts were added in mid and late September. No comparison below crosses those dates without saying so. |
| Engines and surface | ChatGPT and Perplexity, read in their consumer apps. Claude, Gemini and Google's AI Overviews are not read in this workspace and are reported as not measured, not as zero. |
| Window | 4 September to 3 October 2026 (30-day window read on 4 October). Answers were stored on 24 of its 30 days: all 24 on Perplexity, 20 on ChatGPT, first read on 14 September. |
| Answers read | 4,374, split by engine in the frame at the top of this page. |
| Named, branded group | 180 of 180 answers. |
| Named, unbranded group | 0 of 4,194 answers. |
| Cited our domain | 6.2% of 2,274 ChatGPT answers; 3.7% of 2,100 Perplexity answers. |
| Notable finding | On ChatGPT, the question "AI search visibility starting price" cited attensira.com in 42 of 57 answers and named us in none. |
| Change against the previous 30 days | Not measured. Nothing was read from 5 August to 3 September, so there is no earlier window to test against. That is a gap, not a failed test. |
| What this report does not say | Whether any answer produced a visit, a signup or revenue. Nothing joins an answer to a later visitor. |
Two lines in it are uncomfortable for us and both stay in. The unbranded line is zero. And the headline we could have written instead, "Attensira named in 4.1% of AI answers", is technically true and almost entirely produced by the three questions that contain our name. A report that leads with that number and leaves out the split is not lying, and it is not defensible either.
Which fields does every AI visibility report need?
Eight, and each one exists because a number without it can be read two ways.
1. The question set. How many questions, where they came from, and which contain the brand name. Every rate in the report is an average over these questions; without them the rate has no meaning. Branded and unbranded questions belong in separate rows, always.
2. Changes to the question set, with dates. A question added mid-window changes the sample. Our own ChatGPT share of voice read zero on every sampled day up to 23 September and turned positive on 24 September, the day three branded questions began producing answers. Nothing in the engines changed that day. Without the dated change, the chart reads as a win.
3. Engines and surface, each reported separately. Engines differ in which sources they trust and which brands they name, so a blended figure hides the finding. Surface matters too: Attensira records whether each answer came from a consumer app or a model's API and never averages the two, because they do not answer alike.
4. The window and its coverage. The dates, and how many days were actually read. A month with a week of missing readings is a smaller sample than it looks.
5. Every rate with its sample size. A rate is two numbers: the value and the count behind it. Attensira's dashboard switches from a percentage to a count below 20 answers, for example "3 of 12", and marks it thin. That line is a display rule, not a statistical test, and it is a good one to copy.
6. Unmeasured as unmeasured. An engine nobody asked has no rate. Showing it as zero invents a failure that never happened. Attensira's documentation is blunt about it: never render an unmeasured cell as zero.
7. Changes with their test. A movement is reported as real only when it clears a significance test against the previous window of the same length. Attensira uses a two-proportion z-test at 95% confidence and, when a change does not clear it, says "nothing we can prove yet". It also declines to call a change real when fewer than 70% of the window's days were read, because two thin samples weeks apart are not a trend. And when there is no earlier window at all, as in our own report above, the change is not measured. A missing window is a gap, not a failed test.
8. The work done. What shipped, where and when: pages, passage rewrites, crawler fixes, placements. A movement read without the work is a weather report. A movement read beside dated work is evidence you can argue about.
What does the cited line look like, week by week?
Our citation line as this chapter's fields ask for it: per engine, each count over its answers, unread weeks marked not measured, and a last week of six days. Most of the rise from 21 September arrives with the branded questions, which linked us in 159 of their 180 answers.
4 to 6 Sep
- ChatGPT
- Not measured
- Perplexity
- 0 of 16
7 to 13 Sep
- ChatGPT
- Not measured
- Perplexity
- 0 of 89
14 to 20 Sep
- ChatGPT
- 12 of 582
- Perplexity
- 0 of 519
21 to 27 Sep
- ChatGPT
- 49 of 726
- Perplexity
- 32 of 576
28 Sep to 3 Oct
- ChatGPT
- 81 of 966
- Perplexity
- 45 of 900
Which claims should an AI visibility report never make?
That visibility produced revenue. Nothing joins an answer a model gave someone to a person who later visits your site. Attensira's limitations page says the product cannot tell you that a mention produced a visit or a citation produced a signup. Referral visits from assistants are real and can be reported, but they are not the influence of the answers that never got a click.
That a blended score went up. A single score built from several engines and metrics can rise while every engine you care about falls, if the mix changes. Report the components.
That you beat a competitor because your slice of the pie grew. A share computed against all tracked brands' mentions has the competitor list as its denominator. Remove a competitor and your slice grows. Attensira's share of voice divides by answers, not by brands, so rates do not sum to a whole and editing the competitor list does not move your number.
That a small sample moved. One answer changing its mind in a sample of four moves a rate by a quarter of the scale. Quote counts for small samples and save the word "trend" for changes that clear the test.
That the engines think something. An engine's answer is one draw from a process that varies. "ChatGPT recommends X" from one screenshot is an anecdote. "ChatGPT named X in 41 of 57 answers over 30 days" is a measurement.
How do true numbers mislead?
The most common ways are not false numbers. They are true numbers with something missing.
- Branded questions in the total. Our own report shows how far apart the two groups can be: 180 of 180 against 0 of 4,194.
- A question set that changed in the window. The 24 September step in our ChatGPT line is the example.
- Averaged engines. A brand strong on one engine and absent from another averages to a number that describes neither.
- Missing days drawn as zero. Every outage becomes a drop.
- Citations read as mentions. Our pricing question shows the opposite case: cited in 42 of 57 ChatGPT answers, named in none. A report that only counted citations would call that question won. It is not. A buyer reading those answers never saw our name.
- Before and after from single answers. Two screenshots, one from before a change and one after, show changed wording, not movement.
What does a changed question set look like day by day?
Four days of our own ChatGPT line. 22 September was a thin read, not a bad day. On 30 September new questions arrived and the same nine mentions fell from 6.8% to 5.2%. Nothing in ChatGPT changed on any of these days.
21 Sep
- Named us
- 0 of 87
- Rate
- 0.0%
22 Sep
- Named us
- 0 of 30
- Rate
- 0.0%
29 Sep
- Named us
- 9 of 132
- Rate
- 6.8%
30 Sep
- Named us
- 9 of 174
- Rate
- 5.2%
How should the report read for someone who will not read the method?
Put a sentence beside every number. Most readers of a visibility report are deciding whether the work is worth continuing, not checking statistics. Give them sentences they can repeat accurately:
- "Named in 0 of 4,194 answers to questions that do not contain our name, on ChatGPT and Perplexity, over 24 days read in the last month."
- "Cited in 42 of 57 ChatGPT answers about AI visibility pricing, but not named in any of them."
- "Compared with the previous month: not measured, because nothing was read that month."
Each sentence carries its own evidence. None of them can be quoted out of context into something stronger than it is. That is the whole idea of a defensible report, applied to a slide.
How often should an AI visibility report be produced?
As often as the sample can support, and no more. A weekly report on a small question set read once a day mostly says "nothing we can prove yet", because a week holds only seven readings per question per engine. That is the test working, not the report failing, but it makes for a dull week. A monthly report on the same set pools four times the answers and can detect changes the weekly one cannot.
A sensible rhythm for most teams is a short weekly note on the work done and anything that crossed the significance line, and a full monthly report with every field above. Attensira's own reports follow the same idea: the work is listed as it ships, and a movement is only called a movement once the re-reads have enough answers behind them.
What should you ask a vendor before trusting their report?
Three questions cover most of it.
- "How many answers is this percentage built from, and on which engines?" If the answer is a single blended figure, the report cannot be checked.
- "What happens in this chart on a day you could not read an engine?" If the line drops to zero, every outage is reported as a loss.
- "How do you decide a change is real?" If there is no test, every wobble is a story.
Apply them to the report at the top of this chapter. It should survive all three.
Where does this chapter sit in the guide?
It is the last chapter of the GEO measurement guide, and it assumes the earlier ones: what can and cannot be measured, sampling and sample size, the difference between a mention, a citation and share of voice, and building a prompt set. The reports feature shows how Attensira lays out these fields in the product, and the AI search visibility page covers which numbers belong in a report at all.
Get a weekly read of what moved, with the n and the significance test built in.
7 days free · card required
What else do people ask?
What is the quickest test of an AI visibility report?
What should an AI visibility report never claim?
Can a report mislead without a single false number?
How should uncertainty be shown to a non-technical reader?
Should AI visibility numbers go in a board deck?
Where do these facts come from?
5 sources, 13 statements: each statement with the page it came from and the day it was checked.
Attensira MCP, read 5 October 2026 (attensira.com, 4 Sep to 3 Oct 2026): answers citing attensira.com per week were, on ChatGPT, not measured until 14 September, then 12 of 582, 49 of 726 and 81 of 966; on Perplexity 0 of 16, 0 of 89, 0 of 519, 32 of 576 and 45 of 900. The three branded prompts linked attensira.com in 159 of their 180 answers.
Attensira MCP, read 5 October 2026 (attensira.com, 4 Sep to 3 Oct 2026): ChatGPT answers were stored on 20 of the 30 days (2,274 answers, 90 naming Attensira) and Perplexity on 24 (2,100 answers, 90 naming Attensira); Claude, Gemini and Google AI Overviews were not read.
Attensira reports every rate as a value with the number of successful runs behind it, and every change as a value with a flag saying whether it is real.
docs.attensira.com · retrieved
Attensira's documentation says never to render an unmeasured cell as zero, because reporting null as zero invents a failure that was never observed.
docs.attensira.com · retrieved
Attensira reports a change between two windows of equal length only when it clears a two-proportion z-test at 95% confidence, and otherwise reports nothing we can prove yet; a change that clears the test is still not reported as real when fewer than 70% of the window's days were read.
docs.attensira.com · retrieved
“fewer than 70% of the window's days were read”
Attensira's dashboard shows a count rather than a percentage below 20 answers and marks such counts as thin, calling the 20-answer line a display rule rather than a statistical test.
docs.attensira.com · retrieved
“The 20-answer line is a display rule, not a statistical test”
Attensira's limitations documentation states that it cannot tell you that a mention produced a visit, a citation produced a signup, or any of it produced revenue, because there is no identity join between an answer and a later session.
docs.attensira.com · retrieved
Attensira records whether each run came from a consumer surface or an API and never averages the two; a window spanning both is reported as mixed.
docs.attensira.com · retrieved
Attensira's share of voice divides answers naming the brand by all answers, so rates across brands do not sum to a whole and adding a competitor does not change the brand's own number.
docs.attensira.com · retrieved
Attensira MCP, read 4 October 2026 (attensira.com): 61 prompts, 3 of them branded, read on ChatGPT and Perplexity from 4 September to 3 October 2026 (read 4 October), answers stored on 24 of 30 days; 4,374 answers; branded prompts named in 180 of 180 answers, unbranded in none of 4,194; nothing was read in the prior window (5 August to 3 September), so the change is not measured.
Read over the Attensira MCP on 4 October 2026: ChatGPT's 57 answers to 'AI search visibility starting price' cited attensira.com in 42 and named Attensira in none.
Read over the Attensira MCP on 4 October 2026: Attensira's ChatGPT share of voice read zero on every sampled day from 14 to 23 September 2026 and turned positive on 24 September, when its three branded prompts began producing answers.
Read over the Attensira MCP on 4 October 2026 (attensira.com workspace, ChatGPT, per day): Attensira was named in 0 of 87 answers on 21 September, 0 of 30 on 22 September, 9 of 132 on 29 September and 9 of 174 on 30 September 2026.
Want software that does your AI-search visibility work, with you in control of every change?
7 days free · card required
