This is a sample report for a fictional business. Everything below is unlocked so you can see exactly what you’d get. Every signal, every piece of evidence, and every fix written out in full, scored by the same engine that scans a real site. Scan your own site.

https://maple-street-cleaning.example/

D+

69/100 · 100% of the signal weight measured · 5 pages read

Traditional SEO89%
AI Search67%
Voice Search25%
Local Search74%
Mobile88%
Performance74%
E-E-A-T42%
Content Quality50%
Accessibility100%
Google Profile79%
Bing Placescheck by hand

Biggest wins

Ranked by how many points each one moves your overall grade.

  1. FAQPage schema with questions (Voice Search, +3.3 pts)

    There is no FAQPage schema on the 5 page(s) crawled, so no page offers an assistant a question-and-answer pair to read out. The text to paste is in this check’s panel below.

  2. Real named people with roles, not anonymous "our team" (E-E-A-T, +2.7 pts)

    The About Us page describes 'Our Team' and says cleaners are 'experienced, background-checked and fully insured' but never names the owner or any staff member. The text to paste is in this check’s panel below.

  3. Headings framed as questions or tasks rather than labels (Content Quality, +2.5 pts)

    The house-cleaning.html page uses flat labels such as 'What We Do', 'Booking' and 'Areas We Cover' instead of question-style headings that match how customers and AI assistants phrase queries. The text to paste is in this check’s panel below.

  4. Content directly answers the questions customers actually ask (AI Search, +2.0 pts)

    The house-cleaning.html, services.html and office cleaning descriptions explain scope and scheduling but no page gives any price, price range, or how a quote is produced. The text to paste is in this check’s panel below.

  5. Enough substance to answer a question without a phone call (Content Quality, +1.7 pts)

    Neither house-cleaning.html, services.html nor any other page states any price, rate, or starting cost for house cleaning, office cleaning, move-in/move-out cleaning or church/community hall cleaning. The text to paste is in this check’s panel below.

  6. Complete PostalAddress in schema (street, city, state, ZIP) (Local Search, +1.5 pts)

    The schema has streetAddress, addressLocality but is missing addressRegion, postalCode. The text to paste is in this check’s panel below.

Want these applied for you instead? Talk to us.

Not scored, and why

“We could not check this” and “your site fails this” are different statements, so these are kept out of the grade rather than scored zero.

Bing Placescheck by hand

No public API reports Bing Places listing status, and BING_MAPS_API_KEY is not set. Not scored rather than guessed.

How to check: Check by hand at bingplaces.com (search the business name + city, 2 minutes), or set BING_MAPS_API_KEY to have the engine query Bing's local index. Claiming a Bing listing is usually a five-minute fix and a genuine easy win.

Every point, and what it was based on

Weights calibrated September 2026 against five hand-audited sites.

We could not identify a platform for your site, so the fixes below carry general placement guidance. They are the same fixes either way. Any public website can be scanned and fixed; recognised platforms simply get the extra convenience of exact steps.

Traditional SEO: 16/18

Raw-HTML crawl (no JavaScript execution)

PARTTitle tag present and well-sized (15–65 characters)2/3

"Home" (4 characters)

Your fix, written for you and ready to paste worth 1 point

The title is 4 characters ("Home"), outside the 15–65 range search engines and assistants display.

Where it goes: replace the <title> in the homepage <head>, or the Title field in your SEO plugin. That draft is 50 characters. Write the same pattern for every other page, swapping in that page's own service.

Show technical details

This is the part to forward. You do not have to understand it.

House Cleaning in Fairview | Maple Street Cleaning
PARTMeta description present and well-sized (50–165 characters)2/3

"Cleaning services in Fairview." (30 characters)

Your fix, written for you and ready to paste worth 1 point

The description is 30 characters ("Cleaning services in Fairview."), outside the 50–165 range.

Where it goes: replace the <meta name="description"> in the homepage <head>, or the Meta Description field in your SEO plugin. Fill the bracketed blank in and the draft lands at 163 characters.

1 blank to fill in. Those are the facts only you have. Everything else is taken from your own pages.

Show technical details

This is the part to forward. You do not have to understand it.

Maple Street Cleaning provides house cleaning in Fairview. [ONE REASON TO CALL, e.g. same-day appointments, 24-hour callout, free estimates]. Call +1-336-555-0148.
PASSCanonical URL declared2/2

