Answer engines cannot read this business from its own site. On "near me" questions they will name competitors they can read instead.
https://jrherronpainting.com/ · Checked Nov 2, 2026
Checked 1 page — 24 checks, each scored on the evidence found:
Readiness score from on-site signals — not a measurement of live ChatGPT / Perplexity / Google AI answers.
Most of the 80 lost points come from schema field completeness, service + city pages, and extractable q&a content:
The full ranked list is in the fix list below; every point traces to a check you can read in the audit.
No JSON-LD blocks found on any of the 1 pages checked.
Why it matters: JSON-LD is the one block on a page written purely for machines. Without it, an answer engine has to guess the business’s identity from prose — and it usually names a competitor it can read cleanly instead.
Next step: Add a JSON-LD block (LocalBusiness or Organization) to the site template so every page carries the business entity.
Source: the JSON-LD blocks in the pages read · Confidence: Direct read
No LocalBusiness or Organization type found in the schema on any checked page.
Why it matters: A specific type ("Plumber", "RoofingContractor") tells an engine exactly what the business is and which local questions it answers. A generic Organization label leaves the engine to infer the trade.
Next step: Add LocalBusiness-subtype schema (e.g. GeneralContractor) naming the business, its trade, and where it works.
Source: the business entity’s @type in the crawled JSON-LD · Confidence: Direct read
No business schema node found, so none of the 8 key fields (name, phone, street address, URL, sameAs, hours, geo, service area) are published.
Why it matters: Each field is a question an engine can then answer without guessing — the phone for "call", the street for "near me", hours for "open now". Missing fields are questions the engine answers with someone else’s data.
Next step: Publish a business schema node carrying name, phone, street address, URL, profile links, hours, geo, and service area.
Source: the most complete business entity found in the crawled JSON-LD · Confidence: Direct read
No FAQPage schema on any checked page.
Why it matters: FAQPage schema hands engines pre-formatted question-and-answer pairs they can lift word-for-word into an answer — the closest thing to writing the answer yourself.
Next step: Add FAQPage schema mirroring the visible FAQ questions and answers (the schema must match what visitors see).
Source: JSON-LD @type values across the pages read · Confidence: Direct read
No Service schema found — services are described only in page text.
Why it matters: Service schema names each service as a machine-readable fact, so "who replaces water heaters in Long Beach?" can match the business on a stated service instead of a keyword buried in a paragraph.
Next step: Add Service schema for each core service, tied to the business and its service area.
Source: JSON-LD @type values across the pages read · Confidence: Direct read
No AggregateRating or Review schema found on any checked page.
Why it matters: Marked-up ratings give engines a citable proof number. A rating that exists only on Google’s own pages never reaches the answers assembled from the open web.
Next step: Once real reviews are published on the site, mark them up with Review / AggregateRating schema that matches them exactly.
Source: JSON-LD @type values across the pages read · Confidence: Direct read
No robots.txt found (HTTP 404) — crawlers get no instructions at all.
Why it matters: robots.txt is the instruction sheet crawlers read first. Without one they get no guidance — no sitemap pointer, no explicit welcome — and some simply crawl less.
Next step: Publish a robots.txt that welcomes search and AI crawlers and points to the sitemap.
Source: /robots.txt · Confidence: Direct read
No rule blocks the major AI crawlers — GPTBot: allowed · PerplexityBot: allowed · ClaudeBot: allowed.
No valid sitemap found at /sitemap.xml, /sitemap_index.xml, or /wp-sitemap.xml.
Why it matters: The sitemap is the map handed to crawlers. Pages missing from it are found late, by accident, or not at all — including the service pages that carry local questions.
Next step: Publish a sitemap.xml (or sitemap index) listing every public page, and reference it in robots.txt.
Source: the sitemap file listed in the appendix · Confidence: Direct read
No llms.txt found (HTTP 404).
Why it matters: llms.txt is the short, plain-text brief written for AI tools: who the business is, what it does, and which pages matter. It is the cheapest signal on this list to publish.
Next step: Publish an llms.txt at the site root: what the business does, where it works, and links to the key pages.
Source: /llms.txt · Confidence: Direct read
No llms.txt to evaluate.
Why it matters: A stub llms.txt tells an AI tool almost nothing. One that links the money pages — services, cities, guides — steers the tool to the pages worth citing.
Next step: Give llms.txt real substance — a business summary plus links to services, cities, contact, and FAQ pages.
Source: the body of /llms.txt · Confidence: Direct read
Homepage has no canonical tag; site serves clean HTTPS.
Why it matters: A canonical tag tells engines which URL is the real one, so citations and ranking signals land on one page instead of splitting across duplicates. HTTPS is table stakes for being treated as a trustworthy source.
Next step: Add a self-referencing canonical tag to every page and serve the whole site over HTTPS.
Source: the homepage <head> (canonical link) and the site’s URL scheme · Confidence: Direct read
0 question-and-answer blocks found across the checked pages (0 question-style headings; no dedicated FAQ page found).
Why it matters: Homeowners ask engines whole questions. Pages that state those questions and answer them in plain text give the engine something it can lift verbatim — that is what gets cited.
Next step: Publish Q&A content: the questions customers ask, answered in plain words on an FAQ page and service pages.
Source: question-style headings and FAQ blocks across the pages read · Confidence: Limited — the crawl covered only 1 page, so this rests on a thin read of the site
0 service+city / city pages found (0 combined service+city, 0 dedicated city pages); 0 service pages without a city in the address.
Why it matters: Local questions need a local page to land on: "Roof Replacement in Long Beach" has to exist as a page before an engine can cite it. One generic services page answers every city weakly and none of them well.
Next step: Create dedicated pages for the core services in the core cities served (e.g. "Roof Replacement in Long Beach").
Source: the page addresses collected from the sitemap and internal links · Confidence: Limited — inferred from page addresses collected during the crawl — the audit did not open every page on the site
Homepage runs 672 words; the main services page runs 0 words. Thin pages give engines little to cite.
Why it matters: Thin pages give an engine almost nothing to work with. A homepage and services page with real substance — services, areas, process, prices where published — are what answers get built from.
Next step: Deepen the homepage and services page: what you do, where, for whom, with specifics an engine can quote.
Source: the visible text of the homepage and the services page · Confidence: Limited — the crawl covered only 1 page, so this rests on a thin read of the site
Homepage has 1 H1 heading and 5 descriptive H2 sections.
0 of 1 checked pages carry a clean page title and a meta description in a sane length.
Why it matters: The title is the one-line summary engines and search results quote; the meta description is the supporting sentence. Missing or bloated ones cost the click and weaken the citation.
Next step: Give every key page a unique title and a one-sentence meta description naming the service and the place.
Source: the <title> and meta description of each page read · Confidence: Limited — the crawl covered only 1 page, so this rests on a thin read of the site
6 short factual blocks (tight paragraphs and lists) found on the homepage/services page — the shapes engines lift answers from.
Phone (714) 865-5731 is printed on the site but missing from the schema. No business name in schema to compare against the pages. No street address found in the schema or the pages checked.
Why it matters: Engines match a business to "near me" by reconciling its name, address, and phone everywhere they appear. When the schema, the homepage, and the contact page disagree, the match weakens — or the engine prints the wrong number.
Next step: Publish ONE name, phone, and street address (or explicit service area) — identical in the schema, footer, and contact page.
Source: compared across the schema, the homepage text, and the contact page · Confidence: Limited — the crawl covered only 1 page, so this rests on a thin read of the site
tel: click-to-call links found — a phone tap on mobile reaches the business directly.
No contact page found among the site links or sitemap.
Why it matters: A dedicated contact page is the page engines point people to. If it is missing or bare, the citation has nowhere useful to land.
Next step: Publish a dedicated contact page with the NAP, a form, and a click-to-call number.
Source: the contact page found in the crawl, or its absence from it · Confidence: Limited — the crawl covered only 1 page, so this rests on a thin read of the site
No links to review profiles (Google, Yelp, Houzz, BBB…) found on the checked pages.
Why it matters: Links to Google, Yelp, and the trade directories connect the site to its proof. Engines cite businesses they can corroborate — an unlinked profile is corroboration they may never find.
Next step: Link the Google and Yelp review profiles from the footer and contact page so engines can cite real proof.
Source: outbound links in the pages read · Confidence: Limited — the crawl covered only 1 page, so this rests on a thin read of the site
No testimonials found on the checked pages.
Why it matters: Visible testimonials are proof in the site’s own words that an engine can quote. A star number buried in code is not proof; a named customer sentence is.
Next step: Publish real customer testimonials (name, city, job type) on the homepage and service pages.
Source: testimonial-style content in the pages read · Confidence: Limited — detected by content patterns in the pages read, not by a registry — a page the crawl did not reach could hold more
No Google Business Profile or Maps profile link found on the checked pages.
Why it matters: A published link to the Google Business Profile ties the website to the listing that powers maps and "near me" answers, closing the loop engines use to confirm the business is real and current.
Next step: Link the Google Business Profile from the footer and contact page.
Source: outbound links in the pages read · Confidence: Limited — the crawl covered only 1 page, so this rests on a thin read of the site
Schema field completeness
What we found: No business schema node found, so none of the 8 key fields (name, phone, street address, URL, sameAs, hours, geo, service area) are published.
What to do: Publish a business schema node carrying name, phone, street address, URL, profile links, hours, geo, and service area.
Service + city pages
What we found: 0 service+city / city pages found (0 combined service+city, 0 dedicated city pages); 0 service pages without a city in the address.
What to do: Create dedicated pages for the core services in the core cities served (e.g. "Roof Replacement in Long Beach").
Extractable Q&A content
What we found: 0 question-and-answer blocks found across the checked pages (0 question-style headings; no dedicated FAQ page found).
What to do: Publish Q&A content: the questions customers ask, answered in plain words on an FAQ page and service pages.
Business type named specifically
What we found: No LocalBusiness or Organization type found in the schema on any checked page.
What to do: Add LocalBusiness-subtype schema (e.g. GeneralContractor) naming the business, its trade, and where it works.
Sitemap published and useful
What we found: No valid sitemap found at /sitemap.xml, /sitemap_index.xml, or /wp-sitemap.xml.
What to do: Publish a sitemap.xml (or sitemap index) listing every public page, and reference it in robots.txt.
Review profile links
What we found: No links to review profiles (Google, Yelp, Houzz, BBB…) found on the checked pages.
What to do: Link the Google and Yelp review profiles from the footer and contact page so engines can cite real proof.
JSON-LD structured data present
What we found: No JSON-LD blocks found on any of the 1 pages checked.
What to do: Add a JSON-LD block (LocalBusiness or Organization) to the site template so every page carries the business entity.
FAQPage schema
What we found: No FAQPage schema on any checked page.
What to do: Add FAQPage schema mirroring the visible FAQ questions and answers (the schema must match what visitors see).
Titles & meta descriptions
What we found: 0 of 1 checked pages carry a clean page title and a meta description in a sane length.
What to do: Give every key page a unique title and a one-sentence meta description naming the service and the place.
NAP consistency (name, address, phone)
What we found: Phone (714) 865-5731 is printed on the site but missing from the schema. No business name in schema to compare against the pages. No street address found in the schema or the pages checked.
What to do: Publish ONE name, phone, and street address (or explicit service area) — identical in the schema, footer, and contact page.
Service schema
What we found: No Service schema found — services are described only in page text.
What to do: Add Service schema for each core service, tied to the business and its service area.
Review / rating schema
What we found: No AggregateRating or Review schema found on any checked page.
What to do: Once real reviews are published on the site, mark them up with Review / AggregateRating schema that matches them exactly.
llms.txt published
What we found: No llms.txt found (HTTP 404).
What to do: Publish an llms.txt at the site root: what the business does, where it works, and links to the key pages.
Dedicated contact page
What we found: No contact page found among the site links or sitemap.
What to do: Publish a dedicated contact page with the NAP, a form, and a click-to-call number.
On-page testimonials
What we found: No testimonials found on the checked pages.
What to do: Publish real customer testimonials (name, city, job type) on the homepage and service pages.
robots.txt published
What we found: No robots.txt found (HTTP 404) — crawlers get no instructions at all.
What to do: Publish a robots.txt that welcomes search and AI crawlers and points to the sitemap.
llms.txt has substance
What we found: No llms.txt to evaluate.
What to do: Give llms.txt real substance — a business summary plus links to services, cities, contact, and FAQ pages.
Key-page content depth
What we found: Homepage runs 672 words; the main services page runs 0 words. Thin pages give engines little to cite.
What to do: Deepen the homepage and services page: what you do, where, for whom, with specifics an engine can quote.
Google Business Profile link
What we found: No Google Business Profile or Maps profile link found on the checked pages.
What to do: Link the Google Business Profile from the footer and contact page.
Canonical tag & HTTPS
What we found: Homepage has no canonical tag; site serves clean HTTPS.
What to do: Add a self-referencing canonical tag to every page and serve the whole site over HTTPS.
Email me this report (PDF) + the fix checklist. Everything above stays free and visible — the email is for delivery, the checklist, and a nudge to re-check after you fix things.
This list is the work. AltaPoint can take it from there — it starts with a free Snapshot, then the $999 Full Audit turns the fix list into a measured report with a ranked fix order.
Get your free SnapshotNot sure what else is leaking? The AI visibility score is one leak of several. Get your free Snapshot — a few minutes, and it covers the operational side too.
Developers & agencies: this checker is coming as an API. Join the API waitlist — one email when it opens, nothing before.
Fixed something? Re-check in 24h — results are cached for a day so the score reflects real changes, not refresh luck.
Rubric: AEO Score v2 — 24 checks in 4 sections, 100 points · Run date: Nov 2, 2026 · Read time: 1.2s. The audit fetches the pages and files listed above once, scores only what they contain, and shows the evidence next to every check.
This is a readiness score computed from on-site signals only — the schema, files, content, and links published on the pages listed above. It is not a measurement of live ChatGPT, Perplexity, or Google AI answers, and it does not claim the business does or does not appear in any engine’s responses. It measures whether the site publishes what those engines rely on when they choose what to cite.
AEO (Answer Engine Optimization) is how ready your website is for AI answer engines — ChatGPT, Perplexity, and Google AI Overviews. When someone asks an AI tool for a contractor or local service, the engine reads structured signals on business websites and cites the ones it can understand. AEO is making sure your site is one of them.
No. This is a readiness score from on-site signals — not a measurement of live ChatGPT / Perplexity / Google AI answers. It measures whether your site publishes the schema, Q&A, contact details, service pages, reviews, and machine files that answer engines rely on when they choose what to cite.
Up to 10: your homepage plus the key pages found from your sitemap and internal links — services, contact, FAQ, about, and service/city pages. The report states exactly how many pages were checked and lists them, and every one of the 24 checks shows the evidence it was scored on.
Most low scores come down to a few fixable gaps: no LocalBusiness schema, no FAQ page engines can lift answers from, a missing street address or phone in machine-readable form, no dedicated service and city pages, or no sitemap. Your report lists every gap found, in order of points recoverable.
llms.txt is a plain-text file at the root of your site (yoursite.com/llms.txt) written for AI tools: what the business does, where it works, and links to the key pages. Paired with a sitemap.xml, it hands crawlers and answer engines a map instead of making them guess.
Answer engines need some machine-readable location signal to match you to a place. A published street address in your schema earns full credit. If you work from home or cover an area, publish an explicit service area in your schema instead — the check explains which signal it found, and the fix list says exactly what to publish.
Re-check after you fix a gap, and then every few months. Results are cached for 24 hours, so a re-check inside a day shows the same report with its timestamp; after 24 hours the check fetches your site fresh.
You see the full report instantly — no signup. If you want it in your inbox, the email gate sends the report and the fix checklist. If you want the gaps fixed for you, that is the AltaPoint path: a free Snapshot, and the $999 Full Audit that turns the fix list into a measured report with a ranked fix order.
More free resources: see every free tool and guide we publish — including the Trades API Directory and the Long Beach Home Cost guides.
Curious what real checks look like? The AEO Scoreboard publishes actual scores from real runs of this checker — including our own site’s 86 and the biggest gap found in each report.