Executive Summary
- The Problem: Most sites built with AI coding tools (Cursor, Lovable, v0, Replit) are completely invisible to ChatGPT, Gemini, Claude, and Perplexity.
- Why It Happens: These tools generate React SPAs with client-side rendering. The raw HTML is empty—just a
<div id="root"></div>. LLM crawlers don't execute JavaScript. - Who's Affected: Startups, AI-native builders, and product teams shipping fast with modern tools—often the teams most invested in AI visibility.
- Revenue Impact: AI-generated answers are replacing search for discovery queries. Invisible means zero demand capture from AI channels.
- The Fix: The 4R Framework—Rendering, Relevance, Retrieval, Recommendations. Server-side content, structured data, crawl optimization, and continuous testing.
- Time to Results: Real-time retrieval systems (Perplexity, ChatGPT browsing) can show improvements in days. Training-data LLMs take months.
- You Can Start Today: Run a curl test on your site right now. If the response contains no meaningful text, you have a problem. This guide shows you how to fix it.
What Is AEO and Why It Matters Now
The Shift from Search to Answers
For two decades, SEO meant optimizing for Google's search results—earning links, targeting keywords, and climbing the ranked list of blue links. That game is changing.
ChatGPT, Gemini, Claude, and Perplexity don't show ranked lists. They synthesize answers from multiple sources and present them directly. Users ask questions and receive definitive responses, often without clicking through to any website.
Answer Engine Optimization (AEO) is the practice of structuring content so that LLMs can retrieve, understand, and cite it. It's not about ranking first—it's about being included at all.
Citation vs Ranking: A Different Game
In traditional SEO, position 10 still gets some clicks. In AEO, there's a binary outcome: either the LLM cites your content, or it doesn't. There's no "page 2" of ChatGPT.
This creates winner-take-all dynamics. If your competitor is cited and you're not, they capture 100% of the AI-influenced demand. The user never sees alternatives.
Why This Matters for Revenue
Research shows that 40-60% of knowledge workers now use AI assistants daily for research and recommendations. When a potential customer asks ChatGPT "best CRM for startups" and your product isn't mentioned, you've lost that touchpoint entirely.
The compounding effect is severe: every AI-generated answer that excludes you trains more users to overlook your brand.
How Modern AI Tools Build Apps Today
The React/Vue SPA Default
AI coding tools have democratized web development. Cursor, Lovable, v0, Replit, and Framer let founders and engineers ship production apps in hours instead of weeks. The default output? React single-page applications with client-side rendering.
This isn't a bug—it's a feature. SPAs offer excellent developer experience, fast iteration, simple deployment, and smooth user interactions. They're optimized for what AI coding tools prioritize: speed to production.
Client-Side Routing and API-Driven Content
Modern SPAs fetch content via APIs after the page loads. The initial HTML document is a shell—a container element and JavaScript bundles. All meaningful content renders client-side, after JavaScript execution.
Tools Covered
| Tool | Default Output | LLM Risk Level |
|---|---|---|
| Cursor | React SPA | High |
| Lovable | React + Vite SPA | High |
| Framer | Hybrid (better) | Medium |
| v0 by Vercel | React components | High |
| Replit | Varies | Medium-High |
| Gamma | Presentation-first | High |
| Webflow AI | Hybrid | Medium |
* "Risk Level" indicates likelihood of producing LLM-invisible content with default settings.
Why LLMs Can't Read Most AI-Built Sites
Client-Side Rendering: The Technical Problem
When a browser loads a React SPA, it receives an HTML document, downloads JavaScript bundles, executes them, fetches data from APIs, and finally renders the UI. Humans see the finished product.
LLM retrievers don't work this way. Most fetch raw HTML via HTTP, parse it for text content, and discard the rest. They don't execute JavaScript. They don't wait for API responses. They see only what's in the initial HTML.
Hydration and Empty DOM at Fetch Time
The term "hydration" in React refers to the process of attaching JavaScript behavior to server-rendered HTML. But when there's no server-rendered HTML—just client-side rendering—there's nothing to hydrate. The initial DOM is empty.
How RAG Pipelines Ingest Content
Retrieval-Augmented Generation (RAG) powers real-time AI search. When you ask Perplexity a question, it searches the web, retrieves relevant documents, and feeds them to the LLM for synthesis.
The retrieval step typically uses HTTP fetches without JavaScript rendering. If your content only exists after JavaScript execution, it's not retrieved. The LLM can't cite what it never received.
The curl Test (Code Example)
Here's how to see what LLMs see. Open your terminal and run:
# What does the raw HTML contain?
curl -s https://your-site.com | grep -o '<body>.*</body>'
# If you see this, you have a problem:
# <body><div id="root"></div></body>
# You want to see actual content:
# <body><main><h1>Your Product</h1><p>Actual content...</p></main></body>If the body contains only a root div and script tags, your content is invisible to any system that doesn't render JavaScript—which includes most LLM retrievers.
Real-World Failure Modes
Empty HTML Shells
The most common failure: the entire site is a single-page app with no pre-rendered content. Every page returns the same empty shell. Different routes load different components via JavaScript, but the HTML is identical.
<!-- What crawlers receive for EVERY page -->
<!DOCTYPE html>
<html>
<head>
<title>Loading...</title>
<script defer src="/bundle.js"></script>
</head>
<body>
<div id="root"></div>
</body>
</html>Missing Semantic Anchors
Even sites with some server-rendered content often lack semantic structure. No proper heading hierarchy. No <article>, <section>, or <nav> elements. No structured data schemas. LLMs struggle to understand what content is most important and how it relates.
No FAQ Blocks or Summaries
FAQ content is ideal for LLM citation—question-answer pairs that directly match user queries. Without FAQ blocks or clear summary sections, LLMs have to extract answers from prose, which is less reliable and less likely to result in citation.
Broken Internal Linking
SPAs often use client-side routing that doesn't expose link relationships in the HTML. Crawlers can't discover related pages. Each page appears isolated, with no semantic connection to the rest of your content.
How This Kills Your AEO Performance
ChatGPT, Gemini, Claude, Perplexity Impact
Each major AI engine has different retrieval characteristics, but all share a common requirement: they need accessible content.
- ChatGPT (browsing mode): Uses Bing for retrieval. Bing can render JavaScript but often caches older versions.
- Gemini: Leverages Google's index but applies different ranking for AI answers than traditional search.
- Claude: Primarily training-data based, with limited real-time retrieval. Your content needs to be in the training set.
- Perplexity: Real-time web retrieval. Directly fetches and parses pages during inference.
AI Shopping Assistants and Enterprise Copilots
Beyond consumer AI chat, enterprise copilots and AI shopping assistants are reshaping B2B discovery. Gartner predicts that by 2026, AI agents will handle significant portions of procurement research. If your product pages are invisible to these systems, you're excluded from consideration.
The Invisible Brand Problem
The most insidious aspect: you don't know what you're missing. There's no equivalent of Google Search Console for AI visibility. Users ask questions, get answers without your brand, and move on. You never see the missed opportunity.
Tracking this manually is time-consuming
Checking 4 AI engines × 50+ prompts × weekly updates = hours of manual work. Most teams give up after a few weeks.
See automated trackingThe 4R Framework (Bull AI)
We've developed a systematic approach to AEO that addresses the full stack of LLM visibility. We call it the 4R Framework.
1. Rendering
Pre-render critical content server-side. Implement SSR (Server-Side Rendering) or SSG (Static Site Generation) for key pages. Your homepage, product pages, FAQ, and blog posts should return complete HTML with full text content. Keep interactive features client-side, but ensure core content is in the initial response.
2. Relevance
Add semantic structure and entity grounding. Use JSON-LD schemas (FAQPage, Product, Article, HowTo) to make content machine-readable. Implement proper heading hierarchy (H1 → H2 → H3). Define entities clearly: who you are, what you offer, what problems you solve. LLMs cite content they can confidently understand.
3. Retrieval
Optimize crawl surface. Ensure sitemap.xml is complete, up-to-date, and accessible. Implement internal linking between related content. Use canonical URLs to prevent duplicate content issues. Remove barriers: don't gate content behind login for pages you want LLMs to cite.
4. Recommendations
Test and monitor visibility. Run target prompts against ChatGPT, Gemini, Claude, and Perplexity. Track whether you're cited, and for which queries. Compare against competitors. Adjust content strategy based on data, not assumptions.
Turn insights into action
Bullseye doesn't just show visibility scores—it generates bi-weekly sprint plans with specific pages to create, content to update, and optimizations that actually move rankings.
See a sample sprint planHow Bullseye Fixes This
LLM-Readable Layers
Bullseye analyzes your site architecture and identifies pages that need server-side rendering. We provide specific implementation guidance—whether you're adding pre-rendering to an existing SPA or migrating key routes to static generation.
Structured Answers and Entity Grounding
Our Lighthouse tool scans every page for schema completeness, semantic structure, and entity clarity. We generate specific recommendations: which schemas to add, which headings to restructure, which content to reformulate as direct answers.
Continuous Monitoring
The dashboard tracks your visibility across all four major AI engines weekly. You see which prompts cite you, which cite competitors, and how visibility trends over time. When something breaks—a page goes offline, a competitor gains ground—you know immediately.
No marketing fluff. Bullseye is infrastructure for AEO. It identifies technical problems and generates specific fixes. We measure results against actual LLM responses, not proxy metrics.
DIY vs Professional Fix
What Teams Can Attempt Alone
- Add static HTML versions of your top 5 pages (landing, product, FAQ)
- Implement JSON-LD schemas for FAQ and Article content
- Ensure sitemap.xml is complete and submitted to search engines
- Run manual curl tests to verify content is in raw HTML
- Check robots.txt doesn't block AI crawlers
When You Need Tooling
- Tracking visibility across 4+ AI engines weekly
- Monitoring 50+ target prompts per engine
- Competitive intelligence on who's being cited
- Page-level analysis for sites with 100+ pages
- Trend analysis over months to measure improvement
- Prioritized action plans based on impact scoring
Know exactly who's outranking you
See which competitors appear in AI responses for your target prompts—and which specific content they're being cited for.
Run free competitor analysisHow to Test Your Site Right Now
You can verify your site's LLM visibility in under 5 minutes.
Step 1: The curl Test
# Fetch your homepage and examine the HTML
curl -s https://your-site.com | head -100
# Look for actual text content between tags
# Bad: <div id="root"></div>
# Good: <h1>Your Headline</h1><p>Your content...</p>Step 2: View Source Check
In your browser, right-click and select "View Page Source" (not "Inspect Element"). Search for key text that appears on the rendered page. If you can't find it in the source, crawlers can't either.
Step 3: Textise Test
Visit textise.net and enter your URL. Textise renders a text-only version of what crawlers see. If your content doesn't appear, it's not accessible.
Step 4: Schema Validation
Use Google's Rich Results Test to verify your structured data is valid and recognized.
Case-Style Examples
Before: SPA-Only Architecture
<!-- What a typical Lovable/Cursor site returns -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Acme CRM</title>
<script type="module" src="/src/main.tsx"></script>
</head>
<body>
<div id="root"></div>
</body>
</html>
<!-- LLM extractable content: ZERO -->After: Hybrid Rendering + Structured Data
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Best CRM for Startups | Acme CRM</title>
<meta name="description" content="Acme CRM helps startups manage
customer relationships with AI-powered insights. Free 14-day trial." />
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Acme CRM",
"applicationCategory": "BusinessApplication",
"offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" }
}
</script>
</head>
<body>
<main>
<h1>Best CRM for Startups</h1>
<p>Acme CRM helps startups manage customer relationships with
AI-powered insights. Over 10,000 teams trust Acme to close
more deals, faster.</p>
<section>
<h2>Why Startups Choose Acme</h2>
<ul>
<li>AI-powered lead scoring</li>
<li>Automated follow-ups</li>
<li>Free 14-day trial</li>
</ul>
</section>
<section itemscope itemtype="https://schema.org/FAQPage">
<h2>Frequently Asked Questions</h2>
<!-- FAQ content with proper schema -->
</section>
</main>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
<!-- LLM extractable content: FULL -->The interactive React app still mounts to #root, but critical content is in the initial HTML. LLMs can extract everything they need without JavaScript execution.
Frequently Asked Questions
Take Action
Find out if LLMs can see your site
Our free AEO audit analyzes your site against all four major AI engines. See exactly how ChatGPT, Gemini, Claude, and Perplexity perceive your brand—and get specific recommendations to improve visibility.
- No email required to run the audit
- Technical depth, not marketing fluff
- Actionable recommendations you can implement
Clients see results in 4-8 weeks
With Managed AEO, our team executes the sprint plans for you. Typical brands move from invisible to top-3 visibility within 60 days.
Learn about Managed AEO