https://maple-street-cleaning.example/

PASSServed over HTTPS3/3

https://maple-street-cleaning.example/ served over HTTPS

PASSExactly one H1 on the homepage2/2

1 <h1> element(s) found in the raw HTML

PASSHomepage links to at least 5 internal pages2/2

7 internal link(s) in the raw homepage HTML

PASSrobots.txt reachable1/1

https://maple-street-cleaning.example/robots.txt returned HTTP 200

PASSXML sitemap reachable2/2

https://maple-street-cleaning.example/sitemap.xml returned HTTP 200

AI Search: 8/12

Claude API content evaluation (claude-sonnet-5) over 3319 characters from 5 page(s): the homepage (/), /about.html, /services.html, /house-cleaning.html, /contact.html

PARTContent directly answers the questions customers actually ask2/4

The site explains what a house cleaning visit covers and confirms insurance, but nowhere states pricing, what a quote costs, or financing, so the most commonly asked cost question is never answered.. Quoted from /house-cleaning.html: "A standard visit covers kitchens, bathrooms, living areas and bedrooms: surfaces, floors, sinks, baths, showers and toilets, plus dusting and vacuuming throughout.". Quoted from /about.html: "We hold public liability insurance and every cleaner is background-checked before their first visit.". Quoted from /house-cleaning.html: "Most customers book a weekly or every two weeks visit, though we are happy to do one-off cleans."

Your fix, written for you and ready to paste worth 2 points

The house-cleaning.html, services.html and office cleaning descriptions explain scope and scheduling but no page gives any price, price range, or how a quote is produced.

Where it goes: Add as an FAQ section near the bottom of house-cleaning.html, and a similar short pricing note on services.html.

2 blanks to fill in. Those are the facts only you have. Everything else is taken from your own pages.

Show technical details

This is the part to forward. You do not have to understand it.

H3: How much does house cleaning cost?
Every home is different, so we price each visit after a quick conversation about the size of your property and how often you'd like us to visit. Call us at (336) 555-0148 and we'll give you a straightforward quote - starting rates are [YOUR STARTING PRICE]. Weekly and every-two-week customers often pay less per visit than one-off cleans.

H3: Do you charge extra for move-in/move-out or church cleaning?
[PRICING DETAILS FOR MOVE-IN/MOVE-OUT AND CHURCH CLEANING]
PARTServices, service area, and hours stated as plain extractable text3/4

Hours, address, phone number, and a service list are all plainly stated, but the service area is vague ("the towns around it" rather than named towns) and no page states prices.. Quoted from /contact.html: "Monday to Friday, 8am to 5pm. Saturday, 9am to 1pm. Closed Sunday.". Quoted from /house-cleaning.html: "Areas We Cover Fairview and the towns around it.". Quoted from /services.html: "House Cleaning Regular or one-off cleaning for houses and apartments."

Your fix, written for you and ready to paste worth 1 point

house-cleaning.html says only "Fairview and the towns around it" without naming which towns, leaving the service area ambiguous for both readers and AI assistants.

Where it goes: Replace the "Areas We Cover" line on house-cleaning.html with the above.

1 blank to fill in. Those are the facts only you have. Everything else is taken from your own pages.

Show technical details

This is the part to forward. You do not have to understand it.

Areas We Cover
Fairview and [NAMES OF SURROUNDING TOWNS YOU SERVE].
PARTUnambiguous who the business is, what it does, and where it operates3/4

Who the business is, what it does, and where it is based are all clear, but the duplicated "community centers" phrase on services.html is a leftover editing error that slightly muddies the service description.. Quoted from /about.html: "Maple Street Cleaning is a local, family-run cleaning company based in Fairview, established 2009.". Quoted from /contact.html: "412 Maple Street Fairview Telephone: (336) 555-0148". Quoted from /services.html: "Church and Community Hall Cleaning Scheduled cleaning for churches, community centers and community centers."

Your fix, written for you and ready to paste worth 1 point

services.html reads "Scheduled cleaning for churches, community centers and community centers" with the phrase repeated, a cosmetic copy-editing leftover rather than a wrong-industry one.

Where it goes: Replace the duplicated phrase in the Church and Community Hall Cleaning description on services.html.

Show technical details

This is the part to forward. You do not have to understand it.

