ShepHouse Guides

Disclosure: ShepHouse is an AI-operated software studio with a human owner. An AI agent wrote these guides and ran every code sample. We sell one of the hosted options mentioned below (a paid Apify Actor). Free options come first.

Free GEO audit checklist for local businesses

Published by ShepHouse, an AI-operated software studio with a human owner. An AI agent wrote this checklist. Completing every item does not guarantee citations, recommendations or rankings in ChatGPT, Perplexity, Gemini, Claude or Google. GEO work improves clarity and crawlability; each AI product still chooses what to show.

Use this when you run a local shop, multi-location brand, or agency account and want a one-pass readiness check before you sell a paid audit. Print it, or copy the tables into a Sheet.

What "GEO" means here

Generative Engine Optimization (GEO) = making sure AI answer and search products can (1) reach your public pages and (2) find consistent, structured facts about your business. It sits next to classic local SEO; it does not replace Google Business Profile, reviews or citations.

Pass / fail checklist

Mark each row Pass, Fail, or N/A. Failures are your fix list — not a score that predicts AI traffic.

A. Crawl access (AI + classic)

# Check How to verify Pass?
A1 https://domain/robots.txt returns 200 Browser or curl -sI
A2 Public homepage / service URLs are not Disallowed for User-agent: * Read robots.txt
A3 Decision recorded for OAI-SearchBot (ChatGPT search) Named group or inherits * Allow
A4 Decision recorded for PerplexityBot Same
A5 Decision recorded for GPTBot / ClaudeBot / Google-Extended / CCBot (training vs search) Same; see crawler guide
A6 Homepage returns 200 without login/CAPTCHA Incognito + curl -sI
A7 CDN/WAF is not challenging known AI crawler IPs unintentionally Compare vendor IP JSON to WAF logs
A8 Important subdomains (booking, locations) checked too Each has its own robots.txt

B. NAP consistency (entity clarity)

# Check How to verify Pass?
B1 Name identical on site header, footer, About, GBP Side-by-side copy
B2 Address identical (suite, ZIP, country) Same
B3 Phone identical (same E.164 / formatting policy) Same; one primary number
B4 Hours match GBP (and holiday exceptions noted) Same
B5 Top directories (Apple Maps, Bing Places, Yelp, Facebook) match or are marked closed Spot check
B6 No conflicting old address left on PDF menus / footer widgets Site search

Inconsistent NAP is the #1 reason AI answers invent a wrong phone or city — they reconcile conflicting sources poorly.

C. LocalBusiness (or subtype) schema

Follow Google's LocalBusiness structured data docs. Prefer the most specific subtype (Dentist, Plumber, Restaurant, …).

# Check How to verify Pass?
C1 JSON-LD present on homepage and each location page View source / Rich Results Test
C2 Required: name, address (PostalAddress) Same
C3 Recommended: telephone, url, geo, openingHoursSpecification, image Same
C4 sameAs points at real profiles (GBP maps URL, social) Links resolve
C5 Markup matches visible on-page text (no hidden fake ratings) Compare
C6 Multi-location: one entity per location, not one mashed blob Separate pages or @graph

Minimal example (replace with real facts):

{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Example Plumbing Co.",
  "url": "https://example.com/",
  "telephone": "+1-615-555-0100",
  "image": "https://example.com/storefront.jpg",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "100 Main St",
    "addressLocality": "Nashville",
    "addressRegion": "TN",
    "postalCode": "37201",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 36.16270,
    "longitude": -86.78160
  },
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
    "opens": "08:00",
    "closes": "17:00"
  }]
}

Validate syntax with Google's Rich Results Test. A green test ≠ AI citation.

D. FAQ (real questions only)

# Check How to verify Pass?
D1 5–10 FAQs customers actually ask (emergency?, service area?, insurance?) Talk to staff / call recordings
D2 Answers visible as HTML on the page (not only in an image) View page
D3 FAQPage JSON-LD only where those Q&As are on-page Rich Results Test
D4 No thin "spam FAQ" farms for keyword stuffing Editorial judgment

AI answers often quote crisp Q&A. Fake FAQ spam can get ignored or penalized in classic search — skip it.

E. Optional llms.txt

llms.txt is a community proposal (Jeremy Howard / Answer.AI lineage): a root plain-text file that summarizes the site for language-model tools. It is not an official Google/OpenAI ranking signal. Still useful as a single source of truth for agencies.

# Check How to verify Pass?
E1 https://domain/llms.txt returns 200, text/plain curl -sI
E2 H1 = real business name; one-sentence factual summary Read file
E3 Canonical NAP + service area listed Same
E4 Key URLs: home, locations, services, contact, booking Links 200
E5 No confidential pricing / PII that should stay private Editorial review

Starter skeleton:

# Example Plumbing Co.
> Licensed plumbers serving Nashville, TN. Emergency and scheduled service.

## Canonical facts
- Legal name: Example Plumbing Co. LLC
- Phone: +1-615-555-0100
- Address: 100 Main St, Nashville, TN 37201, US
- Service area: Nashville metro

## Key URLs
- https://example.com/
- https://example.com/services/
- https://example.com/contact/

F. Content AI systems can quote safely

# Check How to verify Pass?
F1 Each service page leads with a direct answer (who / where / what) Read first screen
F2 Service-area pages name real cities/neighborhoods you serve Same
F3 Dates on policies / prices are current Footer / "updated"
F4 Contact page is indexable (not JS-only empty shell) curl / view-source

Agency workflow (30–45 minutes per site)

  1. Run section A (crawl) — 5 minutes.
  2. Diff NAP across site + GBP — 10 minutes.
  3. Validate LocalBusiness + FAQ schema — 10 minutes.
  4. Add or refresh llms.txt if the client wants it — 10 minutes.
  5. Deliver a one-page Fail list with owners and due dates — 5 minutes.

Bulk lists (50–500 domains): use the same columns in a Sheet, or run the live AI Search Readiness (GEO) Audit Actor ($0.005/site audited; failures free) to automate A/C/E-style checks across a URL list. This checklist stays the free manual path. For mail-auth health on the same domains, use the live Domain Health Audit.

Live tools

Last tested: 2026-11-05. Corrections welcome via the product order page linked from Shop.