Guide · get found by AI

Make your app
visible to ChatGPT.

You shipped on Lovable, Bolt, v0, Base44 or Replit. It looks great — then someone asks ChatGPT for “an app that does X” and it recommends a competitor that has never heard of you. That's not bad luck: AI assistants recommend what they can read and verify, and most AI-built apps ship as a JavaScript shell with almost no machine-readable facts. Here's exactly what to fix.

The short version: AI assistants extract facts and structure, not vibes. To be visible, make your app legible across 9 readability signals — above all publish machine-readable facts as JSON-LD, serve a curated /llms.txt, keep a clean heading structure, and allow AI crawlers in robots.txt. A beautiful app with none of those is invisible to AI; an uglier one that explains itself gets the mention.

Why isn't my app showing up when people ask ChatGPT for one like it?

Almost always because AI engines can't read it. A Lovable, Bolt, v0 or Replit app usually ships as a JavaScript shell with little server-rendered text, no JSON-LD facts, no /llms.txt, and no clean heading outline. So when a model is asked 'what's a good app for X?', it has nothing about you to extract and names a competitor that explains itself. The fix is to make your app legible: add the machine-readable facts and structure answer engines read first.

The fix isn't to make your app prettier — it's to make it legible: add the machine-readable facts and structure answer engines read first.

What are the 9 signals AI engines read?

getAdvantage's Get Found engine scores the same signals an answer engine relies on. You can work through them by hand:

  1. <title>a clear, descriptive page title that says what your app is.
  2. Meta descriptiona concise summary AI can quote as your one-liner.
  3. JSON-LD structured dataa hidden, machine-readable fact sheet about your app. The single highest-leverage fix.
  4. Headingsa single sensible <h1> plus a logical heading structure, so the page has a readable outline.
  5. /llms.txta plain-text introduction file that hands AI a clean map of your app.
  6. Content-to-markup ratioenough real, server-rendered text. A page that's all design and no words reads nearly blank to AI.
  7. Open Graphthe OG tags that describe your page when it's shared and parsed.
  8. Canonicala canonical URL so AI knows the authoritative version of a page.
  9. AI-crawler accesswhether crawlers like GPTBot, ClaudeBot and PerplexityBot are actually allowed in robots.txt.

What is an llms.txt file and does my app need one?

/llms.txt is an emerging standard — a plain-text file at yourapp.com/llms.txt that gives AI a clean, curated summary of what your app is and which pages matter. A good one follows the llmstxt.org shape (this is the pattern getAdvantage publishes for itself at getadvantage.app/llms.txt):

# Your App Name

> One-sentence summary of what your app does and who it's for.

## Key pages

- [Home](https://yourapp.com/): What the app is.
- [Pricing](https://yourapp.com/pricing): Plans and prices.
- [Docs](https://yourapp.com/docs): How it works.

Serve it as text/plain so crawlers read it as a real file, not an HTML shell.

How do I add JSON-LD structured data to a vibe-coded app?

JSON-LD is a small block of structured, machine-readable facts — your app's name, what it does, what it costs, who it's for — in schema.org's format, dropped into your page's HTML. You don't have to hand-write it. The fastest path on an AI builder is to describe what you want and let the builder write it — for example:

Add a <script type="application/ld+json"> block to my homepage with
schema.org structured data describing this app: [name], [one-line
description], [pricing], [primary category]. Use the
SoftwareApplication or Product type.

Your builder writes the JSON-LD for you — no manual code editing. (getAdvantage generates this exact block from your app's own content and hands it back as a paste-ready prompt.)

How do I let AI crawlers read my app?

Check your robots.txt and make sure you're not blocking the crawlers answer engines use — at minimum GPTBot (OpenAI), ClaudeBot (Anthropic) and PerplexityBot. A blanket disallow, or a default that blocks them, means the model literally cannot read your app, and no amount of on-page work helps if the crawler is turned away at the door.

Do I have to edit code to make my app visible to AI?

No. On Lovable, Bolt, v0, Base44 or Replit every one of these fixes can be expressed as a prompt your builder turns into code — JSON-LD, meta tags, headings and FAQ schema included. The two file-based fixes, llms.txt and robots.txt, are real files a browser script can't create, so you publish those by dropping the exact contents at the right path. None of it requires writing code by hand.

How do I check whether it worked?

Re-read your app the way AI does and confirm the signals are present — or run a scan that measures all 9at once. getAdvantage's free Get Found scan fetches your live app, scores the signals, shows which competitors a ChatGPT-class model names instead of you, and hands you each remaining fix as a prompt for your builder. It's a real measurement of observable signals at scan time — not a guarantee of any AI's answer, because no one controls that. What it does guarantee is that you'll know precisely what's missing.

Scan your app free.

All 9 signals, scored live, with the fixes as builder prompts — no signup.

Scan your app →