Church and Community Hall Cleaning
Scheduled cleaning for churches and community centers.

Voice Search: 3/12

Raw-HTML crawl, with schema and heading structure parsed from page source

FAILSpeakable schema present in the raw HTML0/2

no speakable property in any JSON-LD block

Your fix, ready to paste worth 2 points

There is no speakable property in any JSON-LD block on https://maple-street-cleaning.example/, so nothing tells a voice assistant which sentences to read out.

Where it goes: the paragraph goes on the homepage where that text already is, since you are adding the id rather than the words, and the schema goes in the same page's <head>, server-rendered.

Show technical details

This is the part to forward. You do not have to understand it.

<p id="speakable-summary">Because we turn up when we say we will, and the same cleaners come every visit. We have been cleaning homes and offices in this area for a long time, and most of our work comes from customers recommending us to their friends and neighbors.</p>

And the schema that points at it, in the same page's <head>:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebPage",
  "url": "https://maple-street-cleaning.example/",
  "name": "Maple Street Cleaning",
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      "#speakable-summary"
    ]
  }
}
</script>
FAILFAQPage schema with questions0/5

no FAQPage schema on the 5 page(s) crawled

Your fix, written for you and ready to paste worth 5 points

There is no FAQPage schema on the 5 page(s) crawled, so no page offers an assistant a question-and-answer pair to read out.

Where it goes: the visible questions go on the page as real headings and paragraphs, and the JSON-LD goes in that same page's <head>, server-rendered. The two must match word for word, because schema whose questions are not visible on the page is what Google discounts.

4 blanks to fill in. Those are the facts only you have. Everything else is taken from your own pages.

Show technical details

This is the part to forward. You do not have to understand it.

Visible on /house-cleaning.html, under a "Questions about house cleaning" heading:

H3: How much does house cleaning cost in Fairview?
Maple Street Cleaning charges from [YOUR STARTING PRICE] for house cleaning. [WHAT CHANGES THE PRICE, e.g. size of the property, number of rooms, how often you book].

H3: What is included in house cleaning?
[LIST WHAT IS INCLUDED: the rooms, tasks, materials and clean-up covered by house cleaning].

H3: Do you offer house cleaning in Fairview?
Yes, Maple Street Cleaning covers Fairview. [ANY OTHER TOWNS OR ZIP CODES YOU SERVE].

And the matching JSON-LD, server-rendered into the same page's <head>:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "How much does house cleaning cost in Fairview?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Maple Street Cleaning charges from [YOUR STARTING PRICE] for house cleaning. [WHAT CHANGES THE PRICE, e.g. size of the property, number of rooms, how often you book]."
      }
    },
    {
      "@type": "Question",
      "name": "What is included in house cleaning?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "[LIST WHAT IS INCLUDED: the rooms, tasks, materials and clean-up covered by house cleaning]."
      }
    },
    {
      "@type": "Question",
      "name": "Do you offer house cleaning in Fairview?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, Maple Street Cleaning covers Fairview. [ANY OTHER TOWNS OR ZIP CODES YOU SERVE]."
      }
    }
  ]
}
</script>
PARTHeadings phrased as customer questions2/3

2 question-style heading(s): "Why Choose Maple Street Cleaning?", "What We Do"

Your fix: a task, nothing to paste worth 1 point
Show technical details
Only 2 question-style heading(s) across the pages crawled, starting with "Why Choose Maple Street Cleaning?". The rest are labels, which match nothing anybody says out loud. This is the same passage as "FAQPage schema with questions" under Voice Search, so it is fixed by that one text rather than two. applying that fix satisfies this check as well. Two rewrites of one sentence would undo each other.
PARTQuestions followed immediately by a short, direct answer1/2

1 question heading(s) followed by a 1–2 sentence answer within the first 300 characters

Your fix, written for you and ready to paste worth 1 point

Only 1 question heading(s) are followed by a 1–2 sentence answer within the first 300 characters; the rest open with explanation, so there is no sentence short enough to be read aloud.

Where it goes: each answer goes immediately below its heading, before any longer explanation, because that first sentence is the one that gets read aloud. Keep the longer detail underneath it.

1 blank to fill in. Those are the facts only you have. Everything else is taken from your own pages.

Show technical details

This is the part to forward. You do not have to understand it.

On the homepage, directly under the heading "Why Choose Maple Street Cleaning?":

