Method · written down so it can be checked

What an AI visibility audit should include

This is how I measure. It is written out partly so you can judge it, and partly because every part of it below has gone wrong at least once, and the fix is the interesting bit.

The questions come first, and they are written before the run

Eighteen questions a prospective client actually asks — who to hire, I have a problem, how to choose, and the adjacent tax questions an expat asks in the same breath — plus two controls: one in Dutch, one about a city in another country.

The controls are there to catch the measurement fooling itself. The Dutch-language control names firms that appear in no English answer anywhere in the run. If your clients arrive in English, the Dutch result tells you very little about your visibility, and the reverse holds too.

Questions written after seeing the answers are not questions, they are a way of agreeing with yourself.

More than one surface, because they do not play the same game

ChatGPT, Google’s AI Overview and Google’s AI Mode. They disagree, and the disagreement is information.

Google’s AI Overview does not appear at all on hiring questions. That is not a weak answer, it is no answer, and an audit that reports it as a zero is describing something that did not happen. Of sixty question-and-surface runs in the published measurement, eight produced no answer.

Every run happens in a browser profile that is not signed in, at a human pace. Where an assistant shows a challenge, the run stops and a person passes it. There is no way around that which also leaves the measurement honest.

What counts as “named” is one rule, and a reader can check it

A firm is named when the answer writes its name the way a name is written: capitalised, or as a domain. “Kroes” counts. So does lawandmore.eu. “A practice in Amsterdam” does not, and neither does “appeal to the court” for a firm called De Rechter.

That rule exists because the obvious alternative — look for the firm’s words anywhere in the text — produced four false mentions in one run. A firm with “Law Firm” in its registered name collected every answer that used the phrase; a firm called Solutions collected “work visa solutions”. One of those errors put the wrong firm at the top of a published ranking.

The rule lives in one place in the code. Two copies of it is how the ranking got inverted in the first place: the second copy did not know about a fix made to the first.

The answer is kept whole, because the claim rests on it

Every answer is stored in full, with its question, surface and date. The audit quotes it back to you.

This one is worth a paragraph. In an early run the stored text was cut at 1,500 characters, silently. The field was not empty, the answer looked sensible, and nothing failed. But whether a firm was named is decided on that text — so on two surfaces out of three, “your firm was not named” had been checked against the first part of the answer only.

The tell was in the shape of the data, not in any error: twenty answers of exactly the same length. Several records at an identical maximum length are a ceiling, never a coincidence. The measurement now shouts when it sees one, on every run.

A second measurement, and the drift between them

A single snapshot describes a day. Two days after one measurement, with nothing changed and nobody told to do anything, a different set of firms came back on 16 of the 18 buyer questions. Two firms dropped out of the list and four appeared: 27% of the names rest on one of the two days and not the other.

Any audit that promises to lift you needs that number first, because without it an improvement and a coincidence look identical. An audit here therefore includes a re-measurement three weeks later, compared against the drift, on the surfaces where the comparison is honest.

Honest has a technical meaning here. When the way an answer was captured changes between two runs — a different text limit, a challenge on one surface — the comparison measures the change in the method, not the market. The tool refuses to print a number for those surfaces and says which ones and why.

What the site itself is read for

AI assistants cite pages, not sites. So the question is not whether a word appears somewhere on your site, but whether a page is given over to a single client question: an IND refusal, a decision taking too long, recognised sponsor status.

Across 110 firms where this could be measured, firms with three or more such pages are named in AI answers more than five times as often as firms with none — 56% against 10%. That is a correlation on 110 firms, not a mechanism, and the bigger a firm’s site the more of both it tends to have.

The checks, because the interesting failures are silent

Every number on these pages is printed by a tool that names the file it came from, and the page is assembled from that output. Not because it is elegant, but because a hardcoded median survived two recalculations while pretending to be a result, and a column named after one date quietly started carrying numbers from another.

Four things are checked on every run: that no answer hit a length ceiling; that two measurements are comparable before they are compared; that a claim about a firm is not contradicted by the data in the same file; and that the arithmetic in a sentence adds up, because a reader adds those numbers in a second.

Back to the audit · The published measurement