Query fan-out: the missing link between SEO and AI visibility
Answer engines do not remember your brand, they search for it. Understanding the queries they actually run turns AI visibility from a mystery into a ranking problem you already know how to work on.
Ask ChatGPT for the best CRM for a 200-person sales team and it does not answer from memory. It runs searches, usually several of them, reads what comes back, and writes a summary over the top.
That one mechanic, the query fan-out, explains most of what people find strange about AI visibility. Why the brands you compete with in Google are the ones getting named. Why Reddit keeps turning up. Why the same prompt gives different sources this week than last. And why a page you published an hour ago can be cited this afternoon.
This post grew out of an interview with SEO consultant David Quaid on the Edward Show podcast. We have kept the parts that hold up, dropped the parts that were speculation, and added how to see the effect in your own data. Quotes are his, lightly tidied for reading.
The model is not an index
A large language model cannot hold the web. Nothing can, at the size and freshness Google operates at. So the retrieval-augmented products built on top of models, ChatGPT search, Perplexity, Gemini, AI Overviews, do the obvious thing: they hand the work to a search engine.
LLMs are not search engines.
What they do add is a translation step. Your prompt gets rewritten into one or more conventional search queries, each of which is run against an index. That set of rewritten queries is the fan-out. A short prompt might fan out into one query. A long, qualified, buyer-style prompt can fan out into three or more, each fetching its own top ten.
Two consequences follow immediately, and they are the whole point of this article:
- Your AI visibility is downstream of your rankings for the fan-out queries, not for the prompt. If you are invisible for a prompt you feel you should own, the usual reason is that the engine never searched for the words you optimised for.
- The retrieval is live. The crawler is not building a private copy of the web in the background, it is fetching pages while the answer is being written. Rank in Google in the morning and you can appear in a cited answer the same day.
Update, 22 August 2026. This section is half right, and the missing half matters. A model does search rather than recall, but what it already knows decides which searches it writes and which results it trusts. A brand absent from the weights never becomes a candidate, so the search that would have found it never runs. We take that apart in the half of AI visibility that is not SEO.
Fan-out drift: the queries keep moving
The rewritten queries are not stable. They change between engines, and they change over time for the same engine on the same prompt. Call it drift.
The most visible form is the year suffix. A prompt about “EEAT SEO guide” becomes a search for “EEAT SEO guide 2026”, which quietly re-sorts the results towards pages that put a year in the title. Other drifts are subtler, swapping “evaluate” for “compare”, splitting one prompt into a product query and a use-case query, or dropping a qualifier that was doing all the work.
This is why single-snapshot GEO checks are close to useless. You ran a prompt once, saw a set of citations, and recorded it as your position. Run it tomorrow and the engine may have searched for something else entirely. What you want is the same prompts, on the same engines, every day, so that drift shows up as a history rather than as noise.
Why big brands and Reddit keep winning
Once you see the fan-out, two of the loudest complaints about answer engines stop being mysterious.
Large brands get named because they rank for the widest set of query variants. Drift moves the target, and the sites that survive every variation are the ones with enough authority to rank for all of them. It is not a preference for big brands, it is a preference that emerges from asking ten related questions instead of one.
Reddit gets cited because Reddit ranks. Google surfaces forum and discussion results for a large slice of advice-shaped queries, so anything reading Google’s results inherits that. There is no special affection for user-generated content in the model, only in the index it is borrowing.
How to see your own fan-out
Three ways, in ascending order of effort.
1. Google Search Console, for the queries themselves. Filter your query report for long, oddly specific phrases. You are looking for a pattern that should not exist in human search behaviour: average position inside the top ten, a healthy count of impressions, and essentially no clicks. Humans who see you at position four click at some rate. Machines never do. Those rows are fan-out queries hitting your pages.
You might be thinking, “I just can’t get into LLMs.” You’re already there.
That combination, high impressions and near-zero clicks on deep queries, is also worth knowing about before you panic at a falling click-through rate. Part of that fall is not lost demand, it is machines reading the result page on a human’s behalf.
2. GA4, for the clicks that do arrive. The traffic from answer engines is referral traffic, not search traffic, so it never shows up in Search Console. In GA4 open Reports, then Acquisition, then Traffic acquisition, set the primary dimension to session source, and filter for chatgpt, perplexity, gemini or claude. Add landing page as the secondary dimension and you have a list of the pages answer engines are sending people to. Do not rely on UTM stamping here; only a fraction of the traffic carries a source parameter, so match on the referrer instead.
Expect the click-through rate to look terrible next to organic search. That is the shape of the channel: most of the value is being cited inside an answer that never gets clicked.
3. The network panel, for the literal search strings. Asking the assistant what it searched does not work, it will invent a plausible answer. The strings are in the response payload instead. Open developer tools on the conversation, switch to the network tab, filter by the conversation id from the URL, refresh, and search the response body for the query field. This one is an implementation detail rather than a supported feature, so treat it as a spot check that may break at any time.
And in Voxoria. This is exactly the gap the product was built for. We run your tracked prompts daily across the engines, capture the answers, and record the fan-out queries each prompt branches into. That includes who got mentioned and which sources were retrieved or cited. Drift becomes a trend line instead of a surprise.
What to do with the queries
Treat each fan-out variant as a keyword, because that is what it is.
- Ranking ninth to eleventh for a variant? Add an H2 to the page that already ranks. You are close, and a second page will only split the signal.
- A variant with distinct intent and its own volume? Give it its own page. An exact-match page beats a paragraph buried in a broader one.
- A variant that is a rewording of your head term? Leave it alone. Publishing a near-duplicate is how you cannibalise yourself.
Then publish, request indexing, and re-run the prompt. Because retrieval happens at answer time, the feedback loop is minutes, not the weeks you are used to from ranking work. Re-test across several days before you believe the result, so drift does not sell you a false positive or a false negative.
Schema is not the lever
Somewhere in the last two years, “add more schema” became the default advice for getting cited. It does not hold up.
The schema doesn’t replace the post, and the schema doesn’t have anything in it that tells you more about the post than the post does.
Structured data earns its keep where a result type depends on machine-readable fields: product prices, reviews, recipes, flight times. There, ambiguity is expensive and schema removes it. Google has also been retiring result types rather than adding them, which is a fair signal about where this is going.
For an ordinary article, article schema restates the title, the date and the publisher. None of that tells a retrieval system anything the page does not already say. Anyone can add it, spam included, which is why it cannot function as a trust signal on its own. If someone is quoting you a five-figure schema implementation as an AI visibility strategy, that budget buys a lot of content aimed at the queries the engines are actually running.
The short version
Answer engines are search engines wearing a summariser. Find the queries they run, rank for those, and re-measure often enough to catch the drift. The unglamorous conclusion is that most of what works in AEO is SEO pointed at a moving target.
Knowing where the target is at any given moment is the hard part. That is what Voxoria does. Daily tracking of your prompts across ChatGPT, Perplexity, Gemini and Google AI Overviews, the fan-out queries behind each one, and an audit that turns the gaps into an ordered list of things to fix.
That covers the moving target. It does not cover what the model knew before it searched. That runs on a different clock and needs a different instrument: the half of AI visibility that is not SEO.