← Back to Blog

The Mega Analyzer now reads handyman and home-services sites: what a local trade has to ship before 'near me' can find it

The Mega Analyzer now reads handyman and home-services sites: what a local trade has to ship before 'near me' can find it

I reviewed a brand-new handyman site recently. Clean build, fast, good security headers, decent content across a home page, a services page, and a page for each trade. In a browser it looked ready to launch. Then I looked at it the way Google and an AI answer engine actually look at it, and almost none of it was there.

That gap, between a site that looks finished to its owner and one that is legible to the machines that bring a local trade its customers, is now its own check in the Mega Analyzer. When it detects a handyman / home-repair / home-services business (trade keywords like plumbing, electrical, painting, drywall, carpentry; "licensed, bonded, insured"; "free quote"; a service area; or LocalBusiness / HomeAndConstructionBusiness schema), it runs a local-service readiness pass. Here is what it checks and why each one decides whether the phone rings.

The trap that beats everything else: a site that is invisible without JavaScript

The site I reviewed was a client-rendered single-page app. The raw HTML the server sent was a near-empty shell, about a hundred words; the real content, around 4,000 words across the pages, only appeared after the browser ran JavaScript. To a person, fine. To a crawler that does not run JS, to a link preview when someone texts your site to a friend, and to many AI answer engines, every page was blank.

For a "handyman near me" business whose entire discovery is search, the local map pack, and AI answers, that is the single most damaging thing that can be wrong, and it is invisible to the owner because it looks perfect in their browser. So the check now compares the raw HTML to the rendered content and flags the SPA-invisibility trap directly. The fix is to prerender or server-render the pages (Netlify prerendering, a static pre-render at build time, or framework SSR) so the content and the structured data ship in the initial HTML. Everything else on this list is wasted until the machines can read the page.

The LocalBusiness node is how a trade gets placed on the map

Google's local pack and AI answers identify and rank a local business primarily from three things: a LocalBusiness node in your schema, a Google Business Profile, and consistent name/address/phone across the web. The site I reviewed had zero LocalBusiness schema, while nine of the twelve competitors I benchmarked shipped it.

The check looks for the full local entity: a HomeAndConstructionBusiness / LocalBusiness node with a telephone (and a matching tel: click-to-call link), a PostalAddress or, for a service-area business with no storefront, an areaServed list of the cities you cover, geo coordinates, openingHoursSpecification, and a sameAs that points at your Google Business Profile and socials. A service-area handyman who skips areaServed is invisible to every surrounding-city search.

It also rewards a near-open lane: a Service node per trade (serviceType handyman, plumbing, electrical, painting, drywall, carpentry) with its own areaServed. Almost no competitor ships this, and it is exactly how an AI answer maps "who does drywall repair in my town" to a specific business.

Google Business Profile is the lead source, not a nice-to-have

For a handyman, the Google Business Profile is the single biggest source of calls and the engine that collects reviews and powers the map pack. The check flags the absence of any Google Maps or Business Profile link, because for this trade a website without a Business Profile behind it is a brochure, not a lead machine. Create it, verify it, fill it completely with services, service area, hours, real photos of your work, and Q&A, and make the name, address, and phone match the site exactly.

The placeholder-phone trap

Here is a small check that catches a surprisingly common, embarrassing problem. Template and demo sites ship with fake "555-01xx" phone numbers, which are reserved for directory and fictional use. If one of those is still on the live site, the business is advertising a number that cannot receive calls, and it signals "unfinished" to anyone who notices. The check flags any 555-01xx number so it gets replaced with the real one everywhere it appears, visible text, schema, and Business Profile, all identical.

Reviews, handled honestly

Reviews are the top trust and ranking signal for a local trade. The check flags two situations: a site that claims "5-star" or "highly rated" but has no machine-readable AggregateRating (the stars are invisible to search), and a site with no review program at all. The fix order matters: drive real reviews through the Google Business Profile first, then emit AggregateRating with the real count once they exist. It will not tell you to fabricate a rating, because the FTC's consumer-review rule (16 CFR Part 465) makes fake or incentivized reviews unlawful, and the machine-readable number carries the same liability as the visible claim.

The licensing guardrail

This is the one that protects the owner. The check notices when a site advertises "licensed, bonded, and insured" alongside plumbing, electrical, or HVAC work. In most states a general handyman license does not cover those trades; they are separately state-licensed, and advertising them without the trade license is both an enforcement risk and a liability risk. The finding is not a verdict, it is a prompt: confirm the actual license held, name the license type or number where the city requires it, and either hold the trade license, limit those pages to clearly minor non-licensed scope, or disclaim and refer. The same goes for "15 years" and "5-star": every trust claim has to be substantiable before it goes live.

The quieter ones

The check also covers Person schema for the owner (for an owner-operated trade, the named person is the brand and a real photo plus a Person node is a top conversion driver), FAQPage on the service pages (the surface AI Overviews lift for "how much does a handyman cost / do you do small jobs / are you licensed"), Open Graph tags so a shared link renders properly instead of as a bare URL (referrals are how handymen grow), and a sitemap signal, which matters most right after a domain move.

How to use it

Run your site through the Mega Analyzer. If it detects a home-services business you will get the handyman readiness card with a copy-ready fix prompt that walks through the fixes in order, crawlability first, then the local business node, then the Business Profile. Validate the schema with the Schema Validator.

If you are a tradesperson building your own site, none of this needs an agency. It is a prerender setting, a block of JSON-LD, a free Google Business Profile, and honest copy. That self-reliant, do-it-with-free-tools approach is the whole thesis of my book The $20 Dollar Agency.

Fact-check notes and sources

Related reading

This post is informational, not legal advice. Trade-licensing and advertising rules vary by state and municipality; confirm your local rules before publishing trust claims. Any business reviewed was either my own, a site I was given permission to use, or anonymized as "a site I was asked to review."

← Back to Blog

Accessibility Options

Text Size
High Contrast
Reduce Motion
Reading Guide
Link Highlighting
Accessibility Statement

J.A. Watte is committed to ensuring digital accessibility for people with disabilities. This site conforms to WCAG 2.1 and 2.2 Level AA guidelines.

Measures Taken

  • Semantic HTML with proper heading hierarchy
  • ARIA labels and roles for interactive components
  • Color contrast ratios meeting WCAG AA (4.5:1)
  • Full keyboard navigation support
  • Skip navigation link
  • Visible focus indicators (3:1 contrast)
  • 44px minimum touch/click targets
  • Dark/light theme with system preference detection
  • Responsive design for all devices
  • Reduced motion support (CSS + toggle)
  • Text size customization (14px–20px)
  • Print stylesheet

Feedback

Contact: jwatte.com/contact

Full Accessibility StatementPrivacy Policy

Last updated: April 2026