Why trust these numbers
Method and data boundaries
The moment a measurement product dresses “we don't know” up as “we know”, every number after it is worthless. So we put the method and the limits in the product, not in the contract.
“No data” is four completely different situations.
Competitors collapse them into one phrase. So you stare at a blank cell without knowing whether to fix your content, wait for a retry, or go authorize an account — and those are four completely different jobs.
citat.ai keeps the states apart. Observed and inferred stay visibly distinct, always; a failed collection says it failed and never poses as “you weren't mentioned”. This is the one we won't trade away: once a measurement product dresses “we don't know” up as “we know”, every number after it is worthless.
Competitors
No data found
citat.ai
- ObservedWe collected it, and the model did mention the brand. The only state that goes straight into the numerator.
- Not triggeredWe collected it, but the model named no brand at all for this prompt. That is a real zero, not a gap.
- Collection failedThe run itself broke. That's on us, not on your data — it must not be read as zero.
- No permissionThis engine needs an authenticated session and you haven't authorized one. What's missing is access, not visibility.
- Engine can't return itThis engine simply doesn't expose this kind of data. There will never be a value. Don't wait for one.
Four distinct states
An empty chart has to say why it is empty
“Never triggered”, “our collector broke”, “your plan does not include this engine”, and “this engine cannot produce this number at all” are four completely different things. Collapsing them into one “No data found” types a valuable observation and our own bug in exactly the same font.
What the engine came back with
This query did not trigger an AI answer
Not an error, not a gap — this is itself an observation: on this engine, this question never got as far as an AI summary.Google AI Overviews · “best portable power banks”
- 1.Nothing to fix — it is a fact
- 2.Keep collecting to see the trend — trigger rate is a metric in its own right
The chart on the right is the actual EmptyChart from @citat/ui — the same code studio runs, not a marketing-site replica of it.
We run every prompt twice.
Once through a browser against the consumer client: connected to the web, with query fanout — that reads what the AI just searched for. Once through the official API: model memory, no browsing, no fanout — that reads what the AI already remembers. The gap between them is the gap between “looked up” and “learned”. You can move the first with content; the second waits for the next training run. Report them as one number and you cannot tell which one to work on.
Browser collection
Traits
connected · has fanout · no official contract
What it reads
what the AI just searched for
Official API
Traits
model memory · no browsing · has a contract
What it reads
what the AI already remembers
Fanout is only available from chat clients. Google's search surface never gives it up.
Query fanout — the handful of sub-queries an AI splits your question into — is one of the most useful signals this category can offer: capture it and you know what the AI actually searched for.
But its availability is “structurally uneven” across platforms, and the platform with the most traffic is precisely the one you cannot get it from. This isn't about which tool is better engineered. It's about what the platform exposes.
So we don't promise “real cross-engine fanout monitoring”
For Google we mark the cell “engine can't return it” instead of having a model guess one. A guessed sub-query and an observed sub-query look identical on screen, and they differ in value by an order of magnitude. Tools already report it the guessed way — an LLM invents two “most likely sub-queries” per prompt, sold as observation. We would rather leave the cell empty.
| Platform | How sub-queries are exposed | Verdict |
|---|---|---|
| ChatGPT | The consumer client's network requests carry the real sub-queries; the official API's search-term field is “usually but not always” populated. | Partly available · moderately stable |
| Perplexity | The official API returns sources and related questions only. The old Steps view is gone from the web client, but the sub-queries are still in the network requests. | Partly available · unstable |
| Google AI Overviews / AI Mode | One question is split into 8–12 sub-queries run in parallel — but the consumer product exposes them to nobody. SERP data vendors only give you the answer and the cited sites; webmaster tooling folds AI Mode into ordinary traffic with no fanout granularity. | Essentially unavailable · inference only |
| Bing Copilot | Webmaster tooling hands you the grounding queries outright, classified by intent — but only for domains you have verified as your own. No competitor monitoring. | Available · your own sites only |
| Gemini (developer API) | The grounding metadata returns the real search terms in plain text. But that is a developer calling Gemini — a different path from the AI Mode consumers see, with no guarantee of the same fanout. | Reliably collectable · but not AI Mode |
Source: our 2026-07 feasibility study of platform documentation, publicly known mechanisms, and how comparable tools do it. The verdict column reflects “what the platform exposes”, not what we have already integrated — this table is a feasibility assessment, not a capability list.
The fanout boundary
If we can get it, you get to see it. If we cannot, we say so.
One question gets broken into several sub-queries inside the AI. Capture those and you know what the AI actually searched for. But not every engine lets you — and the one that does not happens to be the one with the most traffic.
How do we meet Chinese MLPS compliance when deploying Apple devices across the company?
Switch engine
Sub-queries it expanded into
- 01苹果设备 等保 2.0 合规要求Illustrative
- 02Apple Business Manager enterprise deploymentIllustrative
- 03macOS security baseline configuration guideIllustrative
- 04Secure Enclave MLPS assessmentIllustrative
Chat clients expose their sub-queries in the page's own network requests — we pick them up while collecting the web client.
The sub-queries below are illustrative, there to show what fanout looks like. They are not the record of any real collection run. The real content of this panel is the boundary: which engines expose it and which do not.
Ask the same prompt twice and the answer changes.
That is inherent to generative engines, not a bug. The consequence is direct: any visibility number reported from a single run carries a variance nobody told you about. As far as our research found, not one vendor in this category has published a repeat-sampling protocol — including the most expensive ones.
We don't intend to pretend the problem isn't there, and we don't intend to boast an accuracy figure before we have measured the variance ourselves. When we have, it goes here.