Skip to main content
Journal

I audited 25 Greenville business websites. Here's what I found.

· 8 min read · By Max Muncy

I run a web design + local SEO studio out of Greenville. Most of my prospecting work is cold-walking the same business types — dentists, plumbers, contractors, restaurants, family law offices — and the conversations all start the same way: “How would I know if my website is actually working?”

So I built a tool that grades it. Twenty-five Eastern NC small-business websites pulled from my own lead list, run through the same audit I’ll run on yours if you ask. Mobile fit. Load speed. Schema markup. Whether ChatGPT, Perplexity, or Google’s AI Overview names them when you ask about their category in their town.

This is the first batch. I’ll run another twenty-five in a month. The numbers don’t lie about where the field is.

The headline finding

Zero of the twenty-five businesses appeared in Google’s AI Overview when I asked the obvious “best [their category] in Greenville NC” question. Not one.

That’s not “most of them missed it” — that’s none of them. The AI Overview either named other businesses (national chains, directories, or out-of-town competitors), or it didn’t trigger at all because no source on the open web has written about Greenville’s [dentists / restaurants / plumbers] in a way an LLM can extract.

If your customers are starting their searches in ChatGPT or Perplexity — and ~13% of Americans now do, climbing — you are invisible. This is the gap that every conversation in Greenville is going to be about over the next twenty-four months.

The full numbers

Twenty-five sites, sampled across thirteen verticals from my prospect list. Three failed to load entirely (one SSL cert problem, two timeouts). Of the twenty-two that did:

SignalResult
Loaded in under 3 seconds20% (avg load: 6.7s)
Has any schema markup76%
Has LocalBusiness schema0%
Has FAQPage schema0%
Has an H1 tag56%
Phone number visible on the page76%
Street address visible on the page64%
Mobile viewport meta tag88%
Mobile content overflows the viewport8%
Uses HTTPS100%
Cited in AI Overview for category0%
In organic top-10 for category0%

(All numbers anonymized at the row level — I’m publishing aggregate stats, not naming and shaming. Send me a Loom request via the contact page if you want to know whether your business is in the sample and what specifically broke.)

What the data says, in order

1. The schema gap is the biggest one.

Three-quarters of the audited sites have some schema markup — almost all of it the default Yoast/WordPress output: WebPage, WebSite, BreadcrumbList, occasionally Organization. That’s table stakes; it doesn’t move the needle.

What moves the needle for a local business is LocalBusiness schema (or its specific subtype: Dentist, Plumber, Restaurant, LegalService, etc.). It declares the business as a discrete entity to Google and to the LLMs — this is a real place with an address and hours and a category. Zero of the twenty-five sites declare it.

The fix is twenty lines of JSON-LD in the <head> of every page. It is the single highest-leverage, lowest-effort change a local-business site can make, and approximately nobody in Greenville has shipped it.

2. Page speed is genuinely bad.

Average load time across the twenty-two sites that responded: 6.7 seconds. Twenty percent loaded in under three seconds. Eighty percent did not.

Google’s Core Web Vitals are now a documented ranking factor for local search, and they’re a real factor in AI-search citation too — LLMs prefer to recommend pages they can crawl quickly and reliably. Sites that take eight seconds to first paint are being skipped.

Most of the slow sites are running WordPress with a stack of plugins, an oversized hero image, and no caching layer. Each of those is fixable in an afternoon. None of them are getting fixed because nobody’s watching.

3. The “is this a real business” basics are missing more often than I expected.

Thirty-six percent of the sites don’t show a street address on the homepage. Twenty-four percent don’t show a phone number. Forty-four percent don’t have an H1 tag.

These aren’t SEO tricks — they’re trust signals. A customer landing on your site wants to know in five seconds: who are you, where are you, can I call you. AI engines want the same things, in the same five seconds, and they extract them from the same DOM elements humans look at.

A surprising number of sites pass the eye test (a designer made them, they look modern) but fail the machine-readability test. Bots and AI crawlers parse text, not vibes.

4. Mobile is mostly fine. AI-search visibility is not.

The plain-old-mobile basics are largely solved — 88% have a viewport meta tag, only 8% have overflow at 390px width. Mobile-first design has filtered down to even small WordPress shops over the last five years.

The new gap is AI search. None of the twenty-five appeared as cited sources when I asked Google’s AI Overview about their category. The AI Overview itself only triggered on one of the thirteen vertical queries (a healthcare one) — the rest didn’t return AI answers at all. Two reads of that:

  • Pessimistic: AI search is still finding its footing in local categories, so the lift you’d get from optimizing for it today is small.
  • Optimistic: the field is wide open. Every local-business category that triggers an AI Overview in 2026 will probably trigger one in 2027. The first business in each category that’s written about, schema-marked, and entity-connected wins the citation.

I’m in the optimistic camp. The cost of being first is one or two months of disciplined work; the cost of being fifth is two years of catch-up while incumbents stack reviews and citations.

What “good” looks like, against this baseline

I think about a local-business website on five layers, in priority order:

  1. Loads in under two seconds. Single biggest user trust signal and the only ranking signal you can buy with pure engineering work.
  2. Says who you are, what you do, and where you are — in the first 400 pixels and in machine-readable form. H1, phone, address, hours, primary service. Visible to a human. Marked up in schema for a machine.
  3. LocalBusiness (or subtype) schema, with sameAs references to GBP and Wikidata. This is the entity foothold AI engines need to disambiguate you from every other business with a similar name.
  4. One indexable page per primary commercial intent. Not five services crammed onto a single /services page. Five separate pages, each ranking for its own query.
  5. Cited somewhere on the open web for what you do. GBP doesn’t count as “the open web.” Reddit, YouTube, local press, Chamber listings, vertical directories — these are where LLMs source their answers from.

If you’re a local business owner reading this: the four most likely places your site is broken are (1), (3), (4), and (5). Mobile fit and basic SEO you probably already have. Schema, page speed, page structure, and off-site presence you probably don’t.

Methodology

For the curious. The audit script lives at tools/audit-25-greenville.py in the Mainsail repo (open).

  • 25 sites sampled from my prospect master CSV, biased to vertical diversity (top fit-score per vertical, round-robin).
  • Each site rendered via Playwright at 390×800 (iPhone viewport), DOM parsed for schema blocks, viewport meta, H1, phone/address regexes.
  • “Cited in AI Overview” = the business’s domain or name appears in either (a) Google AI Overview source references or (b) organic top-10 for "best [vertical] in Greenville NC". Queried via DataForSEO SERP advanced.
  • “Slow load” threshold = 3 seconds DOMContentLoaded + network-idle.
  • Schema detection = parse every <script type="application/ld+json"> block, extract @type values across @graph arrays.

Raw data + screenshots (anonymized — heavy gaussian blur applied to logos and identifying text) sit in drafts/mainsail-research-2026-05-20/audit-25/ locally. I’m not publishing the screenshot grid yet — I want to give the businesses in the sample the courtesy of getting a Loom site review before I post recognizable cropped images, even blurred.

What’s next

I’ll re-run this audit at the 50-site, 100-site, and 250-site marks. Same methodology, same metrics, comparable deltas. The point isn’t a single dataset — the point is a growing one, because the only way to know if Greenville’s small-business web presence is getting better or worse is to measure it the same way over time.

If you’re running one of these businesses and you want to know exactly what your site looks like in this scoring, send me your URL and I’ll email you a five-minute Loom audit. No call, no pitch, no obligation. I’m doing them anyway — you might as well see yours.

And if you’re a developer or marketer in the area and want to compare notes on this kind of audit work — I want to know what you’re measuring. The category is moving fast enough that “audit methodology” itself deserves to be a discipline, not a single tool. Mainsail’s open-source repo is where mine lives.

Book Email Call