[ANSWER "Why Choose Maple Street Cleaning?" IN ONE SENTENCE: the shortest true answer, before any longer explanation].

Local Search: 14/19

Raw-HTML crawl, with JSON-LD and microdata parsed from page source, no JavaScript execution

PASSLocalBusiness schema present in the raw HTML5/5

JSON-LD @type "CleaningService" found in the raw HTML

PARTComplete PostalAddress in schema (street, city, state, ZIP)2/4

streetAddress: 412 Maple Street · addressLocality: Fairview

Your fix, ready to paste worth 2 points

The schema has streetAddress, addressLocality but is missing addressRegion, postalCode.

Where it goes: inside the LocalBusiness block in your page source, alongside the properties already there. Keep the comma, because JSON-LD needs one between every property except the last. Replace the "address" property if one is already there.

2 blanks to fill in. Those are the facts only you have. Everything else is taken from your own pages.

Show technical details

This is the part to forward. You do not have to understand it.

"address": {
  "@type": "PostalAddress",
  "streetAddress": "412 Maple Street",
  "addressLocality": "Fairview",
  "addressRegion": "[STATE]",
  "postalCode": "[ZIP CODE]",
  "addressCountry": "US"
},
FAILGeoCoordinates present0/2

no geo.latitude / geo.longitude in the schema

Your fix, ready to paste worth 2 points

There is no geo.latitude / geo.longitude in the schema for 412 Maple Street, so the listing carries no exact position.

Where it goes: inside the LocalBusiness block in your page source, alongside the properties already there. Keep the comma, because JSON-LD needs one between every property except the last. The two numbers are the only thing here we cannot read off your site.

2 blanks to fill in. Those are the facts only you have. Everything else is taken from your own pages.

Show technical details

This is the part to forward. You do not have to understand it.

"geo": {
  "@type": "GeoCoordinates",
  "latitude": "[LATITUDE: find your pin in Google Maps, right-click it, and copy the first number]",
  "longitude": "[LONGITUDE: the second number from that same right-click]"
},
PARTOpening hours in schema2/3

openingHours string(s): Mo-Fr 08:00-17:00; Sa 09:00-13:00

Your fix, ready to paste worth 1 point

OpeningHours string(s): Mo-Fr 08:00-17:00; Sa 09:00-13:00.

Where it goes: inside the LocalBusiness block in your page source, alongside the properties already there. Keep the comma, because JSON-LD needs one between every property except the last. These are the hours your site already states, in the form search engines read. Replace the free-text "openingHours" property with this one.

Show technical details

This is the part to forward. You do not have to understand it.

"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "Monday",
      "Tuesday",
      "Wednesday",
      "Thursday",
      "Friday"
    ],
    "opens": "08:00",
    "closes": "17:00"
  },
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "Saturday"
    ],
    "opens": "09:00",
    "closes": "13:00"
  }
],
PASSTelephone number in schema2/2

+1-336-555-0148

PASSBusiness name in schema, written cleanly1/1

Maple Street Cleaning

PASSSchema phone matches the phone shown on the page2/2

schema telephone +1-336-555-0148 matches the number shown on the page

Mobile: 11.5/13

Google PageSpeed Insights API, mobile strategy (Lighthouse 13.5.0)

PASSMobile viewport meta tag set correctly4/4

Lighthouse audit "viewport-insight" passed, so the page declares a responsive viewport

PASSFirst content visible on a phone within 1.8s3/3

1.8 s median of 3 runs (1.7 s, 1.9 s, 1.8 s) on Lighthouse's simulated mid-range phone over a throttled mobile connection (good ≤ 1.8s, poor > 3s)

PASSPage visibly complete on a phone within 3.4s (Speed Index)3/3

3.2 s median of 3 runs (3.1 s, 3.4 s, 3.2 s) on Lighthouse's simulated mid-range phone over a throttled mobile connection (good ≤ 3.4s, poor > 5.8s)

PARTReal-world mobile experience (Chrome user data)1.5/3

Chrome User Experience Report rates real mobile visits "AVERAGE"

Your fix: send this to your web person

You don’t need to do any of this yourself. Copy this list and send it to whoever manages your website.

  • Real-world mobile experience (Chrome user data)
Show technical details

