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.

AI Visibility Mini Audit · Sample

A Boulder plumbing & heating company

Boulder, CO · Local service · URL-only audit · 9 buyer prompts · 1 engine · 1 run · November 11, 2026 (America/Denver)

45
out of 100
At risk
3 / 9prompts named (33%)
3 / 9own site cited
10%share of voice (3 of 29 mentions)

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

PillarScoreEvidence
A. AI answer visibility12 / 35Named in 3 of 9 prompts, each time in 1st position and with its own site cited.
B. Share of voice4 / 1010.3% of brand mentions. Tied with one competitor for the most mentions (3 each).
C. Technical access13.5 / 15All AI bots allowed. Server-rendered text. Sitemap last updated April 7, 2025.
D. Structured data & entity4.5 / 15No Organization, LocalBusiness, or Plumber schema. Address written 3 different ways. FAQ schema covers 3 of 9 questions.
E. Content answerability8.5 / 20No 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 experience2.5 / 5Lighthouse mobile performance 75. LCP 3.5 s. CLS 0.28 (lab data).

Prompt heatmap: who the AI named

Buyer promptThis companyComp. AComp. BComp. COthers 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–––#12 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#31 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

“plumber in Boulder with flat-rate upfront pricing and no travel charge”
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.

“who does boiler repair in Boulder CO hydronic heating no heat”
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).

“best plumber in Boulder Colorado” (a win)
The answer named this company first as a strong choice: licensed, bonded, family-owned, and offering 24/7 emergency service.

Technical checks

CheckResultDetail
robots.txt and AI crawlersPassA wildcard allow rule, so major AI crawlers are permitted. A sitemap is declared.
CDN blocking by bot user-agentPassThe 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 redirectNot testedOur test server can’t make plain-HTTP requests, so this wasn’t measured. The HTTPS homepage correctly redirects to the canonical host.
IndexabilityPassAll 10 sitemap pages return 200, have self-referencing canonicals, no noindex, and a language attribute.
Server-rendered textPass500–750 words of real text in the raw HTML of every page.
Sitemap freshnessWarn10 URLs, all with a last-modified date of April 7, 2025 (about 19 months before this audit).
llms.txtPresent (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 schemaFailNo JSON-LD or microdata for Organization, LocalBusiness, or Plumber on any page, even after rendering in headless Chrome.
FAQ schemaPartialThe FAQ page has FAQPage markup for 3 questions, but the page shows 9 question headings. It also has no H1.
ImagesWarn5 of 12 homepage images have no alt text.
Page speed (Lighthouse, mobile, lab)WarnPerformance 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)

SourceNameAddressPhone
Website (contact page)Primary business nameStreet written as “Road,” unit included, city and ZIP presentMatches other sources
A major accreditation listingAbbreviated nameSame street written as “Rd.,” unit styled differentlyMatches
A review profile (4.8★, 477 reviews)Name plus “Company”Same street written as “Dr,” unit styled differentlyNot checked in this snapshot
A Google-sourced place listingName plus “Co”Same street written as “Dr,” unit includedNot 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 needCoverage on siteWho winsRecommended asset
Emergency / 24-7Mentioned on the homepage and About page onlyCompetitor C and a national brandA 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-firstCompetitors A and B, plus othersRewrite with the urgent situation up top, plus service area and response time
Flat-rate, no travel feeOn the FAQ page onlyTwo competitors with clear pricing pagesAdd it to the homepage and every service page, and expand the FAQ markup to all 9 questions
Tankless installCovered inside the water heater pageCompetitors B and C, plus a specialistA dedicated tankless page: brands installed, typical price range, local permit notes
Proof / reviewsStar icons with no text, no review countA competitor whose review count appears in answersAdd the rating, count, and source in plain text, with a few short quoted reviews
Sewer lineNot offered on the siteSpecialistsAdd a page only if the company actually offers this service

Fix plan

Quick winAdd LocalBusiness (Plumber) JSON-LD sitewide: name, address, phone, geo, hours, area served, founding year, and links to major profiles.Impact 4S
Quick winUse one address string everywhere: on the site, in schema, and on every public listing.Impact 4S
Quick winPut flat-rate pricing, no travel charge in the service area, and veteran-owned since the 1950s on the homepage and every service page. Expand the FAQ markup to all 9 questions.Impact 4S
Quick winAdd missing alt text. Fix the llms.txt encoding.Impact 2S
30 daysCreate dedicated pages for 24/7 emergency plumbing and tankless installation. Rewrite the boiler page answer-first.Impact 5M
30 daysAdd review proof in text (count, rating, source) and specific facts: response times and typical price ranges.Impact 3S
30 daysReduce layout shift (CLS 0.28 → under 0.1) by setting image dimensions and fixing font loading.Impact 2M
60 daysRefresh directory and review profiles, take part genuinely in local community threads (no spam), and pursue local press or partner pages.Impact 4M
90 daysPublish cost guides with real local price ranges and cited sources. Then re-run this prompt set and compare.Impact 3L

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.

Request your free snapshot See pricing