When people look for software today, a growing share of them never touch Google. They ask ChatGPT, Claude, Perplexity or Gemini "what's the best tool for X?" and take the answer at face value. If your product isn't in that answer, you're invisible to those users, and you have no idea it's happening.
I kept running into this with our own products, so I built AskAiRank to measure it. This post is about the problem and how the tracking actually works under the hood.
The problem: AI answers are a black box
Classic SEO gives you rank trackers, Search Console, backlinks. For AI assistants there's almost nothing. You can't see:
- Whether a model mentions your brand when asked about your category
- Where you land relative to competitors in that answer
- Which sources the model cites to justify its recommendation
And the answers aren't deterministic. Ask the same question twice and you can get different tools, different ordering, different citations. So a single manual check tells you nothing, you need to sample over time.
How the tracking works
The core loop is simple:
- Prompts. You define a set of buyer-intent prompts for your category, e.g. "best AI translation app for Mac" or "tools to monitor earthquakes".
- Run across models. Each prompt is sent to ChatGPT, Claude, Perplexity and Gemini on a schedule, so we sample the distribution rather than a single roll.
- Parse the response. For each answer we extract brand mentions, their position in the list, sentiment, and any cited source URLs.
- Score and compare. Mentions and positions roll up into a visibility score per model, and you can add competitors to see share of voice.
- Alert on drift. When your visibility drops or a competitor overtakes you, you get notified.
The parsing is the hard part. Model output is prose, not JSON, so mention detection has to handle aliases, partial names, "also worth checking out X" asides, and citations that live in footnotes or inline links. It's the piece I'm still iterating on the most.
Stack
Nothing exotic:
- Next.js frontend
- Self-hosted Postgres + PostgREST for data and API
- Python workers that call the four model APIs and do the parsing/scoring
- Scheduled runs so the sampling happens without anyone clicking a button
Why this matters (AEO / GEO)
People are starting to call this AEO (Answer Engine Optimization) or GEO (Generative Engine Optimization). The name matters less than the shift: recommendation is moving from ranked blue links to a single synthesized answer. If you ship a product, it's worth knowing where you stand in that answer, the same way you'd check your Google rank.
If you want to try it on your own product, there's a free plan (no credit card): https://askairank.com
I'd genuinely love feedback, especially from anyone who has tackled mention-detection in free-form LLM output. Where does your approach break?
Top comments (0)