# GEO / AEO Audit — AI Visibility of shop.usaclean.com

**July 2026 · audited 2026-07-08 · styled version: [geo-aeo-audit.html](geo-aeo-audit.html) · review deck: [reviews/geo-aeo-audit.html](../reviews/geo-aeo-audit.html) · executive summary: [geo-aeo-executive-summary.pdf](geo-aeo-executive-summary.pdf)**

How the store shows up — or doesn't — in ChatGPT, Claude, Perplexity, Gemini, and Google AI Overviews. A hands-on audit of the live site, plus an assessment of the June 2026 SEO playbook and the July 2026 GEO/AEO addendum it responds to.

---

## 01 · TL;DR

**shop.usaclean.com is currently invisible to AI assistants — and the cause is a switch, not a strategy problem.** Cloudflare returns HTTP 403 to AI crawlers at the network edge, before robots.txt is even consulted. ChatGPT, Claude, and Perplexity cannot retrieve or cite any page on the store. Everything else this audit found is ordinary, well-understood content work — most of it already scoped by the existing SEO playbook.

**The decision on the table: approve Stage 0 ("Turn AI visibility on") this week.** It is hours of configuration work in the Cloudflare dashboard and robots.txt, and nothing else in this audit matters until it lands. A client go-ahead on Stage 0 gets the next **PD-NNN** id in the [decision log](decisions.md).

### Scorecard

| Layer | What it covers | Grade | Headline finding | Fixed by |
|---|---|---|---|---|
| **1. Crawler access** | Can AI engines fetch pages at all? | **Blocked** | Cloudflare 403s AI bots at the edge; robots.txt says two contradictory things | Stage 0 |
| **2. Structured data** | Can machines parse what a page means? | **B−** | Product pages are strong (Product + Offer + Breadcrumb); guides and About have zero schema | Stage 1 |
| **3. Extractable content** | Is there a quotable, answer-shaped fact to lift? | **C** | Content hub exists but isn't answer-first; credibility stats aren't in crawlable HTML | Stage 1 |
| **4. Measurement** | Would anyone know if any of this worked? | **Absent** | No AI-referral tracking, no citation monitoring, no re-check cadence | Stage 2 |

---

## 02 · What GEO/AEO is — and why it matters in July 2026

**GEO (Generative Engine Optimization)** and **AEO (Answer Engine Optimization)** are the practice of making a site visible, comprehensible, and quotable to AI answer engines — ChatGPT, Claude, Perplexity, Gemini, and Google's AI Overviews. Where classic SEO earns a ranked blue link, GEO/AEO earns a *citation inside the answer* — "USA-CLEAN sells this squeegee blade, ships same day" — at the moment a facilities manager asks an assistant what to buy.

Roughly **80% of GEO/AEO is executing classic SEO well**: crawlable pages, clear structure, genuinely useful content. Independent analyses consistently find that the large majority of URLs cited in AI answers already rank in the traditional top 10 for the same query. The remaining 20% is genuinely new, and falls into four buckets — which are exactly the four layers this audit graded:

1. **Crawler access.** A new population of bots with their own user agents and their own robots.txt conventions — and, critically, a new class of *accidental blocking*: CDN and security products (Cloudflare in particular) now ship "block AI bots" defaults that override a site's stated policy silently. Industry measurement puts accidental AI-crawler blocking at roughly 27–30% of B2B/ecommerce sites.
2. **Three bot classes that deserve different policies.** *Training crawlers* (GPTBot-as-trainer, CCBot, Bytespider) collect data to train future models — blocking them is a legitimate IP-policy choice. *Retrieval/search indexers* (OAI-SearchBot, PerplexityBot, ClaudeBot) build the answer-engine indexes that produce citations and referral traffic — blocking them is invisibility. *User-triggered fetchers* (ChatGPT-User, Claude-Web) act on behalf of a live human asking about your site right now. Conflating the three is the most common GEO policy error.
3. **Entity clarity.** AI systems extract facts, not pages. A page whose first sentence *is* the answer ("The Tennant T7 uses a 32-inch squeegee blade, part 1234") gets quoted; a page that opens with brand framing does not.
4. **A new measurement surface.** Rank trackers and Google Search Console don't capture AI referral sessions or citation rate. GA4 added a native "AI Assistant" channel grouping in May 2026; citation monitoring requires deliberately running a panel of buyer-intent prompts on a schedule.