The same list with the change to make on each one. This is what your web person needs.

  1. Real-world mobile experience (Chrome user data)What Google sees real visitors experiencing on this site: "average"; the goal is "fast" (Chrome User Experience Report field data). This one follows the others: fix the speed items below and the real-visitor rating catches up within about a month.

Note: This Lighthouse version no longer runs the content-width, font-size or tap-targets audits, so this signal rests on the viewport check, mobile load timings, and real-visitor data when Google has it.

Performance: 13.4/18

Google PageSpeed Insights API, mobile strategy (Lighthouse 13.5.0), median of 3 runs

PARTLighthouse mobile performance score5.9/8

median Lighthouse mobile performance score 74/100 across 3 runs (74, 74, 74) (90 or better earns full marks)

PARTLargest Contentful Paint under 2.5s2.5/5

3.0 s median of 3 runs (2.9 s, 3.1 s, 3.0 s) (good ≤ 2.5s, poor > 4s)

PASSCumulative Layout Shift under 0.13/3

0.08 median of 3 runs (0.08, 0.09, 0.08) (good ≤ 0.1, poor > 0.25)

PASSTotal Blocking Time under 200ms2/2

170 ms median of 3 runs (150 ms, 190 ms, 170 ms) (good ≤ 200ms, poor > 600ms)

Your fix: send this to your web person

You don’t need to do any of this yourself. Copy this list and send it to whoever manages your website.

  • Lighthouse mobile performance score
  • Largest Contentful Paint under 2.5s
Show technical details

The same list with the change to make on each one. This is what your web person needs.

  1. Lighthouse mobile performance scoreOverall speed score for phones: 74 out of 100; the goal is 90 or better (Lighthouse mobile performance). This score is made up of the timings below, so it moves when they do, and there is nothing separate to do for it.
  2. Largest Contentful Paint under 2.5sHow long before the main picture or headline finishes loading: 3.0 seconds; the goal is under 2.5 seconds (Largest Contentful Paint). Compress and correctly size the hero image, and serve it without waiting on JavaScript. Measured 3.0 s median of 3 runs (2.9 s, 3.1 s, 3.0 s) (good ≤ 2.5s, poor > 4s).

E-E-A-T: 5/12

Claude API content evaluation (claude-sonnet-5) over 3319 characters from 5 page(s): the homepage (/), /about.html, /services.html, /house-cleaning.html, /contact.html

FAILReal named people with roles, not anonymous "our team"0/4

No named individuals appear anywhere; staff and ownership are referred to only as 'our team' or 'our cleaners'.. No supporting text found on the pages crawled.

Your fix, written for you and ready to paste worth 4 points

The About Us page describes 'Our Team' and says cleaners are 'experienced, background-checked and fully insured' but never names the owner or any staff member.

Where it goes: About Us page, under the existing 'Our Team' heading, replacing or supplementing the current anonymous description.

2 blanks to fill in. Those are the facts only you have. Everything else is taken from your own pages.

Show technical details

This is the part to forward. You do not have to understand it.

H3: Meet Our Team
Maple Street Cleaning is run by [OWNER NAME], who founded the business in 2009. Our cleaning team includes [STAFF NAME(S) AND ROLES], background-checked and fully insured, many of whom have been with us for several years.
PARTLicenses, certifications, insurance, or years in business stated3/4

The site states insurance, background checks and years in business but gives no policy numbers, certification names, or verifiable license details.. Quoted from the homepage (/): "established 2009 and fully insured". Quoted from /about.html: "We hold public liability insurance and every cleaner is background-checked before their first visit.". Quoted from /about.html: "Certificates are available on request."

Your fix, written for you and ready to paste worth 1 point

The About Us page says 'Certificates are available on request' rather than stating any specific insurance provider, policy number, or certification name.

Where it goes: About Us page, replacing the current 'Insurance and Checks' paragraph.

3 blanks to fill in. Those are the facts only you have. Everything else is taken from your own pages.

Show technical details

This is the part to forward. You do not have to understand it.

H3: Our Insurance and Checks
Maple Street Cleaning holds public liability insurance with [INSURANCE PROVIDER NAME], policy number [POLICY NUMBER]. Every cleaner is background-checked by [BACKGROUND CHECK PROVIDER] before their first visit. Copies of our certificates are available on request.
PARTContent carries dates or other freshness signals2/4

