Skip to content
AuditAEMethodologyLast updated 2026-09

Methodology.

AuditAE measures whether AI engines cite or mention your brand for the prompts your buyers ask, scores it, and turns the losses into a ranked playbook. This page documents how each engine is queried, what a check records, how the score and share of voice are computed, how the playbook is produced, and what we deliberately don’t claim.

How each engine is queried

ChatGPT. We call OpenAI’s Responses API with the web_search tool enabled. The model decides when to invoke web search based on the prompt. ChatGPT’s consumer product uses a related retrieval layer, but the surfaces are distinct and OpenAI doesn’t guarantee parity between them. We capture the model’s text response plus every URL it cites.

Perplexity. We call the Perplexity Sonar API. Sonar always retrieves live web sources before generating the answer. We capture the answer text plus the full source list Perplexity returns.

Gemini. We call Google’s @google/genai SDK with googleSearch grounding enabled. Gemini retrieves live sources and grounds the answer in them. We capture the response text plus the grounding sources.

Google AI Overviews. Google does not expose AI Overviews via an official API. We use SerpAPI to capture the AIO block whenever it renders for the queried prompt. AIO renders inconsistently (the same query may render an AIO for one capture and skip it for another) and SerpAPI’s parsing is best-effort. This is the same mechanism every credible AIO tracker uses, including the $99 to $499/month subscription tools.

What a check records

A check is one prompt run on one engine. Every check stores the same fields, so audits, trackers, the score and the playbook are all computed from one record and never disagree with each other.

brand_mentioned
Did the answer name your brand? Deterministic regex, word-boundary aware.
brand_url_cited
Did the engine link to a URL on your domain? Hostname match on the source list.
position
Character index of the first brand mention in the answer. Lower is earlier.
sources
Every URL the engine cited for that answer.
competitors
Other product or company names in the answer, extracted by Claude Haiku 4.5.
sentiment
How the answer framed you — positive, neutral, or negative.
excerpt
The relevant chunk of the engine’s response, markdown-stripped.
cost_usd
Exact provider cost for the check. Audit cost is the sum.

Brand detection is deterministic. We match your brand string with a case-insensitive, word-boundary regex that also accepts common prefix variants (so “Sell” never matches inside “Reseller”). No model is involved in deciding whether you were mentioned.

Source matching is hostname-based. A citation counts when a URL in the engine’s source list resolves to your domain (www. stripped, subpaths ignored). Competitor domains you register are matched the same way.

Competitors and sentiment are extracted by Claude Haiku 4.5 from the answer text — proper-noun product or company names other than yours, and whether the answer portrays you positively, neutrally or negatively. At most three competitors per check count toward share of voice, so one listicle can’t swamp the number.

Citation versus mention

We distinguish two outcomes per check, stored as two separate booleans.

URL cited. The engine linked to a URL on your domain in its source list. This is the strongest visibility signal: it can drive a click and it registers as attribution to your site. It is the headline number on every report.

Mentioned. The engine named your brand in the answer body, whether or not it linked to you. Mentions are the higher-volume impression for most brands (especially in ChatGPT, where most brand references are unlinked) and they never appear in Search Console, GA4 or any traditional analytics tool.

The gap between the two — mentioned but a third party got the link — is what we call the share-of-voice gap, and it is the most common and most fixable loss. More on the distinction in what counts as a citation.

The AI Visibility Score

Every audit produces one 0–100 score and a letter grade, so there is a single number to own and watch move. It is pure and deterministic: the same checks always produce the same score.

Formula. 50% URL-cited rate + 30% mention rate + 20% share of voice, each over the checks that succeeded. When no competitor was named in any answer there is no share-of-voice signal, and the cited and mention weights are renormalized to keep their 5:3 ratio.

Grades. A at 70+, B at 50+, C at 32+, D at 15+, F below. The bands are deliberately tuned to AI-citation reality: most brands start low, so a typical first audit lands C or D with visible room to climb rather than a flat F.

Confidence. Fewer than six successful checks (roughly three prompts on two engines) marks the score “preliminary” so a one-prompt free check never reads as authoritative. Checks that failed at the provider are excluded from every rate — and never billed.

How share of voice is computed

Across all checks in an audit: the number of checks that mentioned your brand, divided by that number plus every competitor mention (capped at three per check). 29% means that for every ten brand names the engines put in front of your buyers, roughly three were yours.

The “top competitor” on a report is simply the name that appeared most often. It is frequently not who you expect — the brand the engines cite instead of you is often a publisher or comparison site, not a direct rival.

How the playbook is produced

Every losing check gets a diagnosis; every audit gets a ranked to-do list. Two layers:

Per-check diagnosis. A loss is one of two types: mentioned_only (the engine named you but linked someone else — an attribution problem) or pure_loss (you weren’t named at all — an on-the-map problem). Claude Sonnet 5 reads the answer and its sources and assigns a gap type from a fixed vocabulary — for example listicle absence, competitor-owned content, wrong domain cited, brand-name collision, category invisible, wrong content format, low authority signals — plus a one-line fix and the hosts it targets. The model chooses from the vocabulary; it cannot invent a gap type.

Audit-level rollup. One further call clusters those rows into one to three actions, ranked by how many rows each would close. A priority-1 action must close at least two rows or be an obviously higher-leverage single move. The rollup only references rows that exist — every action carries the check IDs it closes.

The site brief steers it. If you have written a brief in Memory (goals, ideal customers, decisions already made, what you’ve tried), the rollup reads it and ranks accordingly: it won’t re-propose something marked as tried, and it favors moves that serve your stated priority. The brief ranks; the rows diagnose — it never overrides the evidence.

Both layers are cached by a fingerprint of their inputs, so a re-run with identical results costs nothing extra, and a changed brief regenerates the ranking.

What “position” means

The position field on each result is the character index of the first occurrence of your brand string in the response text. It is not a rank, not a SERP position, and not a percentile. A position of 200 means the first mention appears around the 200th character of the response. Earlier mentions are read by more users than later ones, which is why we surface this.

What we don’t claim

AuditAE does not claim to:

Volatility and cadence

AI engines return non-deterministic responses. The same prompt run twice against the same engine often returns different cited sources, sometimes different brand mentions, occasionally different recommendations. This is expected. AuditAE handles it by:

AI Overviews is the most volatile of the four engines. ChatGPT (especially without web search) is the slowest to change, because it leans on training-data recall.

How a check is billed

A check is priced per engine, because each one costs a different amount to run (Perplexity $0.05, ChatGPT $0.07, Google AI Overviews $0.09, Gemini $0.12), and is debited from your credit balance only when the engine actually answered. Checks that fail at the provider are excluded from every rate and are not billed. New accounts start with $5 of credit, no card required.

Identical checks (same engine, brand, domain and prompt) are served from a short-lived cache for up to seven days on a warm instance so that reloading a report or sharing a public link never re-burns provider spend. A billed check is billed whether it hit the provider or the cache; the cache protects the provider cost, not the price.

The playbook and rollup are metered separately at the model tier that produced them, and typically cost about as much as the checks themselves. The full list — including what AEBOT and the specialist agents cost per turn — is on the pricing page.

Ready when you are

Run your first audit. See where you land.

One prompt. Four engines. About 30 seconds. No card required.

No card required · $5 credit lands instantly