Methodology

How we calculate every number

Every score in the dashboard, with its formula, its inputs and where they come from. If an input is missing, the score is blank, never a guess.

Three kinds of number

Readings

Clicks, impressions, sessions, AI answers, crawl findings. Shown as the source gives them, with the source and the window on hover.

Our scores

Calculated from readings only, by the formulas below. Each has a published or statistical basis, not a list of points we made up.

Vendor scores

A number a named service calculates, such as Mozilla's security grade. Shown as theirs, never blended into ours.

Model guesses are not shown as numbers: no AI-estimated search volumes, no predicted lift, no model-graded scores. Hover any tile in the dashboard to see where its number comes from.

The overall grade

The Report Card grade and the Growth score are the same number.

overall = Σ w × score / Σ w, over the parts measured
site health 0.25, AI readiness 0.2, search visibility 0.3, AI mention rate 0.25
  • Blank unless at least 3 of the 4 parts are measured.
  • Grades: A from 90, B from 80, C from 70, D from 60, F below.
  • These weights are our judgement, the one place in the dashboard where they are. Engagement, conversions, AI referral traffic, freshness and sentiment are shown as readings and do not move the grade, because they have no universal good level.

Your site

Site health

How much of the site passes the technical checks, with the serious ones counting most?

health = 100 × Σ w × pages passing / Σ w × pages crawled
w by severity: high 1, medium 0.3, low 0.1
  • Every scored check on every page of the last site crawl.
  • Severity is set per check from Google Search Central documentation.

Blank when: No finished crawl yet.

AI readiness

Can AI engines read and quote this site?

readiness = 100 × Σ w × pass / Σ w × checks we could read
w: required by the engines' docs 3, published research 2, platform guidance 1, our own tips 0
  • Required (3): Googlebot, OAI-SearchBot, PerplexityBot and Bingbot allowed in robots.txt, read per user-agent group; the homepage indexable; snippets allowed; the homepage in the Bing index when Bing Webmaster is connected.
  • Research (2): citable passages on the homepage, passing in proportion to their score.
  • Guidance (1): Organization or WebSite schema, a canonical link, the page language and sameAs profiles.
  • Tips (0): shown to help, never scored. llms.txt and /.well-known/ai files are reported only, because Google says they are not needed.
  • A failed required check is also stated above the score: AI engines cannot read the site until it is fixed.

Blank when: The homepage could not be fetched.

Page readiness (AI Readiness page)

Which pages are ready to be cited, page by page?

page score = 100 × Σ w × pass / Σ w over the answer-engine checks run on that page
ready to be cited: 85 or more
  • The last site crawl's per-page results on structured data, snippet eligibility, indexability, content depth and headings.
  • A noindex, nosnippet, robots block or soft 404 marks the page as blocked whatever its score.

Blank when: The crawler never reached the page.

Citable passages

How quotable is each passage?

passage = 100 × points / 93
quotation with attribution 30, statistic 23, cited source 20, self-contained answer 20
  • The points are the visibility lifts measured in Aggarwal et al., GEO: Generative Engine Optimization (KDD 2024).
  • A page is the mean of its passages; the site is the mean of its pages.

Blank when: No text long enough to score.

Content score (drafts)

Does this article cover the topic as well as what already ranks?

content = 100 × (0.5 × coverage + 0.3 × citability ÷ 100 + 0.2 × readability)
  • Coverage: the share of the terms used by at least 40% of today's top Google results that the article uses.
  • Citability: the passage score above, on the article.
  • Readability: 1 when the article's Flesch-Kincaid grade is within 2 of the top results' median, 0.1 less for each grade beyond.
  • The top results are read once per article and kept, so every save, humanise and fact-check re-scores against the same bar.

Blank when: Fewer than 3 top results could be read.

Search

Search visibility

Of the clicks the site could earn for the searches it already shows for, how many does it get?

visibility = 100 × clicks / (impressions × your own click rate at position 1)
  • Every query in your newest Search Console pull, last 28 days.
  • Your own click rate per position: the median over your queries, positions with at least 3 queries of 20 or more impressions.

