Retrieval mechanics

How ChatGPT decides which clinic to cite

A working model of retrieval, citation, and the five structural signals that move a clinic from invisible to quoted.

By · · · 9 min read

A patient opens ChatGPT. Types best GLP 1 clinic in Austin. Three clinic names appear in the answer. Two are cited with links. One is not. Within sixty seconds the patient has called the first cited clinic.

The clinic that answered the phone did not buy an ad. It did not bid on a keyword. It was chosen by a language model that reviewed every clinic website in Austin and picked the three it could understand, verify, and quote. The rest of the Austin clinics were never considered.

This is the asymmetry every clinic owner needs to understand. AI engines make a choice before the patient ever sees a website. The work of getting chosen happens months earlier, in markup, in content structure, in file placement, and in the specific way a clinic talks about what it does.

This essay explains how that choice gets made. It is a working model, not a leak. It is built from public documentation (OpenAI, Anthropic, Perplexity, and Google), from observed behavior across hundreds of clinic queries, and from the engineering patterns that we have seen correlate with citation across the four major engines.

Two retrieval modes, one outcome

Short answer. A clinic appears in ChatGPT through training recall (the model remembers the clinic from its 2024 training cut) or through live retrieval (ChatGPT browses Bing, fetches the clinic site, reads it, and quotes from it). Training recall is slow and out of the clinic's control. Live retrieval can begin within fourteen days of a rebuild and is the path KailxLabs engineers for.

A clinic appears in an AI answer through one of two paths.

The first path is training recall. The model was trained on a dataset that included the clinic website or its mentions on third party sites (directories, news, reviews). When the model generates a response, it draws on what it remembers. No live web access required. The clinic is named because the model learned it existed.

The second path is live retrieval. When a query demands current information (a business hours question, a pricing question, or any location specific provider query), the model triggers a web search, fetches a set of live pages, reads them, and quotes from them. ChatGPT does this through its browsing tool. Perplexity does this by default on every query. Gemini does this for health and commerce queries. Google AI Overviews does this through Google Search.

The engineering implication is sharp. A clinic that optimizes only for training recall is betting that OpenAI will include its website in the next training cut. A clinic that optimizes for live retrieval can begin appearing within weeks. We build for live retrieval first and training recall second.

What a crawler actually sees

Short answer. An AI crawler fetches a clinic site with a simple HTTP request and reads only the HTML returned in the first response. The crawler does not execute JavaScript, does not wait for animations, and does not scroll to trigger lazy loading. A Wix or React site that ships an empty shell is invisible to ChatGPT, ClaudeBot, and PerplexityBot regardless of how the page looks in a human browser.

When Perplexity or ChatGPT fetches a clinic website, the request is handled by a simplified crawler. The crawler does not run JavaScript. It does not wait for animations. It does not scroll to trigger lazy loading. It receives the HTML the server sends in the first response and reads what is there.

A site built on Wix, Squarespace, or a React single page app often sends back a near empty HTML shell. The real content loads later via JavaScript. The crawler sees the shell. The crawler leaves. The clinic is not considered for citation on this query.

A site built with server rendered HTML (Astro, Next.js in static or server mode, plain HTML, or server rendered WordPress) returns the complete content in the first response. The crawler reads everything. Every sentence on the page becomes a candidate for quotation.

Test in sixty seconds

Open a new terminal. Run curl https://yourclinic.com. Read the output. If you see your headlines, your provider names, your treatment descriptions, and your pricing in plain text, the crawler sees them too. If you see an empty <div id="root"></div> and a bundle of script tags, the crawler sees nothing.

The five structural signals that move a clinic into citation range

Short answer. Five signals move a clinic from readable to cited. Schema.org MedicalClinic markup, semantic HTML headings, sentences written as standalone facts, an llms.txt file at the domain root, and dedicated city pages with the city in the URL. A clinic that hits all five typically reaches first Perplexity citations within twenty one days of relaunch and full coverage within forty five.

Once a crawler can read the page, the next question is why this clinic and not another. Five signals do most of the work.

1. Schema.org markup that names the clinic as a MedicalClinic

Structured data is the fastest path to being understood. A JSON LD block that declares the site as a MedicalClinic or MedicalBusiness, lists the services offered, names the providers, states the location, and includes review counts gives the engine a precompiled summary of the clinic. The engine does not have to infer these facts. They are asserted.

Every major engine parses Schema.org. Google uses it for rich results. Bing uses it. Perplexity reads it on fetch. ChatGPT browses with it in context.

A clinic site without Schema.org markup is not disqualified. It is simply harder to understand. Engines fall back to heuristics. Heuristics favor the clinics that were easy to parse.

2. Semantic HTML that tells the model what each block is

An h1 followed by an h2 followed by a p tells a language model the structure of a document. A set of nested divs with class names tells it nothing. The same content, wrapped in semantic tags, is easier to quote and more likely to appear in an answer.

Treatment names belong in headings. Pricing belongs in tables or definition lists. FAQ belongs in the schema declared FAQ pattern. Provider bios belong in article elements with a Person schema attached.

3. Content written in direct, quotable sentences

Language models quote sentences that stand alone. A sentence that requires two paragraphs of context to make sense will not be quoted. A sentence that states a fact cleanly (We price our semaglutide program at $299 per month including provider visits and injections) will be quoted verbatim.