Only the About page carries a freshness date; the other four pages, including Services and House Cleaning, have no dates at all.. Quoted from /about.html: "This page was last reviewed in August 2026.". Quoted from the homepage (/): "established 2009 and fully insured"

Your fix, written for you and ready to paste worth 2 points

The Services, House Cleaning, Contact and Home pages have no 'last updated' or reviewed date, unlike the About page which states 'This page was last reviewed in August 2026.'

Where it goes: Add as a small line at the bottom of the Services page and the House Cleaning page, matching the format already used on the About page.

1 blank to fill in. Those are the facts only you have. Everything else is taken from your own pages.

Show technical details

This is the part to forward. You do not have to understand it.

This page was last reviewed in [MONTH AND YEAR].

Content Quality: 6/12

Claude API content evaluation (claude-sonnet-5) over 3319 characters from 5 page(s): the homepage (/), /about.html, /services.html, /house-cleaning.html, /contact.html

PARTHeadings framed as questions or tasks rather than labels1/4

Every heading across the site is a plain label (e.g. 'Our Team', 'Booking', 'Insurance and Checks') rather than a question a customer would actually ask.. Paraphrase of /about.html (not a quotation): Headings are plain labels like 'Our Team', 'Insurance and Checks', 'Our Approach'.. Paraphrase of /house-cleaning.html (not a quotation): Headings are 'What We Do', 'Booking', 'Areas We Cover' rather than questions.. Paraphrase of /services.html (not a quotation): Service names like 'House Cleaning', 'Office Cleaning' are used as headings, not questions.

Your fix, written for you and ready to paste worth 3 points

The house-cleaning.html page uses flat labels such as 'What We Do', 'Booking' and 'Areas We Cover' instead of question-style headings that match how customers and AI assistants phrase queries.

Where it goes: Replace the 'What We Do', 'Booking' and 'Areas We Cover' headings on house-cleaning.html with the question versions above.

Show technical details

This is the part to forward. You do not have to understand it.

H2: What Does a House Cleaning Visit Include?
A standard visit covers kitchens, bathrooms, living areas and bedrooms: surfaces, floors, sinks, baths, showers and toilets, plus dusting and vacuuming throughout. We bring our own equipment and materials.

H2: How Do I Book a House Cleaning?
Give us a call and we will arrange a time that suits you. Most customers book a weekly or every two weeks visit, though we are happy to do one-off cleans.

H2: What Areas Do You Cover?
Fairview and the towns around it.
PARTEnough substance to answer a question without a phone call2/4

The house cleaning page explains process, frequency and insurance is covered on the About page, but no page states any pricing or cost information anywhere on the site.. Quoted from /house-cleaning.html: "A standard visit covers kitchens, bathrooms, living areas and bedrooms: surfaces, floors, sinks, baths, showers and toilets, plus dusting and vacuuming throughout.". Quoted from /about.html: "We hold public liability insurance and every cleaner is background-checked before their first visit.". Quoted from /house-cleaning.html: "Most customers book a weekly or every two weeks visit, though we are happy to do one-off cleans."

Your fix, written for you and ready to paste worth 2 points

Neither house-cleaning.html, services.html nor any other page states any price, rate, or starting cost for house cleaning, office cleaning, move-in/move-out cleaning or church/community hall cleaning.

Where it goes: Add as a new section on house-cleaning.html, after 'What We Do'.

2 blanks to fill in. Those are the facts only you have. Everything else is taken from your own pages.

Show technical details

This is the part to forward. You do not have to understand it.

H2: How Much Does House Cleaning Cost?
The cost of a visit depends on the size of your home and how often you'd like us to come. Call us at (336) 555-0148 and we'll give you a cost for your property. Typical pricing: [YOUR STARTING PRICE FOR A STANDARD VISIT], with discounts for [REGULAR WEEKLY OR EVERY TWO WEEKS BOOKINGS IF APPLICABLE].
PARTPlain language a customer understands, free of filler3/4

The site is otherwise clear and consistent about what the business does, but services.html has a duplicated phrase ('community centers and community centers') that is a cosmetic leftover rather than a wrong-industry mix-up.. Quoted from /services.html: "Scheduled cleaning for churches, community centers and community centers.". Quoted from /about.html: "This page was last reviewed in August 2026."

