Methodology — how the numbers are built

The full picture of weights, freshness, noise filtering, and the trade-offs we accepted along the way.

8 min read

This page is the long-form reference for the choices behind every number on the dashboard. The shorter, feature-specific articles link back here when you want to see the reasoning underneath the headline.

Engine weights

GEO Score is a weighted average across the engines on your plan — up to five (Perplexity, ChatGPT, Google AI Mode, Gemini, and Google AI Overview), depending on your tier (see AI engines for the per-plan ladder). Each engine is weighted by how much it drives AI-led buyer discovery today:

0.35

ChatGPT

60% AI-search share, dominant chat audience

0.25

Google AI Mode

1.5B users / month — biggest reach

0.15

Gemini

Google's flagship model

0.15

Perplexity

Citation-rich, technical-buyer trust

0.10

Google AI Overview

The panel above classic results

The weighting is renormalised across whichever engines actually returned a result, so a plan with more engines isn't penalised.

Sources for the calibration (Q2 2026):

We re-evaluate weights quarterly. The current calibration replaced a 2025 default that overweighted ChatGPT (0.55) before Google AI Mode's public roll-out matured.

The visibility baseline (0.4)

The GEO Score formula multiplies Share of Voice by:

BASELINE + (1 − BASELINE) × avgQuality

with BASELINE = 0.4. Why 0.4 and not 0 or 1?

  • 0 would mean a "pure quality" score — being cited at quality 0.40 would count for ~16% of being cited at 1.00, which feels punitive given that "you're in the answer at all" is the hard part.
  • 1 would mean visibility alone is the whole signal — quality framing wouldn't move the score, which we know matters for buyer signal (a top-list citation is genuinely more valuable than being option 7 of 12).
  • 0.4 lands the score where being cited with no qualitative lift is worth 40% of the credit available, and a strong recommendation takes you the rest of the way. The 0.4 baseline still leaves 60% of the score driven by quality — quality matters, but isn't a binary gate.

Confidence weighting — not every prompt counts the same

Before a scan result enters either average, it is weighted by how much we trust the prompt that produced it. A prompt we have verified as a genuine fit for your product carries its full weight; one still "worth tracking" carries 0.7; one we have judged off-target carries 0.3. A prompt we have not classified yet is neutral at 1.0, so a new account is never penalised for questions the Confidence Coach has not reached.

This is why deleting a bad prompt and re-scoring can move the number more than the raw mention counts suggest: an off-target prompt was already contributing at 0.3 of a normal one.

AI citation quality buckets

We classify each AI citation into one of four buckets and assign a quality score (0–1):

BucketQualityRule of thumb
not_mentioned0.00Brand absent.
mentioned0.40Named in passing or as part of a list.
recommended0.70Singled out positively.
top_recommended1.00Top-of-list, dedicated section.

A small classifier handles ambiguous cases. Most AI citations resolve deterministically from sentence patterns (X is the best, X | Static sites & Jamstack, listicle position). The bucket names above (not_mentioned, mentioned, …) are the internal type values stored in the database — the user-facing label is "AI citation" with the quality tier shown alongside.

Noise filtering

Auto-discovery for Competitor tracking applies four filters before persisting a hostname:

  1. Self-citation drop — your own domain.
  2. Generic blocklist — 126 publishing, aggregator, and infrastructure hosts (Wikipedia, Reddit, GitHub, Medium, news outlets, generic agency listicle sites).
  3. Subdomain prefix filterblog., docs., news., learn., partners., community., developer., tutorials., articles., guide(s)., support., help., resources., forum(s)., press..
  4. TLD whitelist — pseudo-domains the regex parser sometimes picks up (next.js, node.js) are dropped.

The full blocklist is reviewed every release. If a real competitor is caught by accident, you can add it back manually via the Add competitor dialog.

Data freshness

MetricRefresh cadence
GEO Score (Overview hero)Weekly per monitored prompt — the pulse cron wakes daily at 08:00 UTC and runs whatever is due. Hero Prompts refresh daily.
Share of Voice (formerly "Mention Rate")Same as GEO Score.
Discovery Readiness (Page health)Weekly — content audit Monday 07:00 UTC, crawlability Sunday 03:00 UTC, plus on-demand re-run.
Content audit per-page rowsSame as Page health.
Competitor share of voice30-day rolling window, recomputed at every dashboard load (no nightly job).
"Where you lose"30-day rolling window, recomputed on load.
Citation excerpt searchReal-time over 90-day window — no cache.
Trend chartsSnapshot per scan; weekly deep scan adds a stable point.

A weekly pulse scan measures each due prompt several times and averages the reps; Hero Prompts are pinned to daily so genuinely fast movers are still caught between weekly runs. Manual scans always count toward the score and refresh dashboard numbers immediately.

Honest limitations

Where the numbers live

Everything described here is computed from rows in your Supabase project, scoped to your user via row-level security. We never share data across tenants. No third party sees your raw answer text.

If you want to read the actual sentences behind any signal, the Citation excerpt search is the entry point.

The visibility stack, top to bottom

The dashboard layers are deliberately ordered from "can AI find you at all" up to "how is AI talking about you":

  1. Discovery (gate). Can the AI bot fetch your site? Covered by How AI bots discover your site and the AI Crawlability Monitor — if robots.txt or X-Robots-Tag: noindex blocks the bot, every layer above is blind.
  2. Page health (structural). What can the bot make sense of once it fetches? Covered by Content audit — schema, headings, citations, freshness.
  3. AI citation quality (semantic). When the AI does cite you, what is it saying? Covered by AI citation vs. source URL and the GEO Score calculation.
  4. Competitive context (relative). Who is AI citing instead of you? Covered by Competitor tracking.

A "0 AI citations" result on the GEO Score is most often a layer-1 problem, not a layer-3 problem. Always check Crawlability first.