Study · scanned June 2026 · AI-readability

Most apps built on Lovable are invisible to AI.

We ran 18 live, public Lovable-built apps through getAdvantage's own AI-readability scanner. 17 were reachable. Their average score was 57.6 / 100 — a C. The headline problem isn't subtle: 88% are JavaScript shells that render fine in a browser but ship a near-blank page to AI crawlers — and GPTBot / ClaudeBotdon't execute JavaScript.

17
live apps scanned (18 found, 17 reachable)
57.6
average AI-readability — a C (median 56)
88%
ship a near-blank page to AI crawlers (JS shell)
4
earned an A — proof it's solvable on the same stack

What this measures. The score is AI-readability — whether the text, structured data and intro files an AI crawler reads actually exist in the HTML served from the server. It is nota measure of whether ChatGPT or Claude recommend an app today; that's a separate live-perception probe. This is a small, hand-picked sample of public homepages, scanned on one day in June 2026 — not a random or representative survey of all Lovable apps, and a snapshot can change the moment someone redeploys.

The leaderboard — best first

Scores ran from 22 all the way to a perfect 100. That spread is the good news: a great score is achievable on the exact same stack, so this is a knowledge gap, not a platform ceiling. The four A-grade apps below are named as positive examples of what good looks like. The rest are anonymized — we're not here to shame any individual builder.

#1
VoiceBrief
None — passes all nine signals. The model citizen: llms.txt, rich JSON-LD, Open Graph and a canonical URL all present.
100A
#2
AssuranceBridges
Low text-to-markup ratio only — it leans on JavaScript to render its content.
92A
#3
AgentSwarms
Only ~8% readable text; most content arrives via JavaScript.
92A
#4
SmartMoney77
robots.txt blocks some AI crawlers (CCBot, Bytespider).
91A

Ranks 5–17 are shown anonymized — score, grade and the single biggest gap, no names and no URLs (our default for this first publication).

#5
App #5
Near-zero server-rendered text (JS shell).
B74
#6
App #6
No /llms.txt — the heaviest single check (18 pts).
B73
#7
App #7
JS shell — 17 characters of server text; the H1 is trapped in JavaScript.
B72
#8
App #8
JS shell, roughly 0% server-rendered text.
C71
#9
App #9
JS shell; missing headings and structured data to crawlers.
C56
#10
App #10
Vite/React shell; no schema and no headings reach crawlers.
C56
#11
App #11
Near-zero server text — nothing for a model to cite.
D38
#12
App #12
JS-only shell; zero readable characters in the served HTML.
D38
#13
App #13
JS shell plus no JSON-LD.
F28
#14
App #14
JS shell; zero readable characters.
F28
#15
App #15
JS shell plus a missing page <title>.
F26
#16
App #16
JS shell; blank to non-JS crawlers.
F23
#17
App #17
JS shell; server-rendering would unblock nearly every other fix.
F22

Of the 18 apps we found, 17 responded on the scan date. The unreachable one (NXDOMAIN on the scan date) is excluded from the 17-app average.

What broke, and how often

The failures cluster around one root cause — the page is rendered by JavaScript in the browser, so the HTML a crawler fetches is nearly empty. Each percentage is the share of the 17 scanned apps where we observed that specific issue at scan time.

failed the content-to-markup check — the JS-shell invisibility that dominates everything else
88%
had broken or missing heading structure (the H1 is trapped in the JS bundle)
71%
shipped no JSON-LD — no machine-readable facts about what the product even is
53%
had no /llms.txt — the single heaviest signal, and the easiest to add (it's a static text file)
47%

Spread 22100, median 56; 41% scored below 50, while 24% earned an A. The top performers prove it's solvable: one app passed all 9checks, and the next three A's failed only a single signal each.

What this means — and the honest fix

The number-one failure here is the JS shell: a page with no server-rendered text. This is the part it's tempting to overclaim, so we won't. A browser embed cannot fix it.An embed is JavaScript too, and these crawlers don't run JavaScript — so a script that injects JSON-LD or meta tags into the DOM is invisible to the very bots that already saw a blank page. The honest fix for a JS-shell app is to server-render or static-render the content (ask Lovable to pre-render your page) and to add an llms.txt file — a real file you place, which non-JS crawlers read directly.

If your app is a JS shell (most of this sample)

Lead with the two things a non-JS crawler can actually see: get your content server-rendered or pre-rendered, and publish a /llms.txt file. Those move the score most because they exist in the HTML before any JavaScript runs.

If your app already server-renders

Then the one-line embed genuinely helps — it adds the JSON-LD, meta and FAQ schema you're missing, injected into a page a crawler can already read. The two-lane rule still holds: llms.txt and robots.txtstay files you place — a browser script can't create them.

Methodology & honest caveats

We believe a study is only worth citing if its limits are stated as plainly as its findings. Here are ours.

  • Hand-picked, not random.
    We scanned 18 public, live apps we could confirm were built with Lovable. This is the apps we scanned — never a claim about all Lovable apps, which we have no way to enumerate or sample representatively.
  • A single-date snapshot.
    Each app was scanned once, in June 2026. A score is a point-in-time measurement of the HTML served that day; a redeploy can change it the moment it ships. We lock the date so the number is reproducible in context.
  • Public homepages only.
    We fetched each app's public homepage — nothing beyond what an AI crawler already requests. No scraping of private pages, no authentication, no probing past the front door.
  • Readability, not recommendation.
    The score measures AI-readability from server-side HTML: does the text, structured data, and llms.txt a crawler reads actually exist? It is not proof that ChatGPT or Claude do, or don't, recommend an app today.
  • The live-perception probe is separate — and ChatGPT & Claude only.
    Whether a model actually knows and names an app is a different check. Where we run it, it covers ChatGPT and Claude only. Perplexity and Gemini are not probed live, so we make no claim about what they would say.
  • “Crawlers don't run JS” is documentation, not a probe.
    That GPTBot and ClaudeBot fetch the page without executing JavaScript is how those crawlers are documented to work — a well-established fact about the bots, not something we measured live per app.
  • Best-first, no shaming.
    We name the A-grade apps as positive examples and anonymize the rest. Low scores trace to platform defaults — most AI builders ship JavaScript-only by default — not to any builder's negligence.
  • 18 found, 17 reachable.
    Of the 18 apps we found, 17 responded. The unreachable one (an NXDOMAIN on the scan date) is excluded from the 17-app average and every percentage above.

Scored on getAdvantage's 9-signal AI-readability engine — the same scan you can run on your own app. See the full methodology for how each signal is weighted.

What does an AI crawler see on your app?

Run the same 9-signal scan on your own app — free, real, no signup — and get each fix as a prompt you paste back into your builder.

Scan your app — free →

Want the fixes applied for you? See pricing — start free, no card.