AI Visibility Score: Rebuilding a Real 31/100 by Hand
Six weighted components, three per-engine scores, one blend. We take a real score of 31 apart to the last decimal and show which component is quietly costing the most.

Companion film
The 31, taken apart: 42.5, 40, and 11
The per-engine arithmetic on screen, including the four-fold spread that the blended 31 hides.
1:11captionsthe same scan as the screenshots below
Read the transcript insteadHide the transcript
0:01A single score is a compression. The only reason to trust one is that you can take it apart.
0:07So here's a real one, taken apart. Six components. Presence carries the most weight, because it's the necessary condition and the least noisy thing to measure.
0:18Sentiment carries almost nothing, because its classifier is the noisiest. And stability is in there so a brand that swings run to run can't score like one that appears reliably.
0:31Now the part most vendors won't show you. Each engine is scored on its own answers. Claude: 42.5. Gemini: 40. GPT-5.5: 11.
0:43Same brand. Same questions. Same day. A four-fold spread. Blend the three and you get 31.
0:51Pool the answers together instead and you'd get 36. We blend, because pooling launders a weak engine, and that engine's 11 is real information.
1:02Every weight is published. Every score is stamped with its methodology version. Check our arithmetic at whereamimentioned.com.
A single 0–100 number is a compression, and compressions lose things. The only reason to trust one is that you can decompress it: take the score apart, see every input, and check the arithmetic yourself.
So here's a real score, taken apart. The brand is Loo.koo.mas, a loukoumades shop in Reykjavík. The scan was five buyer questions across three grounded models: 15 answers. The headline came back 31.

The six components and why they weigh what they weigh
AIVisibilityScore = 100 × (
0.30 · PresenceRate
+ 0.20 · AvgProminence
+ 0.20 · ShareOfVoice
+ 0.15 · BrandCitationShare
+ 0.10 · SentimentScore
+ 0.05 · Stability
)
The weights are a documented default, and I picked them. Each one is an argument:
Presence rate: 0.30. Whether you're named at all. It carries the most weight for a boring but decisive reason: it's the necessary condition for everything else, and it's the component with the lowest measurement error. A binary "was the brand named" question is far easier to get right than "how positively was it described".
Prominence: 0.20. Where in the list you land, normalised so first place is 1.0 and last place is 0.0. Being named ninth in a list of nine is a different result from being named first, and a presence-only metric treats them identically.
Share of Voice: 0.20. Your mentions as a fraction of every brand the models actually named: an open denominator, discovered from the answers instead of from a list you supplied. The denominator choice matters more than the weight does, which is why it gets its own article.
Citation share: 0.15. Whether your domain is a source, not just a subject. I capped it below the mention metrics because only some engines cite consistently, and a high weight would punish brands for the citation habits of whichever engines happened to be on the panel.
Sentiment: 0.10. How favourably you're described, measured toward your brand specifically rather than across the whole answer. Low weight because sentiment classification is the noisiest thing in the pipeline. Anyone weighting sentiment heavily is amplifying their own error bars.
Stability: 0.05. Defined as 1 − (Wilson half-width ÷ point estimate), clamped to [0,1]. A brand whose presence swings from run to run scores near zero here; a brand that appears reliably scores near one. It's the only component that penalises uncertainty instead of rewarding performance: the honesty tax, at a deliberately small weight because at low sample sizes it mostly measures how few answers you bought.
The arithmetic, per engine
Here's the part most vendors won't show you. The headline isn't one calculation over pooled data. Each engine is scored on its own answers, then the engine scores are averaged.

Claude Sonnet 5: 42.46
| Component | Value | × Weight | Contribution |
|---|---|---|---|
| Presence | 0.400 | 0.30 | 0.1200 |
| Prominence | 0.750 | 0.20 | 0.1500 |
| Share of Voice | 0.167 | 0.20 | 0.0333 |
| Citation share | 0.080 | 0.15 | 0.0120 |
| Sentiment | 1.000 | 0.10 | 0.1000 |
| Stability | 0.185 | 0.05 | 0.0093 |
| Total | 0.4246 → 42.46 |
Gemini 3.5 Flash: 40.00
| Component | Value | × Weight | Contribution |
|---|---|---|---|
| Presence | 0.200 | 0.30 | 0.0600 |
| Prominence | 1.000 | 0.20 | 0.2000 |
| Share of Voice | 0.200 | 0.20 | 0.0400 |
| Citation share | 0.000 | 0.15 | 0.0000 |
| Sentiment | 1.000 | 0.10 | 0.1000 |
| Stability | 0.000 | 0.05 | 0.0000 |
| Total | 0.4000 → 40.00 |
GPT-5.5: 11.00
| Component | Value | × Weight | Contribution |
|---|---|---|---|
| Presence | 0.200 | 0.30 | 0.0600 |
| Prominence | 0.000 | 0.20 | 0.0000 |
| Share of Voice | 0.250 | 0.20 | 0.0500 |
| Citation share | 0.000 | 0.15 | 0.0000 |
| Sentiment | n/a | 0.10 | 0.0000 |
| Stability | 0.000 | 0.05 | 0.0000 |
| Total | 0.1100 → 11.00 |
Blend, equal weight per engine:
(42.46 + 40.00 + 11.00) / 3 = 31.15 → displayed as 31

