How we calculate your scores
Methodology v6.8 · last updated 22 September 2026
Maveriko measures readiness, not outcomes. Every number is built from the checks below — each one emits human-readable evidence and cites the published authority its rule comes from, and this page is generated from the same registry the engine runs, so it can never drift from reality.
Three different questions
Most “AI SEO” tools blur these together. We keep them apart, because they have different answers and different fixes.
SEO Health
Measured here
Can search engines crawl, index and understand this page? Indexability, on-page elements, performance proxies, security and links.
AI Readiness (GEO)
Measured here
Is this page technically and semantically prepared to be retrieved, understood and quoted by an AI engine — and is the brand a resolvable entity at all?
AI Visibility
Not measured
Do AI engines actually mention, recommend or cite this brand right now? That requires querying those engines live and repeatedly.
We do not report an AI Visibility score. A high AI Readiness score means this page is prepared to be cited — it is not evidence that any engine cites you today. Measuring that honestly means running real prompts across engines many times over (answers vary run to run), so we would rather show nothing than synthesize a number. Entity Authority is the closest real proxy we can measure without those APIs, and it is labelled as exactly that.
We report no entity rather than the wrong one. When the engine cannot establish which organisation a page belongs to, Entity Authority is shown as not established — never as a score borrowed from whichever known brand happened to share a word with the page title. A wrong entity is worse than none: every off-page point it awards belongs to someone else, and the fixes it suggests would be aimed at the wrong name.
SEO Health — 100 points
Indexability & Crawlability16 pts
- Page is indexablecritical6
- Valid robots.txt2
- XML sitemap3
- Canonical tag5
On-Page Elements26 pts
- Exactly one H15
- Logical heading hierarchy4
- Title tag length6
- Meta description5
- Image alt text coverage3
- Mobile viewport meta3
Content Depth & Quality18 pts
- Content depthcritical7
- Text-to-HTML ratioestimated4
- Subheadings break up the content4
- Title and H1 describe the same thing3
Delivery signals22 pts
- HTML document sizeestimated5
per web.dev · LCP
- Text compression4
- Render-blocking resourcesestimated5
- Images have dimensions (CLS)4
per web.dev · CLS
- Server response timedirectional4
per web.dev · TTFB
Security & Trust8 pts
- Served over HTTPScritical4
- HSTS header1
per MDN · HSTS
- No mixed content3
Link Architecture10 pts
- Descriptive anchor text4
- Internal links4
- External links2
AI Readiness, on-page half — 100 points
The headline AI Readiness score blends this on-page half (60%) with off-page Entity Authority (40%) — Wikipedia and Wikidata presence, sameAs linking and self-declared identity. If those lookups fail, the score falls back to the page half alone; a network error is never reported as a low score.
AI Retrievability13 pts
- AI crawler access10
- llms.txtexperimental3
per llms.txt spec
Structured Data34 pts
- Valid JSON-LD10
- Schema describes what this page is12
per schema.org · Google · Structured data feature gallery · Google Search Central
- Schema carries the fields engines use12
per Google Search Central · Google · Product structured data · Google · Local business structured data
Semantic Formatting16 pts
- Bullet listsexperimental6
- Numbered listsexperimental5
- Data tablesexperimental5
E-E-A-T Signals22 pts
- Author byline8
- Publication / update dates7
- Links to authoritative sources7
Direct Answer Readiness15 pts
- Direct answers open each sectiondirectional8
- Clear, confident prosedirectional7
Critical gates
Some failures cap the whole pillar, because no amount of polish elsewhere compensates. Additive scoring alone would rate a noindex page in the 90s and mislead you.
| Condition | Effect |
|---|---|
| This page is set to noindex | SEO score capped at 40 |
| This page has too little content to rank | SEO score capped at 65 |
| This page is not served over HTTPS | SEO score capped at 60 |
Fairness rules
- Not-applicable ≠ fail. A homepage isn’t penalised for lacking an author byline, and a page with no images isn’t penalised on alt text — inapplicable checks leave both sides of the calculation and the rest renormalise.
- Language-aware, worldwide. The prose-quality heuristics (readability, passive voice, hedging) are English-specific; on non-English pages they’re excluded rather than scored as noise, so a page isn’t penalised for the language it publishes in. Every other check — indexability, schema, performance, security, links, AI-crawler access — is region- and language-agnostic, and entity lookups use the brand’s own localized Wikipedia. The report shows a “fair scoring” note whenever a non-English page is detected.
- Confidence is labelled. Every finding is tagged: high = measured directly from markup or headers; medium = structural inference; low = heuristic estimate — directional.
- Experimental signals are capped. Some widely-repeated “AI SEO” advice has no published confirmation behind it. Those checks are marked experimental and together carry at most 20 of the 100 AI-Readiness points, so no amount of llms.txt-and-bullet-lists can inflate a score past a page that is genuinely well-structured and trustworthy.
Evidence levels
Two different questions get confused constantly, so we track them separately. Confidence is how sure we are of the measurement. Evidence is how sure the industry is that the thing measured actually matters. A bullet-list count is measured perfectly (high confidence) while the claim that bullet lists win citations is unproven (experimental evidence).
High
Documented by Google, schema.org or an RFC.
44 of 100 AI-Readiness points
Medium
Long-standing, well-supported practice.
37 of 100 AI-Readiness points
Experimental
Plausible convention, no published confirmation.
19 of 100 AI-Readiness points
What we deliberately don’t claim
- Rankings. Live rankings depend on backlinks, domain authority, age and competition — off-page factors a single page fetch cannot see. A high SEO score means the controllable part is done.
- Guaranteed AI citations. No one can promise ChatGPT will cite you. Our checks measure the structural properties that improve your chances of being discovered, understood and cited by AI systems.
- Lab Core Web Vitals. Performance checks are structural proxies from one fetch (weight, compression, blocking resources, response time) — not a headless-browser Lighthouse run.
- Actual AI visibility — whether engines name, recommend or cite your brand for a given prompt — requires querying those engines live and repeatedly. We publish no number for it (see Three different questions). Entity Authority measures the groundwork such tracking would build on.
Changelog
The scoring is versioned. When a weight, gate or threshold changes, it’s recorded here.
v6.822 Sept 2026
AI crawler access is now judged for the page being audited. For each AI crawler we take its own robots.txt group, or the wildcard group when it is not named, and match those rules against the page's path. Previously any Disallow line in a named AI crawler's group cost 2 of the check's 10 points on every page of the site, so closing only /api/ or account pages to GPTBot lost points on pages GPTBot could fetch — while a page that really was closed to it by path scored the same 8 of 10. Now a page every AI crawler can fetch scores full marks, a page closed to an AI search crawler scores 0, and a page closed only to training crawlers scores 6 of 10. The report's crawler card shows the same per-page verdict.
v6.731 Aug 2026
Entity Authority is now scored on the part of it that could be measured, instead of being withheld whole. When a site declares no brand name in its markup we cannot look it up on Wikipedia or Wikidata — but the other 60 points ask what the page's own markup declares, which needs no name and is answerable everywhere. Those two lookups now leave the denominator and the score reads, for example, 0 of 60. Previously the whole pillar was suppressed, which discarded the most actionable finding such a site has: that it declares no Organization schema at all. The headline AI Readiness score also now carries its real basis — scoredOutOf and coverage account for the off-page half, which they never did, so a report could claim 100 points and 93% coverage with 40 of those points unmeasured.
v6.628 Aug 2026
Entity Authority stopped punishing businesses for not being in an encyclopaedia. The off-page half rested on Wikipedia and Wikidata for 55 of its 100 points, and the two remaining signals were read out of the page's own markup and never checked — a site could list any profile URL it liked and collect full marks, while a site whose links had rotted collected the same. The result was a measurement of encyclopaedic fame rather than of whether an entity resolves: without a Wikipedia article the ceiling was 65, and without Wikipedia and Wikidata it was 45, below the threshold at which the report described a brand as recognised. No amount of independent evidence could lift a legitimate local business past it, and the report rendered the missing article as a red failure mark. Wikipedia's own notability bar excludes the overwhelming majority of real companies. Declared profiles are now fetched, and the outcome has three states rather than two, because measurement showed two would be wrong: LinkedIn, Wikipedia, Wikidata and X answer 200 for a real profile and 404 for an invented one, so those can be verified; Crunchbase and Bloomberg refuse every automated request, and Instagram answers 200 for accounts that do not exist, so those are recorded as unverifiable and keep partial credit rather than counting as absence — penalising a site for another company's bot policy is the same false negative the model exists to avoid. A declared profile that returns 404 is a real finding and is named. What counts as independent narrowed at the same time: a third party has to be asserting that the business exists. Company registries, business databases, review platforms and LinkedIn company pages qualify; a YouTube channel, a GitHub organisation, an X account and a Facebook page are four more things the business published about itself and corroborate nothing between them. Weights moved with the evidence — Wikipedia 35 to 25, Wikidata 20 to 15, corroboration 25 to 35, self-declared identity 20 to 25 — so two resolving independent profiles and complete Organization schema now reach 60 with no Wikimedia presence at all. Every report also publishes an entity tier (not found, declared, corroborated, established), and the narrative reads the tier rather than a numeric threshold, so it cannot silently break the next time the weights move. Measured across seven live sites: those with corroborated independent profiles rose by ten points, those credited only for self-published social accounts fell by around ten, and one site that declared no profiles at all fell fifteen. Entity scores from before this version are not comparable.
v6.526 Aug 2026
The engine now runs a browser when the page needs one, and stops publishing scores for pages it never actually reached. Three corrections, all found by auditing large public sites against their own competitors. First and largest: a page that injects its structured data with JavaScript ships none of it in the HTML a crawler receives, so all three structured-data checks returned not-measurable and the whole Structured Data category — 34 of the 100 AI Readiness page points, the heaviest block in the score — was dropped from the denominator. The arithmetic was right and the result was not: one measured site's page half was scored out of 66 points while a competitor's was scored out of 100, and the two numbers were printed side by side as though they were the same measurement. A small company appeared to lead a company a thousand times its size on AI readiness, purely because its markup was server-rendered and the larger one's was not. Such pages are now rendered in a headless browser before scoring; the measured case moved from 53 to 65 and the ranking between the two reversed. Rendering runs only when the static HTML proves it is needed — client-injected markup, or an empty shell — so sites that server-render everything are untouched and pay nothing for it, and a render that fails leaves the static scores standing, labelled a lower bound rather than presented as findings. Page weight, text-to-HTML ratio and server response time still come from the original server response, because those are questions about what the origin sent rather than about what a browser eventually assembled; and the client-side-rendering caps still apply, because many AI crawlers genuinely do not execute JavaScript. Second: every report now carries the denominator each pillar was actually normalised over, and a comparison refuses to name a winner on a pillar whose two sides used different ones. Third: entity resolution. A brand named in a single word was never looked up at all, because the resolver only offered the first two and three words of a page title — one measured company with its own Wikipedia article scored zero for entity authority — and an og:site_name containing nothing but the site's own hostname was being accepted as a declared brand name. A one-word candidate is now offered when the domain corroborates it, compound domains are split using the page's own title rather than a dictionary, and when the brand could never be identified at all the entity half returns no score instead of a confident zero: the same treatment a failed lookup already received, since an unverifiable guess and a network error are the same false negative arriving by different routes. Separately, an anti-bot interstitial served in place of a page is now detected and refused. One major site answered our fetcher with a 37-word challenge page and received a full published score computed entirely from markup nobody there wrote. A scan blocked this way costs the user nothing. Scores from before this version are not comparable for pages that render their markup client-side, which rise, or for single-word brands that were previously unresolvable, which also rise.
v6.426 Aug 2026
Coverage pass: the engine now grades a page as the kind of page it is. Structured data was scored against a hardcoded set of three types — Organization, Article and FAQPage — which is the profile of a blog and of nothing else. A flawless e-commerce product page carrying Product, Offer, AggregateRating and BreadcrumbList scored 0.3 out of 12 for "JSON-LD present but no priority types", then lost a further 12 because completeness had nothing it recognised to check; a five-page brochure site with one Organization block beat it on both. That is not a measurement of markup quality, it is a measurement of resemblance to an article. Schema is now read against a catalogue of eighteen families across three slots — who publishes this (Organization, LocalBusiness, Person), what the page IS (Product, Article, Event, Recipe, Course, JobPosting, SoftwareApplication, Service, VideoObject) and what else can be lifted from it (FAQ, HowTo, QAPage, Breadcrumb, ItemList, WebSite) — and each family is validated against the fields Google requires and recommends for that type, with the missing required ones named in the evidence rather than summarised as a percentage. A local business is now checked for address, telephone, opening hours and geo, which our own industry guidance had been telling local businesses mattered while the engine scored them against Organization's property list and never looked. Separately, the thin-content gate became archetype-aware: 300 words is the right bar for a page competing on an informational query and the wrong bar for a dentist's homepage or a product listing, so a page declaring COMPLETE LocalBusiness, Product, Event, Recipe or JobPosting data — complete meaning every field Google requires, since a bare @type with no offers is a tag rather than a product page — is held to 150 instead. A measured local-business page moved from 65, capped as too thin to rank, to 84. Finally, client-side rendering became a scoring gate in its own right. Content checks correctly return not-measurable on a JavaScript-rendered page, but the consequence was that the whole content category left the denominator and its critical cap could never fire, so a shell with no readable text scored on configuration alone. AI Readiness is now capped at 55 for such pages, because AI crawlers do not execute JavaScript and an unrendered page is the finding rather than a gap in our measurement; SEO Health is capped at 80, because Googlebot does render and there the unread content really is our blind spot. Scores from before this version are not comparable for product, local-business, event, recipe and job pages, which rise, or for client-rendered pages, which fall.
v6.326 Aug 2026
Correction to what counts as content, and it was a large one. The engine decided which part of a page to read by taking the first <main> or <article> element it found. On any page that uses <article> for feature cards — the dominant pattern in modern site templates, and correct HTML by the specification — that bound the entire content measurement to a single card. One measured site carried roughly 1,400 words across eleven sections and was scored on 34 of them, which tripped the thin-content gate and capped its SEO Health at 65. The perverse consequence is worth stating plainly: a page built from unlabelled <div>s fell back to reading the whole document and scored correctly, while the same page marked up semantically scored as nearly empty. The engine was penalising the structure it recommends. A landmark is now trusted only when it actually holds the page's text — a <main> carrying at least a quarter of the body's words, or a sole <article> carrying at least half — and a page with two or more <article> elements is always read whole, because there is no basis for electing one card as the content. Separately, the body-text measurement now counts every visible word rather than a whitelist of paragraph, list and table tags: card layouts carry much of their copy in spans and divs, and no tag whitelist anticipates every template. Navigation, headers, footers and asides are still excluded so menu links cannot pad a thin page. Clarity checks are unaffected — they still read paragraph prose only, because sentence-level heuristics need real sentences. Scores from before this version are not comparable for card-style and section-based pages; they rise, in the measured case from 65 to 88. Every fixture is now score-locked in the test suite, so a change of this kind cannot ship again without being deliberate and declared.
v6.224 Aug 2026
Three corrections, all found by auditing our own site with our own engine. First, the text-to-HTML ratio was recalibrated. Its bands were set for an era of hand-written markup, and measured across seventeen real pages nothing modern cleared them: Wikipedia's article on search engine optimization scored 10% and Moz's beginner guide 11%, and both were told that markup crowded out their content. A check that calls Wikipedia bloated is measuring the era rather than the page — framework-rendered documents ship a hydration payload the author cannot remove, routinely 60% of the bytes. The bands are now 15/8/4 against the old 25/15/10. The floor is unchanged, so the genuinely bloated pages in the sample still score at the bottom, while the top band became reachable by a lean text-first page as it was always meant to be: paulgraham.com measures 84%, danluu.com 40%, text.npr.org 28%. Second, the authoritative-outbound check now accepts developers.google.com, web.dev and developer.mozilla.org. Their absence was an internal contradiction: this engine grounds its own rules in Google's documentation fifteen times over, web.dev six times and MDN twice, while refusing to count any of them when a user cited the same page. For a claim about what Google rewards, Google's documentation is the authority. Third, a reporting bug in entity resolution: when no public entity matched, the report named whichever brand guess had been tried last rather than the one the site declares. A page titled "Why isn't your website ranking?" had its brand reported as "Why Isn't My" while its Organization schema plainly said otherwise. Scores were never affected — every signal is computed from the lookup result and the page's own markup — but the name shown to the reader was one that was never theirs. Text-to-HTML scores from before this version are not comparable; most pages rise by one band.
v6.123 Aug 2026
Added site-wide crawling. Until now every score described a single URL, which made a whole class of the most common SEO defects invisible: a title tag repeated across six pages, an internal link that 404s, a page listed in the sitemap that nothing links to, or a site where nineteen of twenty pages are too thin to rank. None of those can be seen from one page, however good the per-page checks are. A crawl follows up to 25 pages from the URL you give it — sitemap and links both — and scores twelve site-level checks that have no single-page equivalent. Site Health is 60% the aggregate quality of the individual pages (every check on every page, summed into one numerator and one denominator, rather than an average of averages that would let one good page hide nine bad ones) and 40% those site-level checks. The per-page SEO score is unchanged. Sitemap handling was rebuilt to follow every sitemap a site declares rather than only the first, and to recurse into sitemap index files — measured against real sites, one declared three sitemaps and another served an index of six, so previously we read a fraction of the first and none of the second. The crawler obeys robots.txt path rules and Crawl-delay, stays on the site it was pointed at, and reports pages it was asked not to fetch as skipped rather than failed. Crawls are capped at 25 pages and every report states how many pages were found versus crawled — a sampled site is never presented as a covered one.
v6.023 Aug 2026
Discrimination pass on SEO Health. Measurement across real sites showed the score could not tell a good page from a merely well-configured one: every modern site builder ships a sitemap, a canonical, HTTPS and a viewport tag, so Indexability scored 24/24 on essentially every site audited and roughly half the SEO score was awarded for work nobody did. Five-page brochure sites were scoring 86. Weight moved out of the categories a CMS satisfies by default — Indexability 24→16, Link Architecture 16→10, Security 10→8, On-Page 28→26 — and into a new Content Depth & Quality category worth 18 points: word count, text-to-HTML ratio, subheading coverage, and whether the title and H1 describe the same topic. Thin content is now a critical gate: under 300 words of body text caps SEO Health at 65, because a page with almost nothing on it cannot rank however clean its markup. Several existing checks stopped handing out free marks — a single heading no longer scores full points for 'logical hierarchy', five internal links no longer clears the bar (15+ does), and links to your own social profiles no longer count as citing a credible source. All four content checks return not_measurable rather than 'thin' on a client-rendered page, so the engine never blames a site for markup our static fetch cannot see. Scores from before this version are not comparable: technically tidy pages with little content fall substantially, typically 15–20 points.
v5.015 Aug 2026
Validity pass. The engine no longer scores a site down for markup it could not read. Structured data injected by JavaScript is now detected and reported as not_measurable instead of missing — previously that cost a page all 34 structured-data points for schema it demonstrably ships, and cost the entity score a further 45, because sameAs and self-declared identity are read from the same unreadable markup. Both now drop out of the denominator and the remaining signals normalise up. Schema completeness returns not_applicable when there are no priority schemas to assess, instead of failing: absence was being charged three times across 34 points. The client-side-rendering heuristic gained an absolute text floor, so a page with substantial server-rendered prose is no longer called an empty shell merely because a large hydration payload pushes its text ratio under 2%. Entity lookups now try the page title before the domain label, and reject matches that are disambiguation pages or whose Wikidata description marks them as something other than an organisation — a two-letter domain label was matching a Unicode character and scoring it as brand authority. Scores from before this version are not directly comparable; sites whose schema is client-rendered will rise.
v4.012 Aug 2026
Separated the three questions the product answers: SEO Health, AI Readiness (formerly the GEO score) and actual AI Visibility — which we do not measure and will not synthesize. Added an evidence level to every check (high / medium / experimental) alongside the existing measurement-confidence tag, and rebalanced the AI Readiness page half from 15/30/25/15/15 to 13/34/16/22/15: experimental signals (llms.txt, bullet lists, numbered lists, tables) fell from 30 to 19 of 100 points, with the weight moving to structured data and E-E-A-T. Scores from before this version are not directly comparable.
v3.112 Aug 2026
Every check now cites the authority its rule is based on (Google Search Central, schema.org, web.dev, the published AI-crawler docs). Reports link out to independent verification tools.
v3.011 Aug 2026
Rebalanced SEO to 24/28/22/10/16 across Indexability, On-Page, Performance, Security and Links. Added critical gates (noindex, non-HTTPS), the confidence model, and language-aware scoring so non-English pages aren't penalised on English-only prose checks.
v2.011 Aug 2026
Split the GEO score into Entity Authority (40%, off-page brand presence via Wikipedia/Wikidata) and Page Readiness (60%, on-page). A failed entity lookup returns null, never zero.