Blank when: Your site has too few queries at position 1 to know its rate. We never borrow an industry curve.

Clicks at stake

How many clicks would this query add three places higher?

clicks at stake = impressions × (your click rate at max(1, position − 3) − current click rate), never below 0
  • Search Console, last 28 days.
  • Used for Fastest wins, the SEO Expert's actions and content priorities, so a query has one number everywhere.

Blank when: Your site has no click rate at the target position.

Potential clicks (keyword ideas)

What would this keyword be worth at position 3?

potential clicks a month = measured monthly volume × your own click rate at position 3
  • Volume from Google Ads Keyword Planner or DataForSEO, never a model's guess.
  • Within reach: ideas whose measured difficulty is at or below the hardest keyword you already rank top 10 for.

Blank when: The volume was not measured, or your site has no position-3 rate yet.

Measured lift from a fix

Did the fix change clicks?

lift = (fixed pages after − before) − (other pages after − before)
per page: log((clicks after + 1) / (clicks before + 1)), 21 days each side
  • Difference-in-differences against the rest of the site over the same days, so a season or a Google update cancels out.
  • The 95% range is a bootstrap: both groups resampled 2,000 times.
  • A figure is shown only when the range excludes 0. Otherwise: No measurable change yet. Before the window closes: Measuring, N days left.

Blank when: Fewer than 3 fixed pages, or fewer than 10 other pages with traffic.

AI answers

AI mention rate

How often do the AI engines name you?

mention rate = answers naming you / answers read
  • Real answers from the engines we query (ChatGPT, Perplexity, Gemini, Copilot and Google AI Mode where configured). Nothing is simulated.
  • Under 20 answers it reads Not enough answers yet, with the count.

Blank when: No engine has been asked yet.

AI share of voice

Of all the brand mentions in AI answers, how much is yours, with being named first counting most?

each answer naming k brands carries 1 + 1/2 + ... + 1/k
your share of it = 1 / your position; the rest is split among the others
share of voice = Σ your share / Σ answer weight
  • Real answers, last 90 days.
  • Rivals split the remainder equally, because only your own position is stored.

Blank when: No answers yet.

How AI describes you

When an engine names you, is the sentence positive, neutral or negative?

VADER compound score on the sentences that name you
positive ≥ 0.05, negative ≤ −0.05, neutral between
  • VADER: Hutto and Gilbert, ICWSM 2014, a published and validated sentiment lexicon.
  • Shown as the % positive, neutral and negative with the count; no blended score. Under 20 answers no split is shown.

Blank when: No answer has named you yet.

Elsewhere

Reddit thread opportunity

Which threads are about you and still active?

score = 100 × relevance × activity
relevance: BM25 (k1 1.2, b 0.75) against your brand profile, over the best match
activity: Reddit's own hot formula, rescaled over the threads shown
  • Threads matching nothing in the profile are hidden.

Blank when: No thread matched.

Amazon listing score

Does the listing use the words shoppers search for, where they count?

score = 100 × Σ volume × placed / Σ volume over the top 30 Amazon keywords
placed: first 80 title characters 1, elsewhere in title or bullets 0.6, backend terms only 0.3
  • Amazon's published listing rules (title length, banned characters, repeated words, backend bytes) are shown as pass or fail, not averaged in.
  • Keyword volumes from DataForSEO's Amazon data.

Blank when: No search data for the product.

Local rank grid

Across the area, how often are you in the map pack?

Share of Local Voice = grid points where you are top 3 / grid points
  • The average position is shown second, with the depth actually searched.
  • Profile actions are shown as a ratio of two counts Google keeps separately, not as a funnel. Profile completeness is a count, such as 9 of 11.

Blank when: No grid scan yet.

Vendor scores

  • Security grade: Mozilla HTTP Observatory's own score and grade. Our checks below it are findings, with no points.
  • Google Ads score: Google's own optimization score for the account. Wasted spend is the spend on search terms with no conversions that cost at least one cost per conversion.
  • Agentic readiness: is-agentic.com's score, stored so it can be trended.

Check your own AI readiness

The free checker runs the same AI readiness score as the dashboard, live against any URL.