How AI Decides Which Dentist to Recommend
When a patient asks ChatGPT for a dentist, something has to read your site first. Here is what that reader sees — and why most dental sites are invisible.
The question behind the question
A patient types something like this:
I just moved to Austin and I need a dentist who takes Delta Dental and can see my 7-year-old. Who should I call?
They are not going to scroll a page of ten blue links. They are going to get a short answer naming two or three practices, and they are going to call one of them.
For your practice to be one of those names, something has to have read your website and understood three things: that you exist, what you do, and that you fit the question. That reading step is the whole game, and it is where most dental sites quietly fail.
What the reader actually sees
There is no eye on the other end. When an AI assistant needs to know about your practice, one of two things happens:
- A crawler fetched your pages at some earlier point and stored the text it found.
- A live retrieval step fetches a handful of pages at the moment of the question and reads them on the spot.
Either way, what arrives is the HTML your server returned. Not the rendered page. Not the design. The markup.
This is where the single most consequential technical fact sits: the crawlers used by AI assistants generally do not run JavaScript. A browser runs your scripts, builds the page, and shows a human the result. A crawler typically does not. It reads what the server sent and moves on.
So if your website builds its content in the browser after loading — which is how a great many modern practice sites and page-builder templates work — there is a real chance that what an AI reads is not your homepage. It is an empty shell where your homepage was supposed to be.
This is not a hypothetical
You can check it yourself in about ten seconds. Open your site, right-click, and choose “View Page Source” — not “Inspect”. That is roughly what a crawler receives. If you cannot find your practice name, your services, or your phone number in that text, neither can the model.
The four ways dental sites go unread
Across the sites we scan, the same handful of problems account for most of the damage.
Content that only exists as pixels
Hours in a graphic. Insurance logos with no text nearby. A “Meet the team” page that is one large exported image. A price or promotion baked into a banner. All of it is invisible. An image is a rectangle of color to a model unless something describes it — which is precisely what alt text is for. The accessibility requirement and the AI requirement are the same requirement.
Content that only appears after a click
Accordions, tabbed panels and “read more” toggles are fine when the text is present in the HTML and merely hidden with CSS. They are a problem when the text does not exist until a script fetches it. Your services list, your FAQ answers, and your insurance list are the usual casualties.
Pages nothing can reach
If your site’s navigation is a JavaScript menu, a crawler that does not run JavaScript sees no links. It reaches your homepage and stops. Every location page, every service page, every article is functionally missing — not ranked badly, missing.
Structure the model has to guess at
A page where every line is a styled div gives a model no signal about what is important. Headings are how a reader — human, screen reader, or model — knows the shape of a page. Skipping them, or using them for visual size rather than hierarchy, makes your content harder to summarize accurately.
Why “somewhere else” is the real risk
Here is the part practices tend to underestimate. When a model cannot read the answer from your site, it does not say “I don’t know.” It answers anyway, from whatever it does have: directory listings, insurance aggregators, review sites, an old citation, another practice’s page that mentions you.
That is how a practice ends up being described with hours it changed two years ago, an insurance it no longer accepts, or a service it does not offer. The information was not wrong on your website. It was unreadable on your website, so the model used a worse source.
This reframes the whole problem. You are not competing for a ranking. You are competing for whether the description of your practice comes from you or from a stranger.
What we can and cannot promise
We are deliberate about this. Nobody can honestly guarantee that fixing your site produces a specific number of new patients from AI — that attribution does not exist, and any vendor claiming it is guessing. What we verify is narrower and real: that the assistants can reach your pages, read them, and describe your practice correctly. That is the part that is actually measurable.
What actually fixes it
None of this requires a rebuild, and none of it is exotic. In order of impact:
Make sure the words exist in the HTML
Your practice name, services, locations, insurances, and hours should be real text that appears in the page source. This is the single highest-leverage change, and it is the one most sites fail.
Describe every image that carries meaning
Alt text on team photos, clinical galleries, insurance logos and any graphic containing words. Decorative images get marked decorative so they are skipped rather than guessed at.
Give every page a real heading structure
One H1 that says what the page is, H2s that mark the genuine sections. This is what lets a model extract the right passage instead of averaging the whole page.
Make every page reachable by a plain link
Real anchor tags in the navigation and a sitemap that lists every page you want read. A page with no crawlable path to it does not exist.
Answer real questions in plain language
Assistants quote short, self-contained answers. A page that states “We accept Delta Dental, MetLife and Cigna” in a sentence is quotable. A logo grid is not.
Decide deliberately about robots.txt
GPTBot, ClaudeBot, PerplexityBot and Google-Extended can each be allowed or blocked by name. Many sites block them by accident, inheriting a template default. Check what yours says.
The unglamorous conclusion
There is no trick here, and that is genuinely good news. The work that makes your practice legible to AI is the same work that makes it legible to a screen reader and to Google’s crawler: real text, described images, honest headings, reachable pages.
It is the same list that has been sitting under WCAG 2.1 AA the whole time — the standard the 2024 Section 504 rule already requires of any practice that bills Medicaid or Medicare. Most practices have to do this work anyway. The difference is that it is no longer only a compliance cost. It decides whether you get named when a patient asks.
Common questions
- How do AI assistants find information about my dental practice?
- Either from a crawler that fetched your pages earlier and stored the text, or from a live retrieval step that fetches a handful of pages at the moment of the question. Both paths read your raw HTML.
- Do AI crawlers run JavaScript?
- Generally no. The crawlers used by AI assistants typically fetch a page and read the HTML the server returned. If your content is rendered in the browser by JavaScript after the page loads, there is a real chance the crawler sees an effectively empty page.
- Why would an AI assistant describe my practice incorrectly?
- Usually because the correct information was not readable. If your hours, insurances and services live inside images, inside a JavaScript widget, or on a page no crawler can reach, a model fills the gap from directories, aggregators and old citations, which is where stale and wrong details come from.
- What is the difference between SEO and AI SEO?
- Classic SEO optimizes for ranking a link in a list of results. AI SEO optimizes for being read correctly and quoted inside a generated answer, where there is no list and often only two or three practices get named at all.
- How do I stop AI assistants from crawling my site?
- Disallow the named crawlers in robots.txt — GPTBot, ClaudeBot, PerplexityBot, Google-Extended and others. Be deliberate about it: blocking them removes your practice from the answers those assistants generate.