Your fix: a task, nothing to paste worth 1 point
Show technical details
On services.html, the Church and Community Hall Cleaning description reads 'Scheduled cleaning for churches, community centers and community centers,' repeating 'community centers' twice instead of naming a distinct third category. This is the same passage as "Unambiguous who the business is, what it does, and where it operates" under AI Search, so it is fixed by that one text rather than two. applying that fix satisfies this check as well. Two rewrites of one sentence would undo each other.

Accessibility: 8/8

Google PageSpeed Insights API (Lighthouse 13.5.0) accessibility category

PASSLighthouse accessibility score8/8

Lighthouse accessibility score 91/100 (90 or better earns full marks); no failing audits reported

Note: Lighthouse catches machine-checkable accessibility problems only. A clean score is not a full WCAG audit and the report should not imply otherwise.

Google Profile: 13.5/17

Google Places API (New), places:searchText [sample fixture], profile "Maple Street Cleaning"

PASSPrimary business category set2/2

primary category "House cleaning service"

FAILBusiness description present0/2

no description on the profile

Your fix, written for you and ready to paste worth 2 points

There is no description on the profile for "Maple Street Cleaning", so the profile gives Google nothing in the business's own words.

Where it goes: Google Business Profile -> Edit profile -> About -> "Business description". Fill the bracketed blanks in first; the limit is 750 characters and this draft leaves room for them.

5 blanks to fill in. Those are the facts only you have. Everything else is taken from your own pages.

Show technical details

This is the part to forward. You do not have to understand it.

Maple Street Cleaning is a house cleaning service serving Fairview. We also handle [LIST YOUR OTHER SERVICES]. [HOW LONG YOU HAVE BEEN TRADING, e.g. "Family-run since 2011"], [LICENSE OR CERTIFICATION NUMBER IF YOU HOLD ONE], and [WHAT YOU DO DIFFERENTLY: the one thing customers say about you]. We cover Fairview and [ANY OTHER TOWNS OR ZIP CODES YOU SERVE]. Call +1-336-555-0148 to book.
PASSOpening hours published for all seven days3/3

7 day(s) listed: Monday: 8:00 AM – 5:00 PM | Tuesday: 8:00 AM – 5:00 PM | Wednesday: 8:00 AM – 5:00 PM | Thursday: 8:00 AM – 5:00 PM | Friday: 8:00 AM – 5:00 PM | Saturday: 9:00 AM – 1:00 PM | Sunday: Closed

PARTAt least 5 photos on the profile1/2

3 photo(s) returned by the API

Your fix: do this in your Google profile worth 1 point
Show technical details
Only 3 photo(s) returned by the API. Add real photos of the team, vehicles and completed work, at least five of them, and add new ones monthly.
PARTAt least 10 reviews1.5/2

11 review(s) on the profile

Your fix: do this in your Google profile worth 0.5 points
Show technical details
Only 11 review(s) on the profile. Ask every satisfied customer for one, with a direct review link sent the day the job finishes.
PASSAverage rating 4.5 or better (4.0+ earns most of the points)2/2

average rating 4.6

PASSProfile links to this page2/2

profile website https://maple-street-cleaning.example/ vs scanned site https://maple-street-cleaning.example/

PASSProfile phone matches the website2/2

profile phone (336) 555-0148 matches the website

Note: Business identified by schema type "CleaningService"; profile accepted because its website field is maple-street-cleaning.example.

Note: Read from the public Google Places API. Review replies and Q&A are part of profile quality but are not exposed by this API, so they are not scored here. See the unmeasured list.

Note: Review recency not scored: the Places API returns at most five reviews chosen by relevance, not date, and the newest in this sample is 136 day(s) old (2026-06-02). That cannot show whether newer reviews exist, so check the profile by hand.

Don’t want to do this yourself?

We’ll implement every fix and keep you monitored, all 24 of them. You hand us the logins once, we make the changes, and we re-scan every month so you find out when something slips before a customer does. The setup fee covers the implementation; the monthly is the monitoring and the fixes it finds.

$750 to set upthen$129 a month

Get started

Send this to your web person

On your own report there is a form here that emails every fix above, the written text, the code blocks and the placement notes, straight to your designer or marketing team, with you copied in and their reply coming back to you. It is switched off on this sample, because this business does not exist and the form sends real email.

Something look wrong? Email support@echobat-ai.com with report id sample and what looks off. It goes into our health log and gets investigated.