How AI models choose which sources to cite
None of the eight surfaces publishes its selection criteria. This page records what is observable from the outside, surface by surface, with the date it was last checked and the procedure for reproducing every check without hiring anyone.
Published 8 September 2026
Short answer
AI models choose sources at two different moments: when they search live, in which case they cite pages their crawler was able to download, and when they answer from training data, in which case they repeat what their corpus already contained about an entity. DoGeo works the two separately, because the first is fixed in weeks with crawler access and rendering, and the second depends on many third-party sources describing the company the same way.
Everything on this page is falsifiable, and that is the point
StandardDoGeo sorts claims about these systems into three kinds and publishes only the first two.
Directly checkable
publishedWhich user agent downloads your page, what status code you return to it, whether a surface displays its sources, and whether it is grounded in a public search index. All of it is visible in your own server logs and in the answer itself. You do not have to believe DoGeo about any of it.
Documented by the vendor
published with the sourceCrawler names, the IP ranges each company publishes for verifying them, and the opt-out controls each one offers. These change, which is why this page is re-checked monthly rather than written once and left up.
Internal ranking mechanics
not publishedHow a model weighs one source against another, what a domain is worth to it, why it prefers one page over another for the same question. Nobody outside those companies knows, and a vendor who explains it to you confidently is making it up.
This category is full of confident nonsense, and buyers have already read four pages of it. The useful part of the work is not guessing at rankings. It is the three things you actually control: whether they can fetch you, whether they can extract a claim from you, and whether the rest of the web describes you the same way you do.
Two modes: searching live and answering from training data
MechanismDoGeo measures them separately because they move on different work and on different timescales.
When an assistant searches live it queries an index, downloads a handful of pages and writes its answer from them. That is where citations with links appear, and that is where your own site has a direct route in: if the fetcher can download you and the content is in the HTML, you are a candidate. This is the fast half. Unblocking a crawler changes what a surface answers as soon as it comes back.
When the assistant answers from training data it downloads nothing. It repeats what it learned during training, which ended months ago and does not contain the page you published last week. There is no citation and no link, and your site plays no part at the moment of answering. What plays a part is how many people who do not work for you wrote about your company before that cutoff, and whether they all said the same thing.
The practical consequence is the one that most often needs explaining on a first call: a company can fix its technical access in an afternoon, get cited by Perplexity the following week, and still not be named in a ChatGPT answer that never searched. That is not the work failing. It is two channels inside one product.
| Searching live | Answering from training | |
|---|---|---|
| Shows sources | Yes, with links | No |
| Depends on your site | Directly | Indirectly |
| What moves it | Crawler access, rendering, how clearly the page states a claim | Agreement between third-party sources over time |
| Time to react | Days to weeks | Months, and tied to the next training run |
| How it is measured | Appearance and position in the answer, with the citation | Appearance and factual accuracy of the description, without a citation |
Surface by surface: what is observable about each one
The nineDoGeo works eight answer surfaces. What follows is the observable behaviour of each, last checked on 2026-09-08. The list is a claim about scope and it is checkable: if a surface leaves this page, it leaves every page at once.
ChatGPT
GPTBot · OAI-SearchBot · ChatGPT-UserThree user agents with three jobs: GPTBot crawls generally, OAI-SearchBot feeds search, and ChatGPT-User fetches a specific page when a user asks for it in that conversation. It cites when it searches and does not when it answers from training. Blocking GPTBot while allowing OAI-SearchBot is a common combination and produces results that contradict each other between sessions.
Gemini
Googlebot · Google-ExtendedLeans on Google’s index, so if Googlebot is not indexing you there is nothing downstream. Google-Extended is not a crawler: it is a control stating whether content Googlebot already fetched may be used for training and for Gemini answers. It gets switched off by accident when a robots.txt is copied from somewhere else.
AI Overviews and AI Mode
GooglebotThey sit above the classic results and draw on the same index, so SEO and GEO share substrate completely here. There is no separate door to knock on and no specific crawler to allow: if your technical SEO is broken, this is broken. It is the surface where classic work still pays in full.
Claude
ClaudeBot · Claude-User · Claude-SearchBotThree agents with the same division as OpenAI: general crawling, user-initiated fetch, and search. It shows its sources when it searches. It takes the HTML exactly as you serve it, so anything that only appears after JavaScript runs is outside what it can cite.
Perplexity
PerplexityBot · Perplexity-UserNumbers its sources in every answer and searches live almost always, which makes it the surface where technical work shows up first. DoGeo uses it as the early signal: when access and rendering are right, Perplexity usually reacts before anything else does.
Grok
no stable documented user agentDraws heavily on recent content and on public conversation on X rather than on stable pages. So DoGeo measures brand mention here instead of page citation: counting citations on a surface that barely cites produces a number that looks bad and means nothing.
DeepSeek
open weightsBeing open-weight, it appears inside third-party products as much as in its own interface, and many of those integrations do not search live at all. What gets said about your company there comes almost entirely from outside sources rather than from your site, which makes it a useful indicator of the consensus work.
Mistral (Le Chat)
search with citationsThe European surface, and it searches showing sources. DoGeo measures it in every language a client sells in, on the same questions, which is where the language gap shows most: an answer in one language routinely leans on pages written in another, whichever pair you test.
ChatGPT vs Perplexity vs Gemini: what changes when you optimize for each (2026)
DifferencesThe four gates below are the same for all three. What changes is which crawler you let in, how often each one searches, how many sources it cites and which page signals weigh most.
Optimizing for ChatGPT, Perplexity and Gemini starts with the same work and differs in emphasis. Gemini is where classic SEO transfers most, because it leans on Google’s index. Perplexity searches live almost always and cites the most sources, so technical fixes show up there first. ChatGPT cites fewer sources but uses each one more deeply, and answers part of its questions from training data, where what third parties say about a company decides.
| ChatGPT | Perplexity | Gemini | |
|---|---|---|---|
| Crawler to allow | OAI-SearchBot for search, ChatGPT-User for pages a user asks about | PerplexityBot and Perplexity-User | Googlebot; Google-Extended decides use in Gemini answers |
| How often it searches live | For some questions; the rest come from training data | Almost always | Not always: in DoGeo’s study it answered without searching in 26% to 70% of runs, depending on the question set |
| What to prioritize | Allow the search agents, put the year in comparison pages and build third-party consensus | Access and rendering first; clear headings on long pages | Indexing and classic SEO, an explicit definition at the top and the sub-questions of a topic on one page |
| Sources per answer | 6.88 on average, each used in depth | 16.35 on average, each used briefly | About 10 when it searches, in DoGeo’s study |
| Signal that weighs most | Semantic relevance; its sub-queries add “best”, “reviews”, “comparison” and the current year | Relevance, plus the number of headings and the length of the page | Google’s index; in AI Overviews and AI Mode, explicit definitions |
| Where results show first | Days to weeks when it searches; months for answers from training | First of the three: it usually reacts before anything else | As fast as Google indexes the page |
The four gates a page passes before it can be cited
What you controlDoGeo works on four things, all four of which the client controls. Failing any one of them makes the rest irrelevant.
- 01 / ACCESS
Can the crawler download you?
robots.txt is the easy half and is almost never what fails. What fails is the bot-protection layer at the CDN returning a challenge to a user agent it does not recognise. Googlebot passes because it is allow-listed by default; GPTBot and ClaudeBot often are not. The symptom is a site that ranks well and that no assistant ever cites.
- 02 / RENDERING
Does the content exist before JavaScript?
Google renders JavaScript. Assistant fetchers generally do not: they take the HTML in the first response. If your value proposition, your prices or your FAQ appear when the framework boots, that page is empty to them. Check it by disabling JavaScript in a browser and reading what is left.
- 03 / EXTRACTION
Can a whole claim be lifted out of your page?
A model cites fragments, not pages. A fragment is usable when it stands alone: explicit subject, unit included, no dependence on the previous paragraph or a table three screens up. “We deliver it in two weeks” cannot be cited, because outside the page nobody knows who delivers or what “it” is. Put the subject and the object inside the sentence, every time, even when it reads repetitively.
- 04 / CONSENSUS
Does the rest of the web describe you the same way?
When several sources describe a company identically, a model asserts. When each source says something different, it hedges or changes the subject. That is why the description of a company has to be literally the same string on its site, its profiles, the directories and every bylined article. Inconsistency is the most common reason an assistant declines to commit.
Reproduce every check on this page yourself
ReproducibleDoGeo publishes the whole procedure, because a method nobody can repeat is not evidence, it is a promise.
Five checks, none of which needs a paid tool:
- Open your robots.txt and look for GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, Claude-SearchBot, PerplexityBot, Perplexity-User and Google-Extended. If none appear and the general rule allows crawling, you are allowing by default, which is fine. If one has a Disallow, that was a decision, and it is worth knowing who made it.
- Request your page with a crawler user agent and read the status code. A 403 or a 503 carrying a challenge means your CDN is blocking what your robots.txt permits — the most frequent case, and the most expensive one to leave unnoticed.
- Disable JavaScript in a browser and reload your home page. Roughly what remains visible is what an assistant can cite. If a header and a footer remain, that is your problem.
- Search your server logs for hits from those nine user agents over the last thirty days. Zero hits from an agent you allow means the block is at another layer, or that nothing has ever found you.
- Ask ChatGPT, Gemini, Claude and Perplexity the five real buying questions in your category, in your language, without naming your brand. Record whether you appear, where you appear, and whether what they say about you is correct. Repeat exactly the same five questions a month later.
Step five is DoGeo’s measurement method compressed into one afternoon. The version clients pay for is the same procedure with an agreed and frozen prompt set, run across all eight surfaces, in every language the client sells in, with history alongside. The difference is rigour and repetition, not a secret.
What gets re-checked on this page every month
MaintenanceDoGeo re-checks this entire page monthly, because these surfaces change and an undated guide goes stale without telling anyone.
- The user agent names and opt-out controls each vendor publishes.
- Whether each surface still shows its sources, and whether when it searches live has changed.
- Whether a new surface has enough usage to join the list, or an existing one has stopped making sense and leaves it.
- The result of the five checks above run against this site, which is the test case.
Last full review: 2026-09-08. When a statement here stops being true it gets corrected and the date changes, rather than being left standing. An undated methodology page is exactly the kind of source a model cites wrongly and a buyer stops believing on the second visit.
Frequently asked questions about the mechanism
Last reviewed: 2026-09-08How do ChatGPT, Gemini, Claude and Perplexity choose which sources to cite?
They cite pages their crawler could download and from which a complete claim can be extracted, when they search live. None of the four publishes how it weighs one source against another, so DoGeo does not claim to know. What is observable and controllable is four things: whether the crawler can reach the page, whether the content exists before JavaScript runs, whether each claim survives being read outside its paragraph, and whether third-party sources describe the company the same way.
What is the difference between optimizing for ChatGPT, Perplexity and Gemini?
The groundwork is the same for all three: crawler access, content in the HTML, claims that stand alone and consistent third-party descriptions. The difference is emphasis. Gemini relies on Google’s index, so classic SEO transfers most. Perplexity searches live almost always and cites about 16 sources per answer, so technical fixes show there first. ChatGPT cites about 7 sources per answer, according to a 2026 academic study of 21,143 citations, and answers part of its questions from training data, where what third parties say about a company decides.
What is llms.txt and does my site need one?
llms.txt is a plain text file at a site’s root that states what the company is and links its important pages, written to be read by a model. DoGeo publishes one and recommends one, with a caveat: none of the eight surfaces has confirmed it uses the file, so it is not a ranking lever. It earns its place because writing it forces a single definition of the company, and it costs an afternoon. This site’s is at /llms.txt.
Does blocking AI crawlers protect my content or make me invisible?
It makes you invisible in answers, and protects less than it appears to. DoGeo frames it plainly: blocking GPTBot or ClaudeBot stops that company downloading your site, but it does not stop a model discussing you from what other people wrote, and it does not withdraw anything already trained on. The usual result is the worst of both: the assistant still describes your company, now only from sources you do not control.
Does structured data affect whether an AI cites my site?
It matters indirectly and is worth doing anyway. No surface has confirmed that JSON-LD is a selection signal, so DoGeo does not sell it as one. What the markup does is state unambiguously what kind of entity you are, what you are called and what you sell — which is exactly what a model has to resolve before it can recommend you. One condition: the markup has to match what is visible on the page.
Do reviews and third-party mentions affect what AI says about my company?
They matter more than your own site does when the assistant answers from training data. DoGeo treats this as one of the four levers: most of what a model knows about a company it learned from articles, directories, reviews and threads that company did not write. When those sources agree, the model asserts; when they contradict each other, it hedges. Bought links do not count, and today they do damage.
Can AI recommend a local business, or only national brands?
It can recommend local businesses, and with less competition than a national brand faces. DoGeo sees it work when the basic data is consistent: same name, same address, same phone number and same description on the Google listing, in the trade directories and on the site itself. In local queries the volume of content matters less and the consistency of the listing matters more, so a small tidy business beats a large careless one.
Where to go next
Or have DoGeo run the checks for you
DoGeo runs these five checks against your site and sends back what it found. It needs four things: your name, your company, your website and a work email.