AI visibility audit for local businesses: what we check and why.
Twelve checks, each with a reason. Nothing on this list is a score, a grade or a promise. Each one is a question about your site that has a yes, a no, or a could not tell.
What the results mean before you read them.
Pass
The check ran against your live site and the condition held. A pass is evidence about that page on that day. It is not evidence that an assistant names you; that is a separate measurement with a separate instrument.
Fail
The check ran and the condition did not hold. Every fail on this list has a specific repair, and the repair is named in the result. A fail is the most useful outcome of the audit because it is the one that changes what you do next.
Could not measure
The check could not reach a verdict, usually because the page could not be fetched or timed out. This is reported as itself and never folded into a fail, because a broken instrument reporting zero is worse than one reporting unmeasured. If most checks land here, the first fix is reachability.
Twelve questions, grouped by what they protect.
| Check | Why it exists |
|---|---|
| Page states who you are and what you sell in plain text | An assistant reads text. If the answer to what do you do lives in a hero image or a tagline graphic, it reads nothing. |
| Business name, address and phone are machine-readable | Local answers hinge on where you are. A phone number in an image or a map embed is invisible. |
| Organization schema present and valid | Structured data removes doubt about which entity the page describes when several businesses share a name. |
| Service or Product schema describes what you sell | Same reason, applied to the thing a customer is actually asking for. |
| Headings describe the content beneath them | Retrieval systems use headings to find the passage that answers the question. A heading that says Welcome answers nothing. |
| Answers appear as text, not only inside images | Menus, price lists and service areas published as images are common and unreadable. |
| Canonical URL declared | Without it, the same page at four addresses splits whatever trust it has earned four ways. |
| robots.txt permits AI retrieval crawlers | The most common single cause of absence. A rule written to stop scrapers often stops the answer engine too. |
| Sitemap reachable and current | A positive list of what you want fetched. Stale entries send crawlers to pages that no longer exist. |
| Page reachable without running JavaScript | The retrieval client does not run your app. If the served HTML is an empty shell, the page is empty to it. |
| Titles and descriptions unique per page | Duplicate titles make every page look like the same page, so none of them is the best answer for anything. |
| Contact route reachable in one step | When an assistant does name you, the customer still has to reach you. A contact path buried three clicks deep leaks the lead. |
And why.
- Whether ChatGPT names you. That is answer presence, and it is sampled on a schedule with a stated denominator rather than checked once. The instrument for it is Citability; the audit here covers what you can fix on your own site before that measurement means anything.
- A visibility score out of 100. Twelve checks with three possible verdicts do not become a percentage without hiding the could-not-measure column, and hiding that column is how a broken site gets reported as a healthy one.
- Review counts and star ratings. They matter for the map pack and they are not something a website audit can repair.
The audit is free because the diagnosis is the cheap part. What you do with a fail is described on the services page, and the first conversation about it happens after the results, not before.
Run the twelve checks on your site.
About a minute. Each check reports as pass, fail or could not measure, with the repair named next to every fail.