All posts
Case Study

How PerformanceCoach.ai Went from 99% Invisible to Fully Visible to Every Major Crawler

A React SPA with 1,333 words of content was invisible to every AI crawler. CrawlReady fixed it in under an hour — zero code changes required.

Eric NeffMarch 18, 20264 min read
Share:PostShare

The site

PerformanceCoach.ai is an AI-powered music coaching platform built as a React single-page application hosted on Cloudflare. Users upload vocal, guitar, or instrumental performances and receive instant feedback from AI-powered producer personas, complete with pitch accuracy scoring, timing analysis, and visual performance breakdowns.

The site has over 1,300 words of content on the homepage alone — coaching features, pricing details, testimonials, FAQ answers, and challenge pages. To a human visitor, it looks polished and complete.

To a bot, it was nearly empty.


The problem

On March 14, 2026, a CrawlReady audit of performancecoach.ai revealed a severe crawler visibility gap.

MetricValue
Overall audit score51/100
Words visible without JavaScript10
Words visible after rendering1,333
Content visibility gap99%
AI bots allowed by robots.txt9 out of 9
AI bots that could actually see the content0 out of 9

The site earned an F grade overall despite having solid technical foundations underneath. The SEO score was 80/100 and the Technical score was 85/100 — the infrastructure was fine. The failure was purely a visibility problem: the content existed, but crawlers couldn't access it because the entire page depended on client-side JavaScript rendering.

The core paradox: every major AI crawler — GPTBot, ClaudeBot, PerplexityBot, Bingbot, and more — was explicitly allowed in the robots.txt file. The door was open. But none of them could see what was inside, because none of them execute JavaScript.

Google Search Console data from the same period confirmed the impact. The homepage itself was flagged as "URL is not on Google" with a redirect issue, and the canonical URL pointed to an old subdomain (music.performancecoach.ai) instead of the primary domain. Over three months, the entire site had earned just 8 clicks from 998 impressions — a 0.8% click-through rate.


What CrawlReady found

The audit classified 11 distinct issues into three categories:

Fixed by CrawlReady immediately (3 issues)

  • 99% content visibility gap — CrawlReady pre-renders the full page and serves complete HTML to all crawlers
  • Content invisible to AI bots — after deployment, GPTBot, ClaudeBot, PerplexityBot, and all others receive the full 1,333 words
  • Missing H1 in raw HTML — the rendered output includes the real heading structure

Fixable by CrawlReady with enhancer upgrades (5 issues)

  • Title too long (71 characters, Google truncates at ~60)
  • Meta description too long (267 characters, Google truncates at ~160)
  • Canonical URL pointing to wrong subdomain
  • og:url pointing to wrong subdomain
  • HTML entity encoding issue in rendered title

Requires application code changes (3 issues)

  • Heading hierarchy jump (H1 directly to H3)
  • OG image filename containing spaces and parentheses
  • Sitemap URLs pointing to old subdomain

This breakdown matters. CrawlReady fixes the critical visibility issues immediately and has a clear path to address five more through product improvements. Only three issues sit outside CrawlReady's scope entirely. That honesty — showing exactly what the tool does and doesn't do — is part of the value.


The fix

CrawlReady was deployed as a Cloudflare Worker on performancecoach.ai with a dedicated render origin at bots.performancecoach.ai. The deployment took under an hour and required zero changes to the PerformanceCoach.ai application code.

How it works

  1. A human visitor hits performancecoach.ai and gets the normal React SPA experience — unchanged, no extra scripts, no performance impact
  2. A crawler hits the same URL and CrawlReady intercepts the request based on the User-Agent header
  3. CrawlReady renders the page using Cloudflare's Browser Rendering API (headless Chromium at the edge)
  4. The rendered HTML — with all 1,333 words of content visible — is served to the crawler
  5. The result is cached in Cloudflare KV so subsequent crawler visits are served instantly

What was verified immediately after deployment

  • Crawler requests return the x-crawlready: rendered header
  • Rendered HTML contains the full page content on performancecoach.ai
  • Canonical output resolves to https://performancecoach.ai/
  • og:url resolves to https://performancecoach.ai/
  • The public sitemap serves performancecoach.ai URLs
  • Human visitors are completely unaffected

The result

Every crawler that visits performancecoach.ai now receives complete, rendered HTML with the full page content. The 99% visibility gap — the single most critical issue the audit identified — was eliminated. Where bots previously saw 10 words and an empty shell, they now see 1,333 words of structured content including headings, feature descriptions, pricing information, FAQs, and calls to action.

AI discoverability confirmed

ChatGPT, Perplexity, and Claude can all accurately describe what PerformanceCoach.ai is and what it does when asked directly. Perplexity's answer cites 15 sources and correctly identifies the product as an AI-powered music performance coaching tool. Claude describes it as an AI-powered music coaching platform with detailed feature awareness. ChatGPT identifies it as an AI music coaching platform that offers instant feedback on pitch and timing.

These AI systems have accurate, detailed knowledge of the product — the kind of visibility that matters increasingly as AI search grows. GPTBot traffic grew 305% year-over-year in 2025, and PerplexityBot grew 157,490%growth numbers we break down here. Sites that are invisible to these crawlers are invisible to a rapidly growing share of how people find information.


The numbers

MetricBefore CrawlReadyAfter CrawlReady
Words visible to crawlers101,333
Content visibility gap99%0%
AI bots that can see content0 of 99 of 9
H1 tag visible to crawlersNoYes
Canonical URL correctNo (wrong subdomain)Yes
og:url correctNo (wrong subdomain)Yes
Application code changes requiredZero
Deployment timeUnder 1 hour

Why this matters

PerformanceCoach.ai is not a broken site. It has a solid technical foundation (85/100 technical score), proper robots.txt configuration allowing all bots, structured data markup, and rich content. The problem was invisible to the team because the site looked and worked perfectly for human visitors.

This is the exact situation millions of React, Vue, and Angular SPAs are in right now. The site works. The content exists. But crawlers see an empty shell because the content depends on JavaScript execution that most bots can't perform — the hidden cost of client-side rendering that most teams never quantify.

The CrawlReady audit identified the problem in seconds. The fix deployed in under an hour. No framework migration. No code rewrite. No proxy routing traffic through third-party servers. The Worker runs directly on the site's own Cloudflare account, and the rendered content is served from the edge.

If your SPA has real content that matters for search visibility or AI discoverability, and you haven't checked what crawlers actually see when they visit your site, you probably have the same problem.


Case study data collected March 14–18, 2026. Audit baseline from CrawlReady Audit v0.2.2. Deployment verified on production performancecoach.ai.

Run a free audit and see exactly what Google, ChatGPT, Perplexity, and 20+ crawlers see on your site. Results in 15 seconds.

Run Free Audit
Share:PostShare
#case-study#react#spa#seo#aeo#ai-visibility#cloudflare