Four reasons a model never reads your page
Before you worry about being cited, check whether the crawler gets a page at all. Four mechanical failures, in the order they cost you points.
There is a lot of advice about earning mentions and much less about the step before it. A model cannot cite a page it never successfully read. The problems that decide this are mechanical rather than competitive, and they are invisible in a browser, because a browser is not what is doing the reading.
Here are the four we look for, in the order they cost points.
1. The page is empty without JavaScript
GPTBot, ClaudeBot and PerplexityBot fetch your HTML and stop. They do not run your JavaScript. A client-rendered site hands them a shell: a <div id="root">, a script tag, and nothing else.
You will never catch this by eye, because your browser runs the script and shows you a full page. Disable JavaScript and load your most important page. If what is left is a spinner or an empty container, that page does not exist for any of them.
This is the biggest single swing in our own scoring, and the fix is not subtle: server-render the pages that carry the answers.
2. robots.txt blocks the AI crawlers by omission
Most robots.txt files predate answer engines entirely. They were written for search, and nobody has had a reason to open them since.
The failure is rarely a deliberate block. It is a blanket Disallow under a wildcard, or an allowlist that names Googlebot and Bingbot and never anticipated the rest. The result is the same either way. GPTBot, ClaudeBot, PerplexityBot and Google-Extended are separate agents with separate names, and being welcoming to Googlebot says nothing about any of them.
Check each one by name. You may be turning away the exact traffic you are trying to win, and the file that does it is four lines long.
3. The model cannot tell that two mentions are you
A model reading about "Northwind", "Northwind Logistics" and "northwind.no" has to work out that these are one company. Without help it often does not, and you lose the credit for your own coverage.
The help is unglamorous: an Organization node in your structured data, sameAs links pointing at the profiles that corroborate you, and pages that state plainly what you do and where you operate. It is the cheapest part of a score to move, because the work is measured in hours.
4. Your pages answer a different question than the one being asked
This is the one that survives every technical fix and still keeps you out of the answer.
Models lift sentences, not pages. A page that opens with "Founded in 1998, we are a leading logistics partner committed to excellence" has given a model nothing to quote about transit times. A page that opens with "Oslo to Hamburg takes 34 hours door to door" has.
Both pages can rank. Only one gets carried into an answer. When we put a client next to the competitor beating them, this is usually where the gap turns out to be. Not budget. Not domain authority. Which sentence is first.
I find that the most annoying of the four, and the most encouraging. Annoying because no amount of engineering fixes a paragraph that says nothing. Encouraging because rewriting a first line is an afternoon, and nobody needs to approve a budget for it.
Where to start
Each step is worthless if the one above it is broken, which is why a ranked fix list beats a list of everything wrong with your site. Fix them in order and stop when the crawler can read you.
You can check all four on your own domain in about twenty seconds, without an account.