How the geo-score is calculated
Every geo-score is computed from the AIV rubric v1.1, a published, versioned specification of what is measured, what each tier needs and what it is worth. The CLI implements it exactly: check ids, points, tiers, bands and the gate cap equal the rubric's JSON, and a test in the repository fails if they drift. This page summarises the rules; the full text is rubric/v1.1.md.
What are the scoring rules?
- Sample. 8 URLs: the homepage, two main product or service pages, two documentation or knowledge pages, and three recent content pages. A site with fewer pages is scored on all of them, and the report says so.
- Tiers, not pass or fail. Each check has 2 to 4 tiers, and each tier names a count out of the sampled pages, so two people scoring the same site agree on the arithmetic. A site gets the highest tier the evidence actually satisfies.
- Three states. A check is scored, unobservable or not applicable. The last two leave the denominator, and the report reads "points out of observable maximum".
- Gates. The three
g.checks score normally and also cap the result, but only when one of them scores zero: the normalised score then cannot exceed 40. - Bonus. Four
b.checks add to the numerator only, up to +6, and the score never exceeds 100. - Substance over format. A heading matches question intent if a person would ask it that way, not because it ends with a question mark.
- Chinese-language pages. Answer passages are judged at 50 to 200 characters instead of 25 to 120 words.
- Evidence. Every check carries an observation someone else can reproduce: a status code, a count, the sentence that did or did not qualify.
Which checks are in the rubric?
21 scored checks in five pillars total 100 points. Gates are marked; the last column says whether the CLI reads a check by rule, approximates it with a heuristic, or leaves it out.
| Check | Id | Points | Tiers | How the CLI reads it |
|---|---|---|---|---|
| Reachable · 15 points | ||||
| Retrieval crawlers allowed in robots.txt gate | g.robots | 5 | 0 / 3 / 5 | by rule |
| Reachable to retrieval user-agents gate | g.reachable | 5 | 0 / 3 / 5 | heuristic |
| Main content server-rendered gate | g.ssr | 5 | 0 / 3 / 5 | heuristic |
| Understandable · 22 points | ||||
| Sitemap discoverable and fresh | p1.sitemap | 4 | 0 / 2 / 4 | by rule |
| llms.txt present and structured | p1.llms-txt | 5 | 0 / 2 / 4 / 5 | by rule |
| Organization + WebSite sitewide | p1.organization | 6 | 0 / 3 / 5 / 6 | by rule |
| BreadcrumbList on nested pages | p1.breadcrumb | 3 | 0 / 2 / 3 | by rule |
| Page-type schema where applicable | p1.page-type | 4 | 0 / 2 / 4 | by rule |
| Content Citability · 35 points | ||||
| Self-contained answer passages | p2.answer-passages | 9 | 0 / 4 / 7 / 9 | heuristic |
| Headings match how people ask | p2.question-intent | 7 | 0 / 3 / 5 / 7 | heuristic |
| Freshness signal present | p2.freshness | 6 | 0 / 3 / 6 | heuristic |
| Statistics carry a source | p2.sourced-stats | 7 | 0 / 3 / 5 / 7 | heuristic |
| Named, verifiable authorship | p2.named-author | 6 | 0 / 3 / 6 | heuristic |
| Brand Credibility · 18 points | ||||
| Third-party listings | p3.listings | 4 | 0 / 2 / 3 / 4 | not read; leaves the denominator |
| Independent mentions | p3.mentions | 4 | 0 / 2 / 3 / 4 | not read; leaves the denominator |
| Knowledge-graph entity | p3.knowledge-graph | 4 | 0 / 4 | by rule |
| sameAs complete and resolving | p3.sameas | 3 | 0 / 2 / 3 | by rule |
| Video and multimodal presence | p3.video | 3 | 0 / 2 / 3 | heuristic |
| Answer Fit · 10 points | ||||
| Content shaped for extraction | p4.answer-shape | 4 | 0 / 2 / 4 | heuristic |
| Coverage of the questions people ask | p4.question-coverage | 4 | 0 / 2 / 3 / 4 | not read; leaves the denominator |
| Chinese engine readiness | p4.cn-engines | 2 | 0 / 1 / 2 | by rule (Chinese-language sites only) |
| Bonus · outside the denominator, up to +6 | ||||
| llms-full.txt | b.llms-full | +2 | met or not | by rule |
| ai.txt | b.ai-txt | +2 | met or not | by rule |
| GEO link tags | b.geo-link | +1 | met or not | by rule |
| speakable markup | b.speakable | +1 | met or not | by rule |
What do the bands mean?
The bands come from the AEO readiness ladder published by GW Content, which also states that most business websites score between 30 and 55. Band names describe a stage, not a verdict.
| Score | Band | What it means |
|---|---|---|
| 83–100 | Leading | Already ahead. The work shifts from building to holding and widening the lead. |
| 66–82 | Solid | Foundations are in place. What is left is content depth and brand assets. |
| 51–65 | Growing | Most of the work has started. What is missing is consistency across the site. |
| 31–50 | Early | Clear gaps in the basics — most of them are days of work, not quarters. |
| 0–30 | Not started | Nothing has been built for AI retrieval yet. The largest headroom of any band. |
Why are there two scores, never one?
Readiness, the 100 points, is what the site owner can change and what an outsider can observe. Citation performance is whether engines actually cite the site when asked real questions. It is an outcome of readiness and time, and asking the same question twice gives different answers, so it is reported beside the score and never folded into it. Levels 2 and 3 of geo-score measure it with your own API keys.
One reason it stays out: in a study of repeated prompts within 24 hours, the sources cited by two runs of the same prompt overlapped by a mean Jaccard of 0.32 to 0.43 in each of four industries, in one market with four engines pooled (Schulte et al. 2026, §5).
What does each weight rest on?
Every check declares its evidence basis (published research, a vendor's own documentation, field observation, or a convention no engine has confirmed using), with sources and the date they were last verified, in the evidence table. Two findings shaped the weights most:
- In a simulated engine, rewriting one source at a time to cite sources, add statistics or quote experts raised that source's share of the answer by up to about 40%, measured as position-adjusted word count; an authoritative tone gave no significant improvement (Aggarwal et al., KDD 2024). The gain does not carry over cleanly: a later benchmark that measures citation rank found most published methods gave no significant gain (C-SEO Bench, §6.2).
- The
llms.txtcheck follows the llms.txt proposal by Answer.AI, a convention no engine has confirmed using; the evidence table says so.
The thinnest support is for p2.answer-passages, p2.question-intent and p1.llms-txt, and the table names them.
How do I challenge a weight?
Open a rubric proposal with your evidence. Evidence about the weights is the contribution the project wants most. A new rubric version is not comparable with the old one, which is why every report states the version it was scored against: "71 (v1.1)" is a claim, "71" is not.