The implication for content is concrete. Write the sentence the AI should quote. Put it near the top of the page. Make it declarative. Include the named entity (the clinic name, the drug name, the city). When the AI needs to answer a patient query, it will have a clean source to pull from.

4. llms.txt at the domain root

llms.txt is a proposed standard (from Answer.AI in September 2024) for giving language models a structured summary of a website. Unlike robots.txt, which tells crawlers what they can read, llms.txt tells models what is worth quoting. It is a markdown file, placed at /llms.txt, that names the site, describes the services, and links to the important pages.

Adoption by major models is not universal as of April 2026, but it is growing. Anthropic has published documentation referencing the standard. Perplexity has confirmed support. Three things make it worth shipping today. It costs nothing. It gives you a controlled summary in AI hands. It is the clearest signal that the site was built with AI retrieval in mind.

5. Local presence signals that match the city query

Patient queries are almost always local. Best clinic in my city. Provider near me. An AI engine answering a local query is not reading the whole internet. It is reading a shortlist of sites that match the city, the specialty, and the language pattern of the query.

Clinics that make it onto the shortlist publish city specific pages. A dedicated page for each metro the clinic serves, with the city in the URL, the city in the page title, the address in structured data, and local content (nearby landmarks, service radius, insurance accepted in that state) tells the engine this clinic is relevant here.

A single homepage that mentions three cities is not enough. Separate pages, one per city, with unique content, wins the local shortlist.

How the four engines behave differently

Short answer. ChatGPT browses on demand through Bing. Perplexity retrieves live on every query and reranks results in three layers. Gemini blends model knowledge with the Google Search index and the Knowledge Graph. Google AI Overviews summarizes the organic top ten. A clinic must engineer for all four because the engines weight different signals and citation in one does not guarantee citation in the others.

ChatGPT, Perplexity, Gemini, and Google AI Overviews produce different answers to the same query. The underlying retrieval strategies differ enough that a clinic can appear in one and not the others.

Engine Retrieval behavior What matters most
ChatGPT Browses on demand. Uses Bing as backend for live retrieval. Bing indexable HTML. Schema. Direct quote ready sentences.
Perplexity Always retrieves live. Fetches 5 to 10 sources per answer. Fast HTML response. Clear structure. llms.txt. Citation ready facts.
Gemini Uses Google Search index plus model knowledge. Classical SEO (schema, Core Web Vitals, EEAT signals, backlinks).
Google AI Overviews Selects from top Google Search results and summarizes. Ranking in organic top 10 for the query. Same EEAT signals.

The practical consequence is that a clinic needs all four working at once. ChatGPT and Perplexity reward engineering rigor. Gemini and Google AI reward classical SEO done right. A clinic that builds for AI retrieval typically does better on Google than it did before, because the structural rigor that AI engines want is the same rigor Google has been asking for since the Hummingbird update in 2013.

What to measure, what to ignore

Short answer. Measure citation frequency across a fixed query set run weekly against ChatGPT, Perplexity, Gemini, and Google AI. Measure AI referrer traffic to the clinic domain from chat.openai.com, perplexity.ai, gemini.google.com, and Google AI Mode. Ignore rank. Rank is the metric for a list of blue links. AI search has no list. The clinic is named in the paragraph or not.

Two metrics matter. One metric does not.

Measure citation frequency. Across a fixed list of patient queries, how many times does your clinic appear as a cited source in ChatGPT, Perplexity, Gemini, and Google AI? Run the same query set weekly. Track the citations. The number should rise after the rebuild and continue rising as content compounds.

Measure direct traffic from AI referrers. Your analytics should begin showing visits with referrer domains of chat.openai.com, perplexity.ai, gemini.google.com, and google.com/search?udm=.... These are patients who followed a citation link. They convert higher than paid traffic because they have already been pre qualified by the AI.

Do not measure rank. Ranking was the metric for classical search, where the user scrolled through a list and picked. In AI search the list is gone. The answer is a paragraph. You are either cited in that paragraph or you are not. Rank does not apply.

The fix is structural

Short answer. A clinic that wants ChatGPT to cite it cannot patch its current Wix or single page React site. The fix is a rebuild on a server rendered stack with a complete Schema.org graph, llms.txt at the root, semantic HTML, and city specific pages. The work is engineering, not marketing. KailxLabs ships this rebuild in seven days for $4,995 with a 45 day citation guarantee.

Most clinic websites built in the last decade were built for rank. Keyword density. Long form content targeting search terms. Meta descriptions. Link building. These tactics do not stop working, but they stop being the highest leverage investment.

The highest leverage investment in 2026 is a website that a language model can read on first visit, understand without guessing, and quote with confidence. That is not a marketing problem. It is a software problem. Which is why the fix is engineering, not advertising.

A clinic website in 2026 has one job. Make it effortless for a language model to understand what the clinic does, who it serves, and why it is the right answer to a patient query. Everything else is optional. Kailesk, founder, KailxLabs

The rest of our research breaks down each of these signals into an engineering specification. Read the methodology essay next if you want the full framework. Read the field notes essay if you want the failure patterns we see most often.

About the author

Kailesk is the founder and lead engineer at KailxLabs. He builds AI native websites for premium specialty businesses so ChatGPT, Perplexity, Gemini, and Google AI quote them by name within 45 days. Every engagement is delivered personally with no agency layer. Kailesk also ships open source developer tools under HouseofMVPs and runs SaveMRR, a churn recovery product cited across 14 AI engines.