30-second mobile LCP. Schema declares the wrong city.
Your H1 is the word 'Home'.
amtreliablecleaningservices.com emits a lot of structured data — LocalBusiness, AggregateRating, Review, GeoCircle. The schema type coverage is good. The schema data is wrong: the homepage JSON-LD declares postalCode: 33142 (Hialeah / Miami-Dade) and streetAddress: 'Griffin Rd and, SW 90th Ave', while the body copy and Yelp listing say Cooper City. Lighthouse mobile is 55/100 with a 30-second LCP. H1 is literally the word 'Home'.
Domain: amtreliablecleaningservices.com · Business: Residential + commercial cleaning, AirBnB/VRBO turnovers, post-construction · Service area: Cooper City, FL · Broward County
Read this if nothing else.
The schema infrastructure was built, but the data inside it is wrong — it declares Hialeah ZIPs (33142, 33153, 33186) while the business operates in Cooper City. Combined with a 30-second mobile LCP and a placeholder H1, this is undermining the work that's been done.
Schema declares the wrong city
The homepage JSON-LD LocalBusiness declares postalCode: 33142 (Hialeah, Miami-Dade) and streetAddress: 'Griffin Rd and, SW 90th Ave'. The body copy says Cooper City 19 times. Hialeah and Cooper City are 25+ miles apart. Google trusts schema over body copy — this is actively telling Google the business is in a different city than it serves.
30.4-second mobile LCP
The single most severe performance metric in this audit batch. At 30 seconds, the visitor sees a blank or partially-rendered page for half a minute on mobile. Almost everyone bounces before content appears. This alone explains any conversion shortfall.
H1 is the word 'Home'
WordPress theme default. The browser title is correct, but the on-page H1 — Google's primary topical signal — contributes nothing. 5-minute fix worth significant ranking weight on 'cleaning Cooper City' and adjacent terms.
Schema reviewCount = 21
The on-site AggregateRating declares 5.0★ / 21 reviews. Yelp, Nextdoor, Thumbtack, and Facebook all show separate listings. Verify the schema count matches your live Google Business Profile review count — mismatched counts can trigger a Google manual action that strips review stars from SERPs.
Mod_Security blocks default crawlers
Requests with default curl or library user-agents get HTTP 406. Real browsers work fine, but conservative archive bots and AI crawlers that don't spoof a desktop UA are getting rejected. Whitelist legitimate crawlers.
61 script tags on the homepage
High. Page-builder bloat is the likely root cause of the 30-second LCP, not the 10 images (image count is fine).
Schema data correction is the #1 fix. Performance is #2.
| # | Action | Why it matters | Effort |
|---|---|---|---|
| 1 | Correct schema location data. Replace the postalCode: 33142 + streetAddress: 'Griffin Rd and, SW 90th Ave' with the real business address. Update addressLocality, postalCode, and containsPlace ZIP list to match the actual service area (Cooper City + adjacent Broward ZIPs, not Miami-Dade). | Schema is the highest-trust signal Google uses for location matching. Currently the site is telling Google it's in Hialeah while the body copy says Cooper City. This conflicts the entity graph and likely suppresses local pack eligibility entirely. | 30 min |
| 2 | Fix the 30-second mobile LCP. Diagnose the hero asset — probably a full-page-builder video or background image. Compress to WebP. Generate responsive variants. Add fetchpriority + preload. Audit 61 scripts; deferred/async most. | At 30s LCP, almost no mobile visitor sees your page. This single fix should lift conversion 50-100%. | 8-16 hr |
| 3 | Rewrite the H1. From 'Home' to something like: 'Home & Commercial Cleaning Services in Cooper City, FL — AMT Reliable Cleaning'. | H1 is Google's primary topical signal. Currently empty of meaning. Free ranking lift. | 5 min |
| 4 | Verify schema AggregateRating count vs live GBP. Schema declares 21 reviews. If your live GBP shows a different count, reconcile. | Mismatched counts can trigger a Google manual action that strips review stars from SERPs. | 15 min |
| 5 | Whitelist legitimate crawlers in Mod_Security. Add allow rules for Googlebot, Bingbot, GPTBot, ClaudeBot, PerplexityBot, Google-Extended, etc. | Real Google crawlers should never get 406. AI crawlers either. | 30 min |
| 6 | Add 14 AI-crawler Allow directives + ship llms.txt. Explicit allows in robots.txt. | AI search is a growing query share. | 30 min |
What the live HTML actually says.
Live HTML pulled from amtreliablecleaningservices.com on 2026-06-02 (using a desktop browser UA — Mod_Security blocks default UAs with HTTP 406). Server: Apache + Mod_Security + WordPress + Rank Math SEO.
Stack detected
| CMS | WordPress |
| SEO plugin | Rank Math (schema graph confirmed) |
| Web server | Apache + Mod_Security |
| Crawler issue | Mod_Security returns 406 to default UAs Blocks archive + AI crawlers |
H1 is literally 'Home'
The WordPress theme is rendering the page title from the menu label.
evidence: grep returns: 'Home'
61 script tags on homepage
Highest script count of any site in this audit batch. Strongly correlates with the 30-second LCP.
evidence: grep -ocE '<script' home.html → 61
Mod_Security UA-based blocking
Default curl, default requests, and many automated crawlers get HTTP 406.
evidence: Direct curl test without -A flag: HTTP/2 406 Not Acceptable
Schema data declares wrong city
On-site JSON-LD: postalCode 33142 (Hialeah), streetAddress 'Griffin Rd and, SW 90th Ave'. containsPlace lists 33142, 33153, 33186 (Miami-Dade). Body copy says Cooper City.
evidence: grep on home.html: postalCode + streetAddress + containsPlace
30.4 seconds is far beyond anything normal.
Lighthouse mobile lab data, captured 2026-06-02. Google's Good zone: LCP <2.5s, FCP <1.8s, CLS <0.1, TBT <200ms.
LCP is 12x the Google 'Good' threshold
At 30s LCP on mobile, the site is essentially unusable for first-time visitors. CLS is 0 and TBT is 9ms — so once the page does render, it works fine. The blocking issue is purely how slowly assets load. Almost certainly a giant unoptimized hero asset plus render-blocking page-builder JS.
Schema types are right. Schema data is wrong.
Strong type coverage (LocalBusiness + AggregateRating + Review). But the location data inside the schema does not match the real business location.
Detected types: LocalBusiness, AggregateRating, Review, Offer, GeoCircle, GeoCoordinates, PostalAddress, Rating, Person, City. The type coverage is rare and good.
The data problem: PostalAddress declares postalCode: 33142 (Hialeah, Miami-Dade) and streetAddress: 'Griffin Rd and, SW 90th Ave'. containsPlace lists ZIPs 33142 / 33153 / 33186 (all Miami-Dade). The body copy says Cooper City 19 times. Hialeah and Cooper City are 25+ miles apart in different counties.
Why this matters: Google trusts JSON-LD over body copy for entity location matching. Right now the schema is telling Google the business is in Miami-Dade, suppressing local-pack eligibility for the Broward / Cooper City queries the site is built around.
AggregateRating: schema declares 5.0★ / 21 reviews. Confirm this matches the live GBP count.
Are you findable by ChatGPT, Perplexity, Google AI Overviews?
As of 2026, 22% of all search queries route through an AI surface. Visibility there is now a measurable revenue lever.
robots.txt: AI crawler access
None of 14 AI crawlers named explicitly in robots.txt. Compounded by Mod_Security blocking default UAs — AI crawlers that don't spoof a browser UA hit a 406 wall.
llms.txt: citation hygiene file
/llms.txt returns 406 (Mod_Security blocks the request entirely). Fixing the Mod_Security rule + shipping llms.txt is a combined 45-min fix.
How your business appears in local search.
Multi-platform listings exist on Yelp, Nextdoor, Thumbtack, Yahoo Local, Facebook (@amtreliablecleaning), Instagram (per third-party directories). Phone (754) 227-9395 confirmed in HTML. Business per body copy + Yelp is in Cooper City; on-site schema declares Hialeah ZIP.
The most urgent local-SEO issue is the schema/body conflict above. Until the schema declares the correct city, no other local-SEO work compounds.
Once corrected, the on-site GeoCircle declaring a service-area radius is the right structural choice for a service-area business (SAB) without a storefront.
Opportunity (after schema fix): dedicated landing pages for each major service-area city in Broward (Cooper City, Davie, Pembroke Pines, Weston, Fort Lauderdale).
The order to do this work in.
Ranked by impact divided by effort. Estimates assume a competent WordPress developer.
| # | Action | Effort | Impact |
|---|---|---|---|
| 1 | Correct schema location data (postalCode + streetAddress + containsPlace) | 30 min | Critical |
| 2 | Fix mobile LCP — diagnose hero + audit 61 scripts | 8-16 hr | Extreme |
| 3 | Rewrite H1 | 5 min | High |
| 4 | Verify schema AggregateRating count vs live GBP | 15 min | Risk reduction |
| 5 | Whitelist legitimate crawlers in Mod_Security | 30 min | Medium-high |
| 6 | Add 14 AI-crawler allows + llms.txt | 30 min | Medium |
| 7 | Per-service pages (AirBnB turnover, post-construction, etc.) | 12-20 hr | High |
| 8 | Service-area landing pages for adjacent Broward cities | 16-24 hr | High |