Skip to content
Methodology · version 1.0 · 30 July 2026

How the measurement works

Written to be argued with. If you are an agency handing our numbers to a client, this is the page you forward, and nothing on it requires an email address.

Changes to this method are versioned. A number produced under version 1.0 stays labelled 1.0 forever.

1. The engines we query — and the two we refuse to

CitedProof queries four surfaces: ChatGPT, Google AI Overview, Google AI Mode, and the Google organic result page. The set is closed in code. Adding one is a versioned change to this page.

Engines measured and engines excluded
SurfaceStatusReason
ChatGPTMeasuredThe most-used assistant surface for buyer questions.
Google AI OverviewMeasuredAppears above organic results and is where a zero-click answer is formed.
Google AI ModeMeasuredA distinct surface with a distinct source mix; overlap with AI Overviews is roughly 10.7% of URLs.
Google organic SERPMeasuredThe control. It separates “not retrievable” from “retrievable but not cited”.
Gemini grounding APIRefusedGoogle’s terms prohibit analysing grounded results. Quoted below.
PerplexityNot measuredIts terms bar scraping the consumer product; we hold no API quota. If that changes it appears here with a date.

The Gemini exclusion is deliberate and permanent. Google’s Gemini API terms state:

“You will not, and will not allow your end user or any third party to, cache, frame, syndicate, resell, analyze, train on, or otherwise learn from Grounded Results or Search Suggestions… it is a violation of these terms to use Grounding with Google Search to extract or collect one or more of these components for another purpose.”

Source: ai.google.dev/gemini-api/terms. The identical clause appears in the Google Cloud service-specific terms for Grounding with Google Search. Analysing grounded results is exactly what this product does, so the engine is out. Competitors that report a “Gemini score” are either using a different mechanism or ignoring this clause; we are not in a position to say which.

2. How the prompt set is built

Prompts come from what you sell, not from a keyword tool. We crawl your site, extract the offerings, the audience and the category language, then generate buyer questions across six intents: informational, commercial, comparison, transactional, navigational and problem-first.

  • Every prompt is visible and editable before the first run. A prompt you would never hear from a customer is noise you are paying to measure.
  • Prompts are stored with a provenance flag — generated, autocomplete-derived, manual or imported — and that flag appears in the export.
  • The same prompt set is reused for the baseline and the day-30 re-measurement. Changing prompts mid-comparison invalidates the test, so the system refuses it and starts a new baseline instead.
  • Duplicate prompts are rejected at the database level on a normalised hash, so a set of 40 prompts is 40 distinct questions.

3. What counts as a mention, and what counts as a recommendation

A mention is your brand appearing in the answer text. A recommendation is the answer proposing you as an option for the buyer’s stated need. They are recorded separately because they are commercially different: being listed once in a footnote is not being recommended.

Each answer is read by a small language model with a strict output schema, and every score carries the match method that produced it:

Match methods recorded with every score
Match methodMeaning
exactThe brand name appeared verbatim.
aliasA registered alias appeared — a legal name, a former name, a common misspelling you confirmed.
domainYour domain was cited as a source even though the name was not written out.
fuzzyA near-match above threshold. Always shows the evidence quote so you can overrule it.
llmThe scorer judged a reference that no string rule would catch.
noneNot mentioned. This is the only value permitted when mentioned = false.

That last row is enforced by a database constraint rather than by convention: a row claiming “not mentioned” while also carrying a match method, or carrying a position, is rejected at write time. Every score also stores the evidence quote it was derived from, so a disputed call can be checked against the sentence that produced it.

4. The denominator rule — where NOT ENOUGH DATA comes from

A run where the engine returned nothing is excluded from the denominator. It is never counted as an absence. This single rule is the reason this company exists.

Each run is stored with an engine status: ok, degraded, no_data or error. Only ok and degraded runs enter the denominator. A run marked ok must carry actual response content — a database constraint rejects an empty “successful” run, because an empty run scored as a real absence is precisely how a tool ends up reporting 0% while the engine was simply down.

A rate is published only when both of these hold:

  1. At least 60% of scheduled runs returned a usable answer; and
  2. at least 20 valid runs exist for the comparison being made.

If either fails, no rate is published at all. The visibility rate, recommendation rate and share of voice are stored as null, a machine-readable reason is stored alongside, and the report prints NOT ENOUGH DATA with the number of runs it still needs. There is no configuration flag that turns this off, for us or for a white-label partner.

