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.
| Metric | Value |
|---|---|
| Overall audit score | 51/100 |
| Words visible without JavaScript | 10 |
| Words visible after rendering | 1,333 |
| Content visibility gap | 99% |
| AI bots allowed by robots.txt | 9 out of 9 |
| AI bots that could actually see the content | 0 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
- A human visitor hits performancecoach.ai and gets the normal React SPA experience — unchanged, no extra scripts, no performance impact
- A crawler hits the same URL and CrawlReady intercepts the request based on the User-Agent header
- CrawlReady renders the page using Cloudflare's Browser Rendering API (headless Chromium at the edge)
- The rendered HTML — with all 1,333 words of content visible — is served to the crawler
- 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: renderedheader - 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
| Metric | Before CrawlReady | After CrawlReady |
|---|---|---|
| Words visible to crawlers | 10 | 1,333 |
| Content visibility gap | 99% | 0% |
| AI bots that can see content | 0 of 9 | 9 of 9 |
| H1 tag visible to crawlers | No | Yes |
| Canonical URL correct | No (wrong subdomain) | Yes |
| og:url correct | No (wrong subdomain) | Yes |
| Application code changes required | — | Zero |
| Deployment time | — | Under 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.
Is your site invisible to AI search?
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