AI engines can't find your Lovable site because Lovable publishes client-rendered React apps: crawlers like GPTBot, ClaudeBot, and PerplexityBot receive a nearly empty HTML shell, not your content. The fixes: serve prerendered HTML on public routes, allow AI crawlers in robots.txt, add llms.txt and structured data — then verify with a scan.
You built something good. People who see it like it. But ask ChatGPT about your product category and you're never in the answer — while sites far worse than yours get cited. This is almost never a quality judgment. It's a rendering problem, and it's diagnosable in 60 seconds.
TL;DR
curl -s https://yoursite.lovable.app | grep "any phrase from your page" — no match means no AI engine has ever read your content.Run the diagnosis against your live site (swap in a phrase that's visible on your homepage):
curl -s https://yoursite.com | grep -i "a phrase from your homepage"
No output? Then your content lives only in JavaScript. Every AI crawler that has ever visited got this instead:
<body>
<div id="root"></div>
<script type="module" src="/assets/index-xxxx.js"></script>
</body>
That's what ChatGPT knows about you: nothing.
Three follow-up checks while you're at it:
curl https://yoursite.com/robots.txt. Missing file is survivable; a blanket Disallow: / (some templates ship one) is fatal.https://yoursite.com/sitemap.xml exist? Lovable doesn't generate one.This is the fix that matters; everything else is decoration without it.
Add a public/robots.txt that explicitly allows GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extended, and Bingbot, and references your sitemap. (Template in our SPA ranking guide.)
A plain-text /llms.txt describing what your product is, what it costs, and where the key pages are. Lovable will generate it from one prompt — just verify the facts before deploying, because engines will repeat whatever it says.
Organization + WebSite + SoftwareApplication JSON-LD (with your real pricing in offers), FAQPage on any page with questions. One Lovable prompt, then validate with Google's Rich Results Test.
AI engines lift self-contained answers. Open pages with a direct ≤50-word answer, use question-phrased headings, add a real FAQ, and show "Updated [month year]" visibly. "Supercharge your workflow ✨" is not citable; "X is a [category] that does [specific thing] for [audience], from $0" is.
Use a custom domain (a *.lovable.app subdomain dilutes you), and one identical product description across your site, llms.txt, schema, and social profiles. Engines cite entities they can resolve confidently.
Indirectly, in two ways worth knowing. Content fetched client-side from Supabase after page load is invisible to crawlers even with prerendering — public content you want cited should be rendered into the HTML at build/request time. And while you're fixing visibility, check security too: most Lovable apps we scan have at least one Supabase table without Row Level Security, which is a much worse kind of "publicly readable." The Lovable security + ranking guide covers both.
A free CheckVibe scan runs 46 AEO checks against your live site — crawler permissions, JavaScript-free extractability, llms.txt, schema depth — and returns a per-engine readiness matrix for ChatGPT, Claude, Perplexity, Google AI, Copilot, Meta AI, and Mistral, plus 68 SEO checks and a security audit in the same pass. Findings come as fix prompts you can paste straight back into Lovable.
Then close the loop from the demand side: ask the engines directly and consider a mention tracker once readability passes (honest tool comparison here).
Either the content is client-rendered (the usual cause — crawlers get an empty shell), or a robots.txt/WAF rule blocks OpenAI's crawlers. The curl test distinguishes them: empty-but-200 response means rendering; a 403/blocked response means access rules.
Lovable publishes client-rendered React apps. You can prompt Lovable to add build-time prerendering for public routes, which produces static HTML crawlers can read — functionally equivalent for AEO purposes. Verify the result with curl rather than trusting the prompt succeeded.
Largely, yes. Google handles JavaScript better than AI crawlers but still rewards server-rendered HTML, structured data, and fast pages. Every fix in this post helps both; none hurts either.
Crawlers re-visit within days to weeks. Citation then depends on whether your pages answer questions people actually ask — that's the content layer. Re-scan immediately to confirm readability, then give the engines a few weeks while you improve answer-shaped content.
No — Bolt, and most AI app builders default to the same client-rendered architecture. Lovable sites just hit it most visibly because Lovable is so often used for public-facing products. The general SPA fix guide is here.
Paste your URL and get a security report in 30 seconds. 100+ automated checks with AI-powered fix prompts.
Scan your site freeRelated articles
AEO for vibe-coded apps is making AI-generated sites readable and citable by ChatGPT, Claude, and Perplexity. Why AI-built apps are disproportionately invisible — and the exact fixes.
Client-only SPAs are invisible to AI crawlers. The exact steps to make a vibe-coded React SPA rank in ChatGPT, Perplexity, and Claude: prerendering, robots.txt, llms.txt, schema, answer-first content.
SEO gets you ranked. AEO gets you cited by ChatGPT, Claude, and Perplexity. Where they overlap, where they diverge, and how to win both in one workflow.