Example audit
A real snapshot, with the business name withheld.
This is an anonymized version of a mini-audit we ran on November 11, 2026 for a plumbing and heating company in Boulder, Colorado. We used only its public website. Competitor names, the company’s legal name, address, phone, and domain have been removed.
A Boulder plumbing & heating company
Boulder, CO · Local service · URL-only audit · 9 buyer prompts · 1 engine · 1 run · November 11, 2026 (America/Denver)
Summary
When people ask an AI assistant a general question (“best plumber in Boulder,” “veteran-owned,” “family-owned”), this company comes up first and gets cited. When they ask about a specific job (emergencies, boilers, tankless, flat-rate pricing), it doesn’t come up at all. That’s true even though the site offers boilers and tankless water heaters, and its FAQ says it charges flat rates with no travel fee. In those answers the engine names other local companies instead. Most of the gap comes from three things: no business schema, an address written differently across listings, and differentiators buried in the FAQ. All three are fixable.
Score breakdown
| Pillar | Score | Evidence |
|---|---|---|
| A. AI answer visibility | 12 / 35 | Named in 3 of 9 prompts, each time in 1st position and with its own site cited. |
| B. Share of voice | 4 / 10 | 10.3% of brand mentions. Tied with one competitor for the most mentions (3 each). |
| C. Technical access | 13.5 / 15 | All AI bots allowed. Server-rendered text. Sitemap last updated April 7, 2025. |
| D. Structured data & entity | 4.5 / 15 | No Organization, LocalBusiness, or Plumber schema. Address written 3 different ways. FAQ schema covers 3 of 9 questions. |
| E. Content answerability | 8.5 / 20 | No dedicated pages for emergency, tankless, or sewer work. Flat-rate and no-travel claims are only on the FAQ. Few stats or quotes. |
| F. Page experience | 2.5 / 5 | Lighthouse mobile performance 75. LCP 3.5 s. CLS 0.28 (lab data). |
Prompt heatmap: who the AI named
| Buyer prompt | This company | Comp. A | Comp. B | Comp. C | Others named |
|---|---|---|---|---|---|
| best plumber in Boulder Colorado | #1 | #2 | – | – | 1 other local company |
| veteran-owned plumbing company Boulder County | #1 | – | – | – | 1 other local company |
| affordable family-owned plumbing company Boulder CO reviews | #1 | – | – | – | 3 other local companies |
| best emergency plumber in Boulder CO | – | – | – | #1 | 2 national or local options |
| most trusted plumber in Boulder for water heater replacement | – | #1 | – | – | 1 specialist |
| who does boiler repair in Boulder (hydronic, no heat) | – | #1 | #2 | – | 4 other local companies |
| plumber in Boulder with flat-rate pricing and no travel charge | – | – | – | – | 2 competitors with clear pricing pages |
| tankless water heater installation Boulder CO | – | – | #1 | #3 | 1 specialist |
| Boulder plumber sewer line repair recommendations | – | – | – | – | 3 specialists |
Positions are the order brands appeared in the answer. Competitor letters are anonymized labels, not real trade names.
What the AI said
The answer named two other companies as the best matches for written flat-rate quotes and a waived trip charge. This company was not mentioned.
The company’s own FAQ says it does not charge by the hour — it charges by the job — and that it does not charge for travel time in its standard service area. The engine didn’t use it. The claim only shows up on one FAQ page, and only 3 of that page’s 9 questions are in its FAQ markup.
The answer listed several local companies for same-day or 24/7 boiler repair. This company was not among them.
The company has a boiler service page, but seven competitors were named instead. Each winning result is a page built around the exact job (for example, boiler repair and replacement in Boulder).
The answer named this company first as a strong choice: licensed, bonded, family-owned, and offering 24/7 emergency service.
Technical checks
| Check | Result | Detail |
|---|---|---|
| robots.txt and AI crawlers | Pass | A wildcard allow rule, so major AI crawlers are permitted. A sitemap is declared. |
| CDN blocking by bot user-agent | Pass | The homepage returned 200 for spoofed GPTBot, ClaudeBot, PerplexityBot, Googlebot, and Bingbot user agents. We could only spoof the user agent, not the bots’ IP addresses. |
| http → https redirect | Not tested | Our test server can’t make plain-HTTP requests, so this wasn’t measured. The HTTPS homepage correctly redirects to the canonical host. |
| Indexability | Pass | All 10 sitemap pages return 200, have self-referencing canonicals, no noindex, and a language attribute. |
| Server-rendered text | Pass | 500–750 words of real text in the raw HTML of every page. |
| Sitemap freshness | Warn | 10 URLs, all with a last-modified date of April 7, 2025 (about 19 months before this audit). |
| llms.txt | Present (minor bug) | An auto-generated file lists all 10 pages, with a small encoding glitch in the intro line. Low priority, since evidence shows most AI crawlers rarely read llms.txt. |
| Business schema | Fail | No JSON-LD or microdata for Organization, LocalBusiness, or Plumber on any page, even after rendering in headless Chrome. |
| FAQ schema | Partial | The FAQ page has FAQPage markup for 3 questions, but the page shows 9 question headings. It also has no H1. |
| Images | Warn | 5 of 12 homepage images have no alt text. |
| Page speed (Lighthouse, mobile, lab) | Warn | Performance 75 · Accessibility 90 · Best practices 69 · SEO 85. FCP 2.0 s · LCP 3.5 s · TBT 30 ms · CLS 0.282. This is lab data, not real-user data. |
Entity consistency (name, address, phone)
| Source | Name | Address | Phone |
|---|---|---|---|
| Website (contact page) | Primary business name | Street written as “Road,” unit included, city and ZIP present | Matches other sources |
| A major accreditation listing | Abbreviated name | Same street written as “Rd.,” unit styled differently | Matches |
| A review profile (4.8★, 477 reviews) | Name plus “Company” | Same street written as “Dr,” unit styled differently | Not checked in this snapshot |
| A Google-sourced place listing | Name plus “Co” | Same street written as “Dr,” unit included | Not checked in this snapshot |
The phone number matches everywhere it was checked. The street type is written three different ways. The company should pick the correct postal form and use it on the site, in schema, and on every listing. A URL-only audit cannot open a Google Business Profile directly.
Content gaps
| Buyer need | Coverage on site | Who wins | Recommended asset |
|---|---|---|---|
| Emergency / 24-7 | Mentioned on the homepage and About page only | Competitor C and a national brand | A dedicated emergency plumbing page with response times and what to do before the technician arrives |
| Boiler / hydronic “no heat” | Has a page, but it isn’t written answer-first | Competitors A and B, plus others | Rewrite with the urgent situation up top, plus service area and response time |
| Flat-rate, no travel fee | On the FAQ page only | Two competitors with clear pricing pages | Add it to the homepage and every service page, and expand the FAQ markup to all 9 questions |
| Tankless install | Covered inside the water heater page | Competitors B and C, plus a specialist | A dedicated tankless page: brands installed, typical price range, local permit notes |
| Proof / reviews | Star icons with no text, no review count | A competitor whose review count appears in answers | Add the rating, count, and source in plain text, with a few short quoted reviews |
| Sewer line | Not offered on the site | Specialists | Add a page only if the company actually offers this service |
Fix plan
Methodology and limits
Engine: our built-in web-grounded AI search (a live web search with an AI-written answer and cited links), one run per prompt, November 11, 2026. This is a proxy. It is not ChatGPT, Perplexity, Claude, Gemini, or Google AI Overviews, which were not queried in this mini-audit, and AI answers vary between runs. Crawl: robots.txt, sitemap, llms.txt, and 10 pages fetched over HTTPS, plus homepage requests using six bot user agents. Speed: a Lighthouse mobile lab run on the homepage. This isn’t real-user data. Entity: two public listing or review pages were fetched; a Google listing was seen in search results only. Not measured: real traffic, Search Console data, Google Business Profile details, backlinks, or AI search volume. Score bands: 80+ Strong · 60–79 Competitive · 40–59 At risk · under 40 Invisible.
This is a snapshot. The full audit goes further.
The full AI Visibility Audit runs 40 or more buyer prompts, three times each, across ChatGPT, Perplexity, Claude, Gemini, and Google AI features. It also compares your top 5 competitors and the sources they’re cited from, and includes a 90-day plan. It costs $100.