What does a client report look like?
A walkthrough of the AI Visibility Audit you’d receive, a decision on page 1, then scores, evidence, fixes and the fix list we work from, shown on a fictional business, Example Ledger Co. Every number on this page is example data.
The decision, before the detail
The first page tells the owner whether it’s worth pursuing, the three moves that matter most, and what would need to be true for them to pay off.
DecisionExample data, fictional business
Worth pursuing. The site is crawlable and AI crawlers aren’t blocked, but no page answers the questions customers ask, and the business details can’t be confirmed from a structured source.
Three moves
- Publish an answer-ready FAQ page, starting with “How much does a bookkeeper cost in [Local area]?”
- Add Organization and LocalBusiness JSON-LD with the current street address
- Make the business details on public listings match the website footer
What would need to be true
- Customers ask questions like these before they call (not measured here, prompt measurement is Coming)
- Someone can publish and keep the new pages current
- Someone can make the fixes, our Sprint or your own team, with your sign-off on every change
One document, three readers
The owner reads the first page, the decision, the scope box, the short fix list. Whoever does the work gets the detail and an editable tracker. And the evidence is logged for anyone who wants to check our working.
Example data, a fictional business on a .example domain
ScopePrinted on the cover, what was measured, and what wasn’t
Measured
- Site crawl and page checks, crawl & indexing, on-page, content quality, links & architecture
- Structured data & sharing checks, and security & trust checks
- AI search readiness, AI crawler access and readiness heuristics
Not measured
- PageSpeed performance, the performance module didn’t run in this example
- Search visibility & authority, needs market data outside this example’s scope
- First-party analytics, no GA4 / Search Console access in this example
- Prompt measurement across ChatGPT, Gemini and Perplexity, Coming, as part of the Retainer
Areas without data are marked Not assessed below, never estimated, never a fake 100. A real report lists its gaps the same way.
Nine areas, gaps left blank
After the decision block comes the score, a summary, not the outcome, with the nine audit areas underneath. Areas a module didn’t cover stay Not assessed.
61 / 100 overall
Across the seven assessed areas. The score summarizes the checks, it doesn’t predict inquiries, and it isn’t how we report progress. Progress is the fixes we verify.
| Area | What it captures | Score / 100 |
|---|---|---|
| Crawl and indexing | Can crawlers reach and index the site | 70 |
| On-page | Titles, headings and page-level signals | 64 |
| Content quality | Whether pages answer the questions clearly | 55 |
| Links and architecture | Internal linking and site structure | 61 |
| Structured data and sharing | JSON-LD and sharing metadata | 55 |
| AI search readiness | AI crawler access and readiness heuristics (llms.txt noted as optional) | 52 |
| Performance | Page speed signals, needs the performance module | Not assessed |
| Security and trust | HTTPS and baseline trust checks | 72 |
| Search visibility and authority | Market and authority data, needs sources outside this example’s scope | Not assessed |
Illustrative overall score: the weighted mean of the assessed areas, using the published method weights (see our methodology), renormalized over the seven areas assessed here. All figures are example data, and “Not assessed” areas contribute no number.
The fixes we promised, rechecked
From the second report onward, a targeted recheck sits near the top: each fix we promised, rechecked under the same inputs and marked verified fixed, still open or not rechecked. A fix counts only once it’s verified.
2 verified fixed · 2 still open · 1 not rechecked. 2 new issues found on the recheck.
- Add JSON-LD structured data to key pagespage-check_2026-10-02 · Organization + LocalBusiness found on home and services; validates cleanlyVerified fixed
- Make business details identical across public listingsprofile-check_2026-10-02 · current street address on the site footer and both listings we controlVerified fixed
- Publish an answer-ready FAQ pagesite-crawl_2026-10-02 · /faq → 404Still open
- Build one answer-ready page per service areasite-crawl_2026-10-02 · no new service-area pages foundStill open
- Set up AI-referral tracking in analyticsNo analytics access in this example, so we can’t confirm it either wayNot rechecked
New since the last check
- Two pages now share the same title tag (Low)
- One public listing still shows the old phone number (Medium)
Fixes match across runs on their stable ID, not their position on the list, so a renamed item isn’t double-counted.
Every finding carries its evidence
Each finding links back to the log it came from, a page check or a profile read, so you can check the raw material, not just our summary.
AI crawlers can read the site
robots.txt doesn’t block the listed AI crawlers, good, leave it that way. There’s no llms.txt; that file is optional (a community proposal, not a search engine requirement), so it’s noted, not prioritized.
readiness-check_2026-09-12 · robots.txt allows listed AI crawlers; /llms.txt → 404 (info only)
No machine-readable business details
The homepage and services pages carry no JSON-LD, so the business name, address and service area can’t be confirmed from a structured source.
page-check_2026-09-12 · home + services HTML · no JSON-LD found
No page answers the cost question
“How much does a bookkeeper cost in [Local area]?” is a question customers commonly ask before calling, and no page answers it in plain language.
site-crawl_2026-09-12 · 14 pages indexed; no pricing or FAQ page
Business details disagree across listings
The website footer shows the current street address; two public listings still show the old one. Inconsistent details weaken trust signals.
profile-check_2026-09-12 · site footer ≠ public listings
Fixes ordered by impact × effort
The same order we’d work in, the most valuable change per unit of effort first. The owner column is a heuristic, technical work to whoever builds, pages to whoever writes, profiles to whoever markets, and it’s editable in the tracker we hand over.
| Fix | Why it matters | Impact | Effort | Suggested owner | At recheck |
|---|---|---|---|---|---|
| Add JSON-LD structured data to key pages | Organization, LocalBusiness and FAQPage markup | High | Low | Developer | Verified fixed |
| Publish an answer-ready FAQ page | Including “how much does a bookkeeper cost in [Local area]” | High | Medium | Content | Still open |
| Make business details identical across public listings | Current street address everywhere, matching the footer | Medium | Low | Marketing | Verified fixed |
| Set up AI-referral tracking in analytics | So changes show up in the client’s own numbers | Medium | Medium | Marketing | Not rechecked |
| Build one answer-ready page per service area | Pages that directly answer common customer questions | Medium | High | Content | Still open |
| Fix the two pages sharing the same title tag | Found on the recheck crawl, new this time | Low | Low | Developer | New |
| Correct the old phone number on one public listing | Found on the recheck profile check, new this time | Medium | Low | Marketing | New |
| Optional: add /llms.txt | A community proposal, not a search engine requirement, low priority | Low | Low | Developer | Optional |
Example data, impact and effort are our estimate, ordered highest-value first. The last column is the tracker view at recheck. In a real engagement, a Sprint works through this list with your sign-off on every change.
The fix list we work from
Every finding becomes a step in a plain-language fix list like this one. In a Sprint, we make the fixes ourselves, and nothing is published without your sign-off.
Illustrative example, fictional site, fictional fix list
FIX LIST, Example Ledger Co. (https://example-ledger.example) Illustrative example. The client approves every change before it ships. 1. robots.txt, keep AI crawlers allowed /robots.txt already allows GPTBot, ClaudeBot, PerplexityBot and Google-Extended. No change needed, leave it that way. 2. JSON-LD, add to the homepage Organization + LocalBusiness: name, url, logo, telephone, address (current street, not the old one), areaServed, and sameAs pointing at the public profiles we control. 3. /faq, publish an answer-ready page Plain-English answers to common customer questions, e.g. "How much does a bookkeeper cost in [Local area]?" Mark the page up with FAQPage JSON-LD. 4. Business details, make listings match the footer Update the old street address on the public listings we control. 5. Optional, low priority, /llms.txt A community proposal, not a search engine requirement. Only if it's cheap: one line per key page, URL + one sentence. Done when: JSON-LD validates cleanly, /faq is live and linked in the nav, and listings show the current address.
Book a Sprint and we make the top fixes ourselves, then re-audit to verify them. Or share this fix list with your own team.
What this page doesn’t show
This sample skips the back of the report, the method detail, the per-check logs and the full evidence index. A real report includes them, and cites the method version it was checked under.
The method behind these scores is public, read the published methodology.
Want one built on your business?
Book a free check. We’ll run a short review of your site and talk you through what we find. If it’s worth pursuing, the AI Visibility Audit is the full report above, built on your own site.