How we measure AI visibility — and how sure we are.
Every number on PromptHawk comes with its receipts: how many times we asked, which engines answered, and how much to trust the result.
Last updated June 2026
Why this page exists
AI answer engines don't give the same answer twice. Ask ChatGPT the same question ten times and you'll get ten slightly different brand lists. That's not a bug in our product — it's how these models work.
So we don't measure once. We ask each prompt many times, across each engine, and report the rate you show up — plus a confidence range around it. When we don't have enough data to be sure, we say so instead of inventing a number.
This page explains exactly how that works. No black box.
We poll, we don't snapshot
For each prompt you track, we run it several times against each engine across a measurement window. Once per window we do a full grounded “canonical” run that captures the exact sources an engine cited; the rest are lighter sampling runs that check whether your brand appears. Your visibility rate is the share of all those runs where your brand shows up. Appear in 7 of 10 and your visibility is 70% — with a confidence range around it.
- One full grounded run per window captures the cited sources; the extra sampling runs only confirm whether you appear. Detection is what drives the rate, so the lighter runs measure it just as faithfully — at a fraction of the cost.
- More runs of the same prompts beats more prompts run once. A small prompt set measured many times tells you more about whether you actually moved than a huge set measured once.
- We freeze your prompt set and engine settings within a window, so a change in your score means a change in the world — not a change in how we asked.
- We keep the raw answers behind every score, so any number traces back to the exact responses that produced it.
One run is an anecdote. The rate pooled across many runs is a measurement.
How many runs your plan includes
Confidence comes from sample size. Higher plans pool more runs per prompt, on each engine, across the week — so your ranges get tighter and your trends become trustworthy sooner.
| Plan | Runs per prompt, per engine, per week | Refresh | Confidence |
|---|---|---|---|
| Free | ≈3 | On-demand | Directional only |
| Pro | ≈8 | Weekly | Tighter ranges, weekly history |
| Business | ≈15 | Daily, pooled weekly | Tightest ranges, daily history |
These are pooled across a rolling weekly window — one full grounded run plus lighter sampling runs, summed into a single confidence range. Free is directional: small samples mean wide ranges, and with on-demand scans only it rarely builds the history a trend needs. Paid plans scan on a schedule, so trends appear on their own as that history accumulates. Numbers too thin to trust yet are labeled “Preliminary.”
What the range means
A confidence interval is the range your true visibility almost certainly sits in. “62% (51–72%)” means that if we re-ran these scans, we'd expect the real number to land in that range about 19 times out of 20. A wider range means we have less data — not that we're guessing.
The range isn't a guess at how wrong we might be — it's the natural spread of a model that answers differently each time.
Reading the width
- A narrow range means we're confident — lots of runs, consistent answers.
- A wide range means be careful — few runs, or the engine keeps changing its mind. More runs tighten it.
For rates (visibility, share of voice, citations)
We use a Wilson score interval with a continuity correction — the standard method for “x out of n” rates. It stays honest with small samples and never reports impossible ranges like 102%. Our samples are small and our rates often sit near 0% or 100%, exactly where simpler methods understate uncertainty; the correction makes our intervals slightly conservative on purpose — we'd rather understate our confidence than overstate it.
lower = (2np̂ + z² − 1 − z·√(z²−2−1/n + 4p̂(n(1−p̂)+1))) / (2(n+z²)); upper = (2np̂ + z² + 1 + z·√(z²+2−1/n + 4p̂(n(1−p̂)−1))) / (2(n+z²)), z = 1.96For averages (position, share of voice)
We report the average across runs with a margin of error: mean ± t·(s/√n) at 95%, using the Student-t distribution for small samples. We deliberately don't bootstrap these — at the sample sizes we work with, bootstrapping reports ranges that are too narrow, which is the false precision we're trying to avoid.
mean ± t₀.₉₇₅,ₙ₋₁ · (s / √n)Estimating prompt volume
Every tracked prompt gets an estimated monthly search volume from a single deterministic model we call heuristic-v1. It uses no third-party keyword API and no opaque panel — the same prompt always produces the same number, which is exactly why we can publish how it works. Treat it as a relative sizing signal (which prompts carry more demand), not a guaranteed traffic figure.
- We start from a base of 8,000 monthly searches and scale it down as a prompt gets longer and more specific — short head terms keep most of it, long-tail questions keep only a fraction.
- We classify each prompt's intent from its wording and weight by the demand that intent typically carries: informational the most, then commercial, transactional, and navigational.
- Recognisable head-term phrasings like “best”, “how to” and “near me” get a small boost.
- The result is rounded to two significant figures and clamped to a sane range, so we never imply false precision.
The four intents
- Informational
- Learning the topic — “how”, “what is”, “guide”, “tutorial”. The broadest demand.
- Commercial
- Comparing options before buying — “best”, “vs”, “review”, “alternative”.
- Transactional
- Ready to act — “buy”, “price”, “discount”, “free trial”.
- Navigational
- Heading somewhere specific — “login”, “near me”, “official”, “download”.
estimate = round2sig(8000 × lengthFactor(words) × intentFactor(intent) × min(1.15, 1 + headTermBoost)), clamped to [10, 50000]Confidence is reported alongside every estimate and is capped at 0.9 — the model never claims certainty it doesn't have. A higher-confidence estimate means a clearer intent signal and a shorter, easier-to-size prompt.
How fresh the data is
PromptHawk is not real-time. We measure on a schedule and report a recent snapshot, not what an engine would say this exact second.
Each score reflects the most recent completed measurement window for your plan. We timestamp every metric so you always know how old it is.
- Weekly is a sensible baseline for most categories; daily is for fast-moving or high-stakes terms.
- There's a lag between when an engine changes and when it shows up here — collection, scoring, and aggregation take time.
The engines we ask
We query the answer engines your customers actually use. We track each one separately and never blend them into a single mystery score — a win on Perplexity and a loss on ChatGPT are different facts.
- ChatGPT (OpenAI)
- Queried logged-out, default model, answers captured verbatim.
- Perplexity
- Queried logged-out, default model, with cited sources captured.
- Google AI Overviews
- Captured from the AI Overview block, separate from blue-link results.
- Gemini (Google)
- Queried with grounding, default model, cited sources captured.
- Claude (Anthropic)
- Queried with web search, default model, cited sources captured.
We add engines as they gain real usage and remove any we can’t measure reliably. When an engine’s own API isn’t available, a clearly labeled stand-in may answer in its place, and we record which one was used. The current list and settings are always shown here.
What we won't do
Trust is the product. So we hold ourselves to rules most tools don't publish:
- We won't show a trend or a “+X%” change we can't back with data. If two periods' ranges don't clearly separate, we say “no measurable change.”
- We won't hide the sample size. Every number shows how many runs it's based on.
- We won't blend engines, regions, or prompt sets to make a chart look smoother.
- We won't manufacture precision. A number from too few runs is labeled “Preliminary,” not dressed up as fact.
What this can't tell you
Measuring AI answers is genuinely hard. Here's where the numbers stop:
- Engine nondeterminism
- The same prompt yields different answers. We sample around it; we can't remove it.
- Phrasing sensitivity
- Reword a prompt and the brand list can change. Your tracked phrasing is one window into a topic, not the whole topic.
- No completeness guarantee
- We measure the prompts and engines you track, not every question a buyer might ask.
- Personalization & region
- Answers vary by location, account, and history. We standardize ours; a real user's will differ.
- Model updates
- Engines change underneath us. A shift can reflect a model release, not your work.
- Small samples
- Low plans and rarely-triggered prompts produce wide ranges. That's a real limit, shown honestly.
Plain definitions
- Run
- One time we send a prompt to one engine and record the answer.
- Visibility rate
- The share of runs in which your brand appears in the answer.
- Share of voice
- Your brand's share of all brand mentions across runs.
- Average position
- Where your brand typically lands in the answer's list, averaged across runs.
- Confidence interval
- The range your true value almost certainly sits in, given how many runs we have.
- Margin of error
- Half the width of the confidence range — the ± next to a number.
- Preliminary
- Based on too few runs to trust precisely. Directional only.
- Measurement window
- The period whose runs a score is calculated from.
Questions
Why did my score change when I didn't do anything?
AI answers drift on their own. If the change is within the confidence range, treat it as noise — that's why we show the range.
Why is my range so wide?
Not enough runs yet, or the engine is being inconsistent for that prompt. More runs (or a higher plan) narrow it.
Is this real-time?
No. We report a recent snapshot on a schedule, always timestamped.
Are these the exact answers users see?
No — answers vary by person, place, and time. We standardize our queries so trends are comparable, not identical to any one user.
Why don't you show a trend yet?
We draw the line once there are two comparable windows with enough data. We only call a change — a “+X%” move — when the two windows’ ranges clearly separate; otherwise we show “no measurable change.”
See it on your own brand.
Run a scan and watch the receipts show up next to every number.