AEOSearch

Platform · Measure

Methodology

Measurement you'd bet budget on has to survive its own methodology page. This is exactly how every number on an AEOSearch report is produced.

What we measure

Whether AI assistants mention and recommend your brand when your buyers ask them real purchase questions — and, when they don't, which competitor wins and why. The free scorecard queries ChatGPT and Gemini; the standard audit runs ChatGPT, Claude and Gemini; Full Coverage and every subscription plan run all five. Question sets scale by plan — 8 on the free scorecard, 20 on the one-time audit and Track, 50 on Grow, 100 on Command. Those plans answer ChatGPT on its fast model (GPT-4o mini) on the free scorecard and on the frontier ones elsewhere: GPT-5.6 Sol, Claude Sonnet 5 and Gemini 3.6 Flash. The Gemini one runs on every tier, free included, because Google prices its grounding per model family, so the older Flash was both the dearer and the staler choice and there was no reason to hold the current one back. Perplexity answers on Sonar and Grok on Grok 4.3. All of that describes audits run from 13 August 2026. Before then the models were a deployment setting rather than a fact of your plan, and the free scorecard had a different shape — so every report that already exists differs from the paragraph above, and we would rather say which way than let you find out. Free scorecards run before that date asked 20 questions, not 8, and ran ChatGPT and Claude with no Gemini at all. ChatGPT answered on GPT-4o mini and later GPT-4o; Claude on Haiku 4.5 and later Sonnet 5; Gemini, on the plans that ran it, on 2.5 Flash. Nothing has ever answered on GPT-5.6 Sol or Gemini 3.6 Flash — the first audit run under the paragraph above will be the first. Your own report is the record, engine by engine, and it is the only one we would defend. Pinning the models in code beside the sentence that sells them is what stops the two drifting apart again. One consequence we'd rather state than bury: upgrading a free scorecard tops it up instead of starting over. Whatever your free run did not cover is answered on the models above; the answers you already have are kept, with the model that produced them, rather than re-asked and re-billed. That is also why the free tier's own shape has changed over time without invalidating anyone's report. Each report lists exactly which engines it queried, and which models — wherever the provider's stored response records one — saying so explicitly when an engine holds more than one.

Grounding — and why it matters

Every answer is generated with the engine's live web-search tool enabled. This is deliberate: an ungrounded answer only reflects what the model memorized during training, which measures training-data presence, not what a real user sees today. A groundedanswer reflects the live answer engine. Each engine's grounding status is labeled on the report, so you always know which one a number came from.

How the audit runs

We generate buyer-intent questions across four types (best-of, comparison, problem-led, category-explainer), which you review and edit before anything runs. Each approved question is asked to each engine three times (AI answers vary between runs). We store every raw answer. A separate extraction pass reads each answer and records which brands were mentioned, in what order, with what sentiment, and which domains were cited.

The metrics

  • Mention rate — share of samples that mention your brand.
  • Share of AI Voice — your mentions ÷ all tracked-brand mentions.
  • Average rank — where your brand appears among named brands, when mentioned.
  • Recommendation rate — share of your mentions that are positive endorsements.
  • Citation share — share of cited sources that are your own domains.
  • Volatility — how much the three samples disagreed, shown honestly.
  • Unprompted visibility — mention rate and Share of AI Voice computed only over questions whose text names no tracked brand. A comparison question that names you (or a competitor) leads the engine toward the tracked set, so branded questions are scored separately and can never inflate the unprompted numbers.
  • Source Map— every domain the engines cited while answering, ranked by how many answers cited it, labeled yours / competitor's / third-party. This is the list of sources that actually decide your category's answers — and the ranked outreach list for getting into them.
  • Recognition ladder— mention rate grouped by question specificity, from questions that name a brand down to fully generic category questions. The deepest rung where you're still named is your recognition boundary; monthly re-runs show it moving.
  • New-brand readiness — when unprompted visibility is 0%, the report adds a prerequisites checklist run against your own domain: site reachability, AI-crawler access in robots.txt, schema.org structured data, llms.txt, and whether any answer cited your domain at all.

Dashboard scores

Two composite scores appear on the dashboard. Both are published here in full, because a score whose formula you cannot check is an opinion with a decimal point. Every input is one of the metrics above, under whatever filter the page is showing — but read the scope on each line below before plugging the dashboard’s own numbers in. Two of the three components are measured over the unprompted questions only, and the “Share of AI voice” card is not: that card answers over every question in scope, so it is a different number from the one this formula takes.

Visibility index, 0–100:

visibilityIndex = 100 × Σ(weight × component) ÷ Σ(weight)

  unprompted mention rate   weight 0.5
      over questions naming no tracked brand
  share of AI voice         weight 0.3
      over those same unprompted questions
      (NOT the all-question figure on the "Share of AI voice" card)
  citation share            weight 0.2
      over every source citation in scope, not per answer

A component whose own denominator is empty is dropped and the remaining weights are renormalized — it never contributes a zero, because “we could not measure your citations” is not “you have no citations”. Those denominators are the three the formula names and nothing adjacent: unprompted answers that came back, tracked-brand mentions inside them, and source citations. An engine that failed every unprompted call leaves the first at nought, so the mention rate is dropped rather than read as a rate of zero. The gauge caption names each component that was dropped. The index is refused outright, and reads “insufficient data”, in three cases: fewer than 5 counted answers in scope, no component measurable at all, or fewer than 2components measurable — renormalizing down to one leaves a single measurement wearing a composite’s name. The tier words are labels on that measured number, at Leading ≥ 75, Strong ≥ 50, Building ≥ 20, Low ≥ 0, and each describes the weighted average of the three. A tier word is shown only when all three components were measured; under renormalization the score stands on its own.

Sentiment score, 0–100 with 50 = neutral:

sentimentScore = 50 × (1 + (positive − negative) ÷ classified)

  classified = positive + neutral + negative

Counted per mention of your brand, not per answer. A mention whose sentiment is absent or off-vocabulary leaves both the numerator and the denominator and is disclosed as unclassified. Below 5classified mentions the score is refused and reads “insufficient mentions”. The scale stays symmetric even though real answers skew positive — a brand the engines dislike has to be able to score below 50, and the number has to mean the same thing for you as for a competitor.

Average position is the mean first-mention rank across answers that named you; lower is better, and a delta chip shows a rank improvement as an improvement rather than as a negative number. Share of AI voiceis zero-sum across you and your run-tracked competitors only. Watch-only brands — scored retroactively from answers already stored — are excluded from it, and every watch-only figure carries the count of answers it was measured across.

AEO health, 0–100, on the Sources page:

healthScore = round(100 × passing ÷ checked)

  checks: site reachable · robots.txt per AI crawler
          (GPTBot, ClaudeBot, PerplexityBot, Google-Extended)
          · schema.org JSON-LD on the homepage · llms.txt / agents.md

A probe that never completed is recorded as unchecked— excluded from both the numerator and the denominator, never a pass and never a fail. Fewer than 3 checked results shows no score at all. These are named checks against your homepage, robots.txt and llms.txt, not a site crawl; the panel prints that scope beside the gauge. When a re-check fails, the panel keeps the last completed results with their timestamp and says the newer attempt failed — it never silently shows stale numbers as current, and never shows a failure as zero.

Monthly re-runs

Subscription audits re-run automatically each month with the same approved questions, so month-over-month movement compares like with like. The report's “Since last audit” section shows Share of AI Voice movement, per-engine mention-rate movement, and every question whose outcome changed. An engine added since the previous run is labeled “new” rather than counted as movement.

Movement is only movement when both runs answered comparable amounts. Failed engine calls are excluded from every rate, so a run that lost part of its corpus to an outage produces rates over fewer samples. Comparing those with a later, fuller run would turn the outage's repair into a “change” — the same lie as counting a failed call as a non-mention. So when the share of answered samples differs by ten points or more, on a whole run or on one engine, we show both counts, mark the move †, refuse to colour it as a gain or a loss, and decline to attribute it. The arithmetic is still printed; only the claim about what it means is withheld.

The assistant

The in-dashboard assistant answers questions about your own stored audit dataand nothing else. It is built to quote numbers only from tool calls over the same computed metrics the dashboard renders — under the same filters, with the same sample counts and the same “insufficient data” refusals. It holds no market data, no traffic estimates, and no prompt-volume figures. Where it proposes an action (a fix item, an action plan, a re-run), the action runs only after you confirm it on a card that states what will run — the assistant itself can execute nothing. Its prose is AI-generated; the numbers behind that prose are measured.

Honesty

We invent no statistics. Every number in a report is computed from stored AI answers you (or we, as admins) can inspect. AI answers are probabilistic and change between runs — treat every figure as a dated snapshot, not a guarantee.

Start with the free scorecard.

Run it on your own brand — the methodology is the product.

$0 to start · no card required · every number traces to a stored answer