A genuine zero is still published. If the denominator is full and your brand appeared in none of the answers, the report says 0% and shows the runs. The rule removes fabricated zeros, not real ones.

5. The day-30 verdict — the statistical test

We compare two proportions with a z-test and report Wilson score intervals; we never subtract one percentage from another and call the difference a result.

The reason is measurable. Three independent parses of 9,734 Google AI Mode responses, on the same day, from the same location, agreed on only 9.2% of exact URLs across all three runs. On a surface that noisy, a raw delta reports mostly sampling variation.

  • REAL CHANGE — two-proportion z-test p < 0.05, and the Wilson intervals separate in the direction of the observed move.
  • NO CHANGE — the test does not reach that bar on a sufficient sample. This is a normal outcome and it is reported as plainly as a win.
  • NOT ENOUGH DATA — either side fails the sufficiency rule in §4. No delta and no p-value are shown, because a delta computed on an insufficient sample is worse than silence.

We also do not sell repetition as rigour. In a 12,933-response variance study, moving from 5 repeats to 10 reduced variance by 0.00030, while adding languages or engines was about fifteen times more effective per unit of budget. “Daily refresh” is a pricing feature. It is not a statistical one, and we will not charge you for it.

6. Tier 0 — the crawler-access check

Before any answer is measured we check whether the engines can reach you at all, because everything else is downstream of that. We test five crawlers and record what blocked each one: robots.txt, a WAF rule, a CDN rule, an HTTP status, or nothing.

Crawlers checked and their class
CrawlerClassBlocking it means
OAI-SearchBotRetrievalOpenAI states opted-out sites “will not be shown in ChatGPT search answers”.
ChatGPT-UserRetrievalFetches a page when a user’s request needs it. Per OpenAI, not used to decide search inclusion.
PerplexityBotRetrievalRemoves you from that engine’s retrieval path.
GPTBotTrainingAffects model training, not live retrieval. Blocking it is a legitimate choice.
Google-ExtendedTrainingGoverns Gemini training use. It does not control AI Overview inclusion.
ClaudeBotHybridReported behaviour spans both. We label it hybrid rather than guess.

The retrieval/training distinction is the part most reports get wrong. Blocking a training crawler is a business decision with no direct effect on whether you are cited today. Blocking a retrieval crawler removes you from the pipeline that produces today’s answer. We never recommend unblocking a training crawler to “improve AI visibility”.

What the evidence supports, stated at its real strength: across 1,058 domains, sites blocking GPTBot showed a citation propensity of 0.003 against 0.417 for non-blockers, and the authors state the data cannot prove causation. A separate study of 4M citations found sites blocking GPTBot still appeared in 88.2% of the prompts examined. So we sell unblocking as removing a handicap, not as a guarantee of citation.

A finding of this type ships with the exact lines to paste and the command that proves it worked:

# robots.txt — allow the crawlers that decide whether you appear in AI answers
User-agent: OAI-SearchBot
Allow: /

User-agent: ChatGPT-User
Allow: /

User-agent: PerplexityBot
Allow: /

# Training crawlers are your call. Blocking these does NOT remove you from AI answers.
# User-agent: GPTBot
# Disallow: /
# verification — expect 200, not 403 or 429
curl -sI -A "OAI-SearchBot" https://example.com/ | head -1
curl -sI -A "PerplexityBot" https://example.com/ | head -1

7. Evidence grades

Every finding carries the grade of the evidence behind it, and a weak grade is printed as a weak grade. An agency should be able to tell a client “this one is a controlled experiment, that one is a correlation” without reading the footnotes.

A Controlled experiment or a first-party statement from the engine operator
Randomised or difference-in-differences designs with a stated sample size, or documentation published by OpenAI or Google about their own systems.
B Large-N correlation
Real, large, and not causal. Reported with the coefficient and the sample size, and never phrased as “doing X causes Y”.
C Vendor-authored or single-source
Published by a party that sells the remedy it measures, or reported secondarily without a reachable primary. Usable as a hypothesis, labelled as such.
D Our own model, not yet validated
Our inference from other people’s data. Marked as ours. Example: our working rule that structure buys retrieval while substance buys citation, which reconciles two studies that appear to contradict each other. It is a hypothesis we test, not a finding we cite.

8. The finding tiers

Findings are grouped by mechanism, not by difficulty, because mechanism predicts how long the fix takes to show up.

Finding tiers, time to effect and owner
TierGovernsTime to effectOwner
0 — AccessWhether a retrieval bot can reach the page at all3–7 daysDev / DevOps
1 — SubstanceWhether a retrieved page gets cited: price stated, specifications, comparisons, evidence, hedging14–30 daysWriter
2 — RetrievabilityWhether the page is retrieved in the first place: answer-first structure, question coverage14–30 daysWriter + Dev
3 — Off-siteThe consensus about you across sources the models read30–90 daysPR / outreach
X — Do not doThings we tell you to stop paying forn/aNobody — that is the point

Tier 1 is the best-evidenced tier. A 252,000-trial study across six models found four factors behave as gatekeepers — topic mismatch, price not mentioned, stale timestamp and list position — and that hedged language carries an odds ratio between 2.67 and 754 against being cited. The same study found formatting choices had no measurable effect once the document was already in the model’s context, which is why we do not sell formatting as a citation lever.

Tier X entries are never assigned an owner. Our database refuses to store one: an anti-waste finding with a person attached is a task, and a task is what we are trying to remove from your week.

9. What this method cannot tell you

Stated plainly, because a methodology page that lists only strengths is marketing.

  • We do not see real user prompts. Nobody outside OpenAI and Google does. We measure a prompt set built to resemble your buyers’ questions; it is a sample, not a census.
  • We cannot attribute revenue. We measure whether you were named in an answer. Whether that produced a sale is a question your analytics answers, not ours.
  • Answers are personalised and localised. Our runs are non-logged-in and market-scoped. A logged-in user in another country may see a different answer.
  • Per-customer causal proof is not purchasable at this price. Reliability on a single engine stays near 0.02 even at 20 repeats. A day-30 REAL CHANGE tells you the two measurements differ by more than sampling noise — it does not prove your edit was the cause. We say “this changed” and never “we caused this”.
  • Engine behaviour changes underneath us. Citation-source mixes have moved dramatically inside weeks — Reddit fell from roughly 60% to roughly 10% of ChatGPT citations in one such window. Any rulebook that hardcodes today’s mix rots, so ours is dated and revised.
  • Our evidence base is other people’s research. Until we have measured enough sites to publish our own effect sizes, our grades describe the literature, not our results. When we have our own, they will be published with sample sizes.

10. Change log

Version 1.0 — 30 July 2026
First published. Four engines; 60% answer-rate and 20-valid-run sufficiency thresholds; two-proportion z-test with Wilson intervals; evidence grades A–D; tiers 0–3 plus X.

Last reviewed 30 July 2026.

Sources

  1. Google Gemini API additional terms — grounded-results clause. ai.google.dev/gemini-api/terms
  2. OpenAI crawler documentation — GPTBot, OAI-SearchBot, ChatGPT-User. developers.openai.com/api/docs/bots
  3. Google Search Central, AI features and your website, 15 May 2026. developers.google.com/search/docs/fundamentals/ai-optimization-guide
  4. SE Ranking — Google AI Mode, 10,000 keywords / 9,734 responses, three parses on 2026-06-20; 9.2% exact-URL agreement. seranking.com/blog/ai-mode-research
  5. arXiv 2607.13304 — variance decomposition, 12,933 responses; 5→10 repeats reduces variance by 0.00030. arxiv.org/html/2607.13304
  6. Sprinklr, SIGIR ’26 — 252,000 trials, 6 models, 18 factors; gatekeepers and hedged language. arxiv.org/html/2605.25517
  7. GEO-SFE — 2,400 cases through six live engines; +17.3% citation rate from structure. arxiv.org/abs/2603.29979
  8. cloro.dev — 1,058 domains; GPTBot blockers 0.003 vs 0.417 citation propensity; authors’ causation caveat. cloro.dev/research/ai-crawler-blocks
  9. BuzzStream — 4M citations, 3,600 prompts; GPTBot blockers still appeared 88.2% of the time. buzzstream.com/blog/news-block-ai-bots-citations
  10. Ahrefs — llms.txt across 137,210 domains; 97% received zero requests in May 2026. ahrefs.com/blog/llmstxt-study
  11. Ahrefs — schema and AI citations, difference-in-differences, 1,885 treated vs ~4,000 control. ahrefs.com/blog/schema-ai-citations
  12. Semrush — 100M+ citations, weekly snapshots; ChatGPT’s Reddit citation share fell from ~60% to ~10% within weeks. semrush.com/blog/most-cited-domains-ai

Found a hole in this?

Email hello@citedproof.com. A correction that changes a number on this page gets the number changed and the change logged in §10. That is the entire process.

Get the AI Access Report