**Why now:** AI referral traffic is still small — well under 2% of sessions for most sites — but it is the fastest-growing acquisition channel measured, with year-over-year growth around 10× while organic search grows single digits. The honest framing is *cheap insurance on a compounding channel*, not a promised conversion lift (the conversion-quality evidence is genuinely mixed — see §11).

---

## 03 · Method & evidence

All tests were run externally on **2026-07-08** against the live site, with no access to Google Search Console, GA4, server logs, or the Cloudflare dashboard. What was tested:

- **User-agent matrix:** identical requests to `https://shop.usaclean.com/` with four user-agent strings — a standard Chrome browser UA, GPTBot, ClaudeBot, and PerplexityBot — recording HTTP status codes.
- **Policy files:** full capture of `robots.txt`; probe for `llms.txt`; sitemap index enumeration (`xmlsitemap.php`).
- **Structured-data extraction:** JSON-LD `@type` inventory on the homepage, a representative product page (`/Battery-tray-154-2603/`), a brand/category page (`/parts-and-supplies/tennant/`), a content-hub guide (`/floor-pad-selection-guide/`), and the About page.
- **On-page signals:** `<title>`, meta description, canonical, H1 on the same pages.
- **Redirect behavior:** `/home/` (the June playbook's duplicate-homepage finding) and the brand URL paths (`/tennant/` vs `/parts-and-supplies/tennant/`).

**Limits worth stating:** the user-agent tests were spoofed UAs from a non-bot IP address. A WAF that verifies bot identity by IP range could in principle treat genuine crawler traffic differently. But a 403 on UA string alone is exactly how Cloudflare's AI-bot blocking behaves, and the robots.txt corroborates a deliberate-by-default block — so the finding stands with high confidence. Confirming from inside the Cloudflare dashboard is itself a Stage 0 action item.

---

## 04 · Layer 1 — AI crawler access · **BLOCKED**

### The 403 test

Same URL, four user agents:

| User agent | Result |
|---|---|
| Chrome (browser) | **200 OK** |
| GPTBot (OpenAI) | **403 Forbidden** |
| ClaudeBot (Anthropic) | **403 Forbidden** |
| PerplexityBot | **403 Forbidden** |

Cloudflare blocks AI crawlers at the network edge — the request never reaches the site, and robots.txt never enters the picture.

### robots.txt argues with itself

The file contains two contradictory policies:

```
# BEGIN Cloudflare Managed content
User-agent: *
Content-Signal: search=yes,ai-train=no,use=reference
Allow: /

User-agent: ClaudeBot
Disallow: /
User-agent: GPTBot
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Google-Extended
Disallow: /
# …also Amazonbot, Applebot-Extended, Bytespider, meta-externalagent
# END Cloudflare Managed Content

# — then, further down, a second (origin) policy —
User-agent: OAI-SearchBot
User-agent: PerplexityBot
User-agent: ChatGPT-User
User-agent: ClaudeBot
User-agent: anthropic-ai
# …~40 AI user agents listed together
Crawl-delay: 10
Disallow: /cart.php        # checkout paths only — otherwise ALLOWED
```

The **Cloudflare-managed block** (injected by Cloudflare's "manage AI bots" feature) fully disallows the major AI training *and* retrieval crawlers. The **origin block** — evidently a deliberate, hand-maintained policy — welcomes the same bots with a polite crawl-delay and standard checkout exclusions. The retrieval crawlers that power ChatGPT search and Perplexity citations (OAI-SearchBot, PerplexityBot) are *allowed on paper and 403'd in practice*.

Two consequences worth separating:

- **Retrieval invisibility (the emergency):** ChatGPT, Claude, and Perplexity cannot fetch, index, or cite any page. When a buyer asks any of them where to get a Tennant part, USA-CLEAN structurally cannot be the answer.
- **Gemini exclusion (a policy decision made by accident):** `Google-Extended` is disallowed, which removes the site from Gemini's grounding corpus. Google AI Overviews are *unaffected* — they draw on the standard Googlebot index — which is why AI Overviews is the only AI surface where the store is currently visible.

### llms.txt

`https://shop.usaclean.com/llms.txt` returns 404. For calibration: Ahrefs' May 2026 analysis of 137,000 domains found ~97% of llms.txt files receive zero AI-bot requests, and Google has said its systems ignore them. Ship it as a checkbox (it costs an afternoon), not as a strategy.

---

## 05 · Layer 2 — Structured data · **B−**

The schema picture is better than the June playbook assumed — several of its recommendations have been executed since:

**What's good:**

- **Product pages** carry `Product` + `Offer` (price, `InStock` availability) + `BreadcrumbList` JSON-LD. This is the highest-value schema on the site and it's done.
- **Homepage** carries `Organization`, `WebSite` + `SearchAction`, and `Store` (with address) — the core entity block AI systems use to understand who the business is.

**What's missing:**

- **Guide pages have zero structured data.** `/floor-pad-selection-guide/` — exactly the content AI engines quote for advice queries — has no `Article`, no `author`, no dates, no `FAQPage`. Its `<title>` is bare ("Floor Pad Selection Guide", no brand).
- **Category pages** carry only `BreadcrumbList`. No `FAQPage` (none have Q&A content yet — see Layer 3), no `CollectionPage`.
- **The About page has no schema at all** — no `AboutPage`, no `Organization` reinforcement.
- **No `AggregateRating`** — correctly absent (product reviews haven't launched; playbook Short Term 4 is still open). Add it when reviews exist, not before.

One nuance the addendum gets right and is worth repeating to the client: Google's own May 2026 guidance says schema markup drives *rich-result eligibility*, not AI Overview citation. Schema helps AI systems parse meaning confidently — especially prices, availability, and authorship — but it is not a GEO silver bullet and shouldn't be sold as one.

---

## 06 · Layer 3 — Extractable content · **C**

AI engines lift answer-shaped facts. The site's content gives them surprisingly little to lift:

- **PDP meta descriptions are raw part-number dumps.** The audited page's description is literally `154-2603 TRAY, BATTERY`. (Playbook Short Term 1 — not yet executed.)
- **The homepage `<title>` is still just "USA-CLEAN"** — four characters, no category terms. (Playbook Quick Hit 3 — not executed, though the H1 *was* fixed to "The Nation's Largest Selection of Cleaning Equipment Parts".)
- **The credibility stats are invisible.** The "600 technicians / 40 years" claims — USA-CLEAN's strongest trust differentiator, and exactly what an AI engine wants when deciding whether to recommend a vendor — are not present in extractable HTML text on the homepage or About page.
- **A content hub partially exists** — battery guides, a floor-pad selection guide, troubleshooting guides are in the pages sitemap — but none of it is extraction-ready: no schema (§05), no bylines, no dates, and copy that isn't answer-first.
- **Fixed since June, worth crediting:** the brand-path duplication is resolved (`/tennant/` 301s to `/parts-and-supplies/tennant/` — the direction the addendum argued should be checked for equity, rather than the playbook's shorter-URL preference). The duplicate homepage is gone, though `/home/` now returns **404 rather than a 301** — the duplication is killed but any residual link equity is being dropped instead of consolidated.

---

## 07 · Layer 4 — Measurement · **Absent**

Nothing measures whether any of this works, or would warn if it regressed:

- **No AI-referral segmentation.** GA4 has offered a native "AI Assistant" channel grouping (ChatGPT, Gemini, Claude) since May 2026; Perplexity needs one manual channel definition. Every week this isn't configured is baseline data lost.
- **No citation monitoring.** Rank trackers answer "where do we sit in blue links," not "does ChatGPT recommend USA-CLEAN when a technician asks about a Tennant T7 squeegee blade." That requires a fixed panel of buyer-intent prompts run across the major engines on a schedule.
- **No re-check cadence.** The Cloudflare block demonstrates why this matters: bot lists and CDN defaults shift under your feet. A quarterly crawler-access check (the §04 user-agent matrix takes ten minutes) keeps a one-time fix fixed.

---

## 08 · Assessment of the June playbook & July addendum

**Are the recommendations solid? Yes — with the addendum's caveats confirmed.**

**The June 2026 playbook** is a sound technical SEO program: correctly sequenced (indexation → content → authority), built on site-specific findings rather than template advice, with reachable backlink targets and a correctly-framed content-hub moat. Its weaknesses are the ones the addendum identified: overconfident timelines ("within weeks"), a canonical-direction call made on URL length rather than link equity, schema implicitly oversold as an AI-visibility play, no AI-crawler access check anywhere in its quick hits, and a measurement stack that only sees Google organic.

**The July addendum** (the GEO/AEO review) holds up well against this audit. Its ~80/20 framing — most AI-search value comes from executing the existing playbook; the genuinely-new work is crawler access, entity clarity, and measurement — matches what this audit found on the ground. Most notably, **its single most concrete warning is empirically confirmed live**: it flagged Cloudflare's "block AI bots" default silently overriding origin robots.txt as the top-priority check, and that is precisely the site's current state (§04). Its skeptical calibration on llms.txt (~97% unread) and its honest, two-sided read of the conversion evidence are the right way to present this to a client.

**State of play — executed since the June playbook:**

| Playbook item | Status July 2026 |
|---|---|
| PDP structured data (Product/Offer/Breadcrumb) | ✅ Done |
| Brand-path canonical consolidation | ✅ Done (to `/parts-and-supplies/…`, with 301s) |
| Homepage H1 | ✅ Done |
| Duplicate homepage `/home/` | ⚠️ Removed, but 404 instead of 301 |
| Homepage title tag | ❌ Still "USA-CLEAN" |
| PDP meta descriptions | ❌ Still part-number dumps |
| Product reviews / AggregateRating | ❌ Not launched |
| Category copy + FAQ blocks | ⚠️ Copy exists on major brand pages; no FAQ |
| AI crawler access (addendum quick hit) | ❌ **Blocked — the headline gap** |

---

## 09 · The full recommendation set

Impact ratings are for AI visibility specifically; several items double as classic SEO fixes (marked †).

| # | Recommendation | Layer | Impact | Effort | Stage | Where it lands |
|---|---|---|---|---|---|---|
| R1 | Unblock AI **retrieval** crawlers at the Cloudflare edge | 1 | **Critical** | Hours | 0 | Cloudflare dashboard |
| R2 | Reconcile robots.txt into one deliberate policy (retrieval ≠ training) | 1 | High | Hours | 0 | Cloudflare + BigCommerce |
| R3 | Decide `Google-Extended` explicitly (it gates Gemini grounding) | 1 | Medium | Minutes | 0 | robots.txt |
| R4 | Ship `llms.txt` — budgeted as a checkbox | 1 | Low | Hours | 0 | Theme static assets |
| R5 | Entity-clarity copy pass: answer-first openings on category/guide/About pages | 3 | High | Medium | 1 | Content + Stencil theme |
| R6 | Put "600 technicians / 40 years" into crawlable HTML (homepage, About, guide footers) | 3 | Medium | Low | 1 | Stencil theme |
| R7 | `Article` + `author` + dates schema on all guides; brand the guide titles | 2 | High | Low–Med | 1 | Stencil theme |
| R8 | Q&A blocks + `FAQPage` schema on top 20 categories | 2+3 | High | Medium | 1 | Content + Stencil theme |
| R9 | PDP meta-description template + custom top 500 † | 3 | Medium | Medium | 1 | BigCommerce admin |
| R10 | Homepage title tag rewrite † | 3 | Medium | Minutes | 1 | BigCommerce admin |
| R11 | Convert `/home/` 404 → 301 † | 3 | Low | Minutes | 1 | BigCommerce admin |
| R12 | GA4 "AI Assistant" channel group + manual Perplexity channel | 4 | High* | Hours | 2 | GA4 |
| R13 | Monthly citation panel: ~10 buyer-intent prompts across ChatGPT/Claude/Perplexity/Gemini | 4 | Medium | Low, recurring | 2 | Runbook |
| R14 | Quarterly crawler-access re-check (the §04 UA matrix) | 4 | Medium | Minutes, recurring | 2 | Runbook |
| R15 | Video transcripts + `VideoObject` schema, riding on the planned YouTube repurposing | 2 | Medium | Rides on existing work | 2 | Content + Stencil theme |

\* High for measurement value — it's what makes every other row provable.

---

## 10 · The staged plan

### Stage 0 — Turn AI visibility on · *week 1, hours of work*

R1–R4. Unblock retrieval crawlers in the Cloudflare dashboard (Security → Bots → review the AI-bot blocking setting and the managed-robots.txt injection); rewrite robots.txt as one deliberate policy; make the Google-Extended call consciously; ship llms.txt. **The retrieval-vs-training distinction is the client conversation:** keeping `Content-Signal: ai-train=no` and blocking training-only crawlers (CCBot, Bytespider) is a defensible IP stance — blocking OAI-SearchBot and PerplexityBot is simply invisibility on a public commerce catalog. Nothing else in this audit matters until Stage 0 lands. *Advance trigger: the §04 UA matrix returns 200s for retrieval bots.*

### Stage 1 — Make content quotable · *weeks 2–6*

R5–R11. The copy pass leads with the flattest extractable fact ("what this category covers, which machines it fits") before brand framing; the credibility stats go into real HTML; guides get authorship, dates, and Article schema; the top 20 categories get 3–5 real buyer questions with FAQPage markup; the PDP meta-description and homepage-title fixes clear the last open SEO quick hits. *Advance trigger: guides and top categories pass a rich-results/schema validation and read answer-first.*

### Stage 2 — Measure & compound · *months 2–3, then ongoing*

R12–R15. GA4 channel setup first (every week without it loses baseline), then the monthly citation panel and the quarterly access re-check as standing runbook items; transcripts and VideoObject ride along when the playbook's YouTube-repurposing initiative happens. *This stage never "completes" — it's the maintenance layer that keeps Stages 0–1 true.*

---

## 11 · Measurement framework & what to honestly expect

**Add three lines to the measurement stack** (these extend, not replace, the playbook's Longer Term 6):

1. **AI referral sessions & conversions by engine** — GA4 native channel group for ChatGPT/Gemini/Claude; one manual channel definition for Perplexity.
2. **Citation rate** — the fixed prompt panel (R13), logged monthly: does the engine mention USA-CLEAN, does it link, what does it say.
3. **Crawler-access status** — the quarterly UA matrix (R14), because CDN defaults change silently.

**What to expect, stated honestly:**

- AI referral volume is still small in absolute terms — under 2% of sessions for most sites. One large 2025 ecommerce study measured ChatGPT referrals growing over 1,000% year-over-year while non-branded organic grew 17% — but from a base where organic still dominates discovery by roughly 47:1.
- Conversion quality is genuinely contested: Adobe's trillion-visit retail dataset (Q1 2026) found AI-referred traffic converting *better* than other channels; an independent academic study over ~$20B of first-party transactions (Kaiser & Schulze, Oct 2025) found ChatGPT referrals converting *worse* than organic. Attribution error cuts both ways (copied links strip referrers and get counted as direct).
- For B2B specifically — closer to USA-CLEAN's buyer than the DTC data — the available evidence leans toward longer sessions and somewhat higher conversion, on small samples.

**The honest client framing:** this work protects and modestly compounds the existing SEO investment for a channel growing fast off a small base. Don't attach a percentage to it. The cost of Stage 0 is hours; the cost of skipping it is structural absence from the fastest-growing referral channel.

---

## 12 · Where the fixes land

No single owner covers this work — four surfaces, four access needs:

| Surface | What lands there | Access needed |
|---|---|---|
| **Cloudflare dashboard** | R1 unblock, R2 managed-robots.txt reconciliation, R14 verification | Cloudflare admin |
| **BigCommerce admin** | R2 origin robots.txt, R9 meta templates, R10 title, R11 301 | Store control panel |
| **Stencil theme** | R4 llms.txt, R6 stats markup, R7 Article schema, R8 FAQ blocks, R15 VideoObject | Theme repo + deploy |
| **GA4** | R12 channels, R13 panel logging | Analytics admin |

---

## 13 · Catalyst / replatform note

A future move to Catalyst (headless React storefront) changes *where* these fixes are implemented — robots.txt and llms.txt become framework routes, JSON-LD becomes React components instead of Stencil partials — but changes nothing about *whether* they're needed. Every recommendation here is platform-portable: the copy, the schema shapes, the crawler policy, and the measurement stack all carry over intact. Nothing in this audit is a reason to accelerate or delay replatforming; do the fixes now and they move with you.

---

## 14 · Sources

**Live evidence (all captured 2026-07-08):**
- `https://shop.usaclean.com/robots.txt` — the double policy
- `https://shop.usaclean.com/` — title, H1, Organization/WebSite/Store JSON-LD
- `https://shop.usaclean.com/Battery-tray-154-2603/` — PDP schema + meta description
- `https://shop.usaclean.com/parts-and-supplies/tennant/` — category schema + copy
- `https://shop.usaclean.com/floor-pad-selection-guide/` — guide with zero schema
- `https://shop.usaclean.com/about-usa-clean/` — About page, no schema
- UA-matrix 403 results (§04), llms.txt 404, `/home/` 404, brand-path 301s

**Client documents assessed (not in this repo):**
- *USA-CLEAN SEO Detailed Playbook* — June 2026 (16 initiatives: 4 quick hits, 6 short-term, 6 longer-term)
- *USA-CLEAN SEO Strategy Addendum — GEO/AEO Review* — July 2026 (Sonnet 5)

**Industry references (as cited in the addendum, current to June 2026):**
- Google Search Central — first official guidance on AI features in Search (May 2026): schema ≠ AI-citation lever; llms.txt not read by Google
- Ahrefs — llms.txt analysis across 137,000 domains (May 2026): ~97% receive zero AI-bot requests
- Cloudflare Radar — AI-crawler robots.txt analysis (2026): ~27–30% of B2B/ecommerce sites accidentally block AI crawlers
- GA4 release notes — native "AI Assistant" channel grouping (May 2026)
- Adobe Digital Insights — Q1 2026 AI traffic report (AI referrals convert better)
- Kaiser & Schulze — academic study of ChatGPT ecommerce referrals (Oct 2025; converts worse)
- Visibility Labs / Search Engine Land — 2025 ecommerce AI-referral growth study

**Related in this repo:**
- [Review deck version of this audit](../reviews/geo-aeo-audit.html)
- [Executive summary PDF](geo-aeo-executive-summary.pdf)
- [Product decision log](decisions.md) — Stage 0 go-ahead gets the next PD-NNN id
- [Feature design guidelines](feature-design-guidelines.md)