Three things the decomposition reveals that the 31 hides
Gemini and Claude score almost identically for opposite reasons. Gemini was named half as often as Claude (20% vs 40% presence) but always named the brand first (prominence 1.00 vs 0.75). Two very different situations, four hundredths apart on the composite. Watch only the headline and an engine that mentions you rarely but always first looks exactly like an engine that mentions you twice as often, mid-list.
GPT-5.5's 11 is mostly a prominence and sentiment story. Its presence rate is identical to Gemini's: 20%, one confirmed mention out of five answers. It scores 29 points lower because that one mention landed last in a two-item list (prominence 0.00) and the sentiment judge returned not present on it, forfeiting the whole 10-point sentiment component. One short, terse answer cost nearly a third of that engine's score. Worth knowing, and invisible from the headline.
Stability is doing almost nothing, correctly. Two of three engines score 0.00 on stability, because with five answers each the Wilson half-width is as wide as the point estimate. Stability only becomes informative once you have enough repetitions to tell volatility apart from thin sampling, which is precisely the argument for running more prompts before trusting any of this.
Pooling vs blending: a five-point difference
Compute the same six components over all 15 answers pooled together and the composite comes out at 35.94. Blend the three per-engine scores and you get 31.15. Same data, same weights, 4.8 points apart.
Blending wins for one reason: pooling launders a weak engine. GPT-5.5's 11 is real information. It says a brand that reads well on Claude is nearly invisible on the engine with the largest user base. Pool the answers and that signal dissolves into an average no individual engine experiences. Published citation analyses put the overlap between ChatGPT and Perplexity at around one cited domain in ten, so treating engines as interchangeable samples of one population is an assumption the data won't support.
Blending costs you something: engines with few answers get as loud as engines with many. That's a real trade-off, which is why the per-engine breakdown is always expandable instead of buried, and why the roster and the blending rule both sit on the methodology page rather than in a footnote.
What the score is not
It doesn't compare across vendors. Every AI-visibility product picks its own components, weights, engine panel, prompt set and detection thresholds. Two scores for the same brand on the same day are two different measurements sharing a scale. Treat any cross-tool comparison as meaningless, including a favourable one.
It doesn't compare across methodology versions either, which is why every stored score carries a methodology_version stamp. When the weights change (and they will, once they're calibrated against a labelled gold set), old scores stay interpretable because you can see which formula produced them.
And it isn't a rate. Loo.koo.mas scored 31 with a presence interval of 10.9%–52.0%. A brand whose true presence is one in nine and a brand whose true presence is one in two would both plausibly produce this scan. The score summarises what was observed; the interval next to it summarises how much that observation is worth.
Recomputing your own score from the drilldown
Every number above is reproducible from data the app stores per answer, which means you can audit it:
- Open a completed scan and count confirmed mentions ÷ total answers → presence rate.
- For each confirmed mention, note the brand's rank and the number of brands in that answer →
1 − (rank−1)/(listLength−1), averaged → prominence. - Count your mentions ÷ mentions of every brand named anywhere in the set → Share of Voice.
- Count cited URLs on your domains ÷ all cited URLs → citation share.
- Map each confirmed mention's sentiment to 1 / 0.5 / 0 and average → sentiment score.
- Take the Wilson interval on presence →
1 − halfWidth/point→ stability. - Apply the six weights, multiply by 100, and repeat per engine before averaging.
If your arithmetic and mine disagree, the drilldown is the tiebreaker: the raw answers and citations are stored precisely so a disagreement can be settled instead of argued.
FAQ
Is the AI Visibility Score comparable between two different tools? No. Every vendor picks its own components, weights, engine panel and prompt set, so two scores for the same brand are different measurements that happen to share a scale. Only compare a score against earlier scores computed with the same methodology version and the same prompt set.
Why is the headline score a blend of per-engine scores rather than one pooled calculation? Because pooling hides per-engine reality. Scoring each engine separately and averaging preserves the fact that engines disagree, and it lets a single weak engine visibly drag the headline down instead of being smoothed away by a stronger one. In the worked example above the two approaches differ by nearly five points.
What is the stability component and why is it weighted so low? Stability is 1 minus the Wilson interval's half-width divided by the point estimate, so a presence rate that swings run to run scores near zero. It carries only 0.05 weight because at small sample sizes it's dominated by how few answers you bought rather than by genuine volatility. Treat it as a penalty, not a headline metric.
Can a brand with positive sentiment still score badly? Easily. Sentiment carries 0.10 weight and only gets measured on answers where the brand appears, so a brand mentioned rarely but described warmly earns the full ten points and still scores in the thirties. Sentiment tells you how you're described, never how often.