Strong off-site authority. 15-second mobile LCP.
You're losing the visitors who would convert.
joskoservices.com operates from two offices (1727 Benbow Ct, Apopka FL 32703 and 107 Dunbar Ave, Oldsmar FL 34677), serves the I-4 corridor, and shows '20 years' experience plus a 2018 entity registration in the homepage copy. Off-site, Birdeye aggregates 4.5★ across 464 reviews and BBB lists the entity as A+ accredited. The site is under-monetizing that authority because the homepage takes 15 seconds to render on mobile, has no H1 heading, and no LocalBusiness schema linking the on-site signals to the GBP.
Domain: joskoservices.com · Business: General contractor — HVAC, plumbing, electrical, roofing · Service area: Apopka FL (HQ) + Oldsmar FL · Central + Tampa Bay
Read this if nothing else.
Real authority, real reviews, the right WordPress stack. Killed by a 15-second mobile LCP and a missing H1. None of this requires a redesign — it's optimization work.
Mobile LCP is 15.25 seconds
Google's Good zone for LCP is under 2.5s. At 15s, the visitor sees a blank or partial page for 15 seconds before the hero loads. Bounce rate at this LCP is documented at 90%+. Single biggest commercial issue on the site.
No <h1> heading on the homepage
Search engines use H1 as the primary topical signal. Grep on the live HTML returns zero matches. Free ranking weight is being left on the floor on every query that should match "general contractor Apopka" / "HVAC Apopka".
No LocalBusiness / HVACBusiness / RoofingContractor schema
Yoast is emitting a generic Organization graph. None of the industry-specific subtypes are declared. 464 Google reviews don't connect to the site via sameAs. Highest-leverage local-SEO fix.
Zero AI crawlers explicitly allowed
robots.txt does not name GPTBot, ClaudeBot, PerplexityBot, Google-Extended, or any of the other 14 standard AI crawlers. Conservative AI crawlers default to skipping. ChatGPT / Perplexity / Google AI Overviews queries about Apopka HVAC don't reach your site.
99 scripts loading on the homepage
This is the likely root cause of the LCP. Page-builder bloat plus uncontrolled analytics / chat / pixel scripts. Most are deferrable or removable without losing functionality.
Sitemap URL is HTTP, not HTTPS
robots.txt declares Sitemap: http://joskoservices.com/sitemap_index.xml. Yoast config drift. Browsers and crawlers follow the redirect, but this is hygiene worth a 5-minute fix.
Six fixes. None requires a redesign. None requires a new vendor.
| # | Action | Why it matters | Effort |
|---|---|---|---|
| 1 | Fix mobile LCP. Compress hero to WebP, generate 480/800/1200/1600 variants, add srcset + sizes + fetchpriority="high" + a preload tag. Audit the 99 scripts; defer or async non-critical. | At 15s LCP, you are losing every mobile visitor before the page even renders. This single fix typically lifts conversion 30-60% on local service sites. | 4-8 hr |
| 2 | Add a proper <h1> to the homepage. Example: "Central Florida General Contractor — HVAC, Plumbing, Electrical, Roofing". | Without an H1, Google has to infer the page topic from title + headings + body. Adding an H1 is free ranking weight on "HVAC Apopka" and adjacent terms. | 30 min |
| 3 | Add LocalBusiness + HVACBusiness + Plumber + Electrician + RoofingContractor JSON-LD. Include sameAs linking to Google Business Profile, BBB, Facebook. Embed aggregateRating (4.5 / 464). | Unlocks rich results, makes you eligible for AI Overview citation, ties your 464 reviews to your site authority. | 2 hr |
| 4 | Add 14 AI-crawler Allow directives to robots.txt. GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-Web, anthropic-ai, Google-Extended, GoogleOther, PerplexityBot, Applebot-Extended, cohere-ai, meta-externalagent, Amazonbot, DuckDuckBot. | AI search is 22% of query share and growing. Sites without explicit AI-crawler allows are silently excluded from those results. | 15 min |
| 5 | Ship a basic llms.txt file. Title, description, business hours, top 5 service pages, citation guidance for LLMs. | Not a Google ranking lever, but Perplexity and ChatGPT preferentially cite sites that declare an llms.txt. | 30 min |
| 6 | Fix the sitemap URL in robots.txt to HTTPS. Change http:// to https:// in the Yoast block. | Hygiene. No reason to leave it broken. | 5 min |
What the live HTML actually says.
Live HTML pulled from joskoservices.com on 2026-06-02. Server: Apache + PHP 8.1.34 + WordPress + Yoast SEO. Below: what we observed in the rendered DOM.
Stack detected
| CMS | WordPress (Yoast SEO active) |
| Web server | Apache |
| PHP | 8.1.34 Version exposed via X-Powered-By |
| Page builder | Unconfirmed (99 scripts suggest builder bloat) |
| Sitemap | Yoast XML sitemap_index.xml declared as http:// |
No H1 tag on homepage
Grep against fetched HTML returns zero <h1> matches. H1 is Google's strongest single on-page topical signal.
evidence: grep -oE '<h1[^>]*>[^<]*</h1>' home.html → empty
Meta description is short and generic
~120 chars, mentions services + geo but no differentiator. Google rewrites weak meta descriptions in SERPs ~70% of the time, which is itself a soft ranking penalty.
evidence: <meta name="description"> content captured from home.html
99 script tags on the homepage
This is unusually high. Almost certainly includes page-builder scripts, analytics, chat widget, ad pixels, and several render-blocking JS files.
evidence: grep -ocE '<script' home.html → 99
Sitemap reference uses HTTP
robots.txt declares Sitemap: http://joskoservices.com/sitemap_index.xml. The redirect to HTTPS works, but explicit is better.
evidence: robots.txt body
A 15-second LCP is the single biggest issue on this site.
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 6x the Google 'Good' threshold
Google's threshold for Good LCP is 2.5 seconds. At 15.25 seconds, the homepage is in the 'Poor' zone by a factor of six. CLS and TBT are excellent, which means the layout is stable and JS execution is fast — the problem is purely how slowly assets load. This is fixable in a single sprint.
Yoast is emitting schema but it's the wrong type for a contractor.
Detected JSON-LD types on the homepage: BreadcrumbList, EntryPoint, GeoCoordinates, ImageObject, ListItem, OpeningHoursSpecification, PostalAddress, PropertyValueSpecification, ReadAction, SearchAction. Missing: LocalBusiness, HVACBusiness, Plumber, Electrician, RoofingContractor, AggregateRating, Review.
Yoast is correctly emitting an Organization-style graph with GeoCoordinates and OpeningHoursSpecification — but none of it declares Josko as a local service provider at the schema level. Google's healthcare and contractor entity matching depends on explicit LocalBusiness or industry-specific subtype declarations.
What's missing: HVACBusiness, Plumber, Electrician, RoofingContractor with sameAs pointing to GBP / BBB / Facebook, and AggregateRating wrapping the 4.5 / 464 reviews.
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 the 14 standard AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, etc.) are explicitly allowed. Conservative crawlers default to skipping when access is unclear. Result: queries like 'HVAC contractor Apopka' through ChatGPT or Perplexity don't reach your site.
llms.txt: citation hygiene file
/llms.txt returns 404. Not a Google ranking lever, but Perplexity and ChatGPT preferentially read this file for citation context. Easy win.
How your business appears in local search.
Two offices listed in homepage HTML: 1727 Benbow Ct, Apopka FL 32703 + 107 Dunbar Ave, Oldsmar FL 34677. Phone (407) 807-0337 visible. 4.5★ / 464 reviews aggregated by Birdeye (third-party source, not on-site).
Two-office structure (Apopka HQ + Oldsmar / Tampa Bay) is a significant local-SEO asset that the current schema does not capture. Each office should be its own LocalBusiness / HVACBusiness entity with its own NAP, hours, and ideally its own location landing page.
The Birdeye-aggregated 4.5★ / 464 reviews and the BBB A+ accreditation are claims sourced from third-party directories (Birdeye, BBB). They are not currently expressed in on-site schema. Adding aggregateRating + sameAs links to GBP / BBB / Facebook is a 1-hour fix that materially affects rich-result eligibility.
The order to do this work in.
Ranked by impact divided by effort. Estimates assume a competent WordPress developer.
| # | Action | Effort | Impact |
|---|---|---|---|
| 1 | Fix mobile LCP (hero image optimization + script audit) | 4-8 hr | Very high |
| 2 | Add a proper <h1> to the homepage | 30 min | High |
| 3 | Add LocalBusiness + industry-specific subtype schema | 2 hr | Very high |
| 4 | Add 14 AI-crawler allows to robots.txt + ship llms.txt | 45 min | Medium-high |
| 5 | Fix sitemap URL to HTTPS | 5 min | Low |
| 6 | Per-service JSON-LD on HVAC / plumbing / electrical / roofing pages | 4-6 hr | Medium-high |
| 7 | Audit and prune 99-script load | 2-4 hr | Medium |
| 8 | Service-area landing pages for I-4 corridor cities | 20-40 hr | High (long-term) |