Scan 10 pages all 51 scored tests The math

Scanned 11 Oct 2026, 12:02 AM CDT

reference.readinessindex.io

This is TEN7’s reference site: a hand-built implementation of the Index, scored by the same scanner as everything else. Visit reference.readinessindex.io

Your score
92/100
Exemplary

44 of 51 tests pass 8 points still on the table

Score over time

Sep 27 · 93−1 in 13 days

Index changed from 11.0 to 11.2 at this point.

Index changed from 11.2 to 11.3 at this point.

You · 92
NOT READY 0–39 WEAK 40–59 ADEQUATE 60–74 STRONG 75–89 EXEMPLARY 90–99

We ran all 51 scored tests across 7 dimensions, against the 10 pages we read.

Your site is in good shape, with a few gaps.

Every test is below, in order, with what we found. Nothing here asks you to rewrite your content.

Do these three first

The fastest 2 points on this report

1 +1
AIR-4.8 · medium effort

Can a crawler trust the dates in your sitemap?

11 of 11 sitemap URLs carry a lastmod across 1 distinct dates; 100% share 2026-10-08.

Do this: Wire lastmod to the node's changed timestamp. A lastmod driven by cron or by a deploy tells a crawler everything changed at once, which is the same as telling it nothing changed.

2 +0
AIR-5.4 · medium effort

Are your published and modified dates honest?

10 of 10 pages carry a publication or modification date across 1 distinct dateModified values.

Do this: Wire both dates to the node's own timestamps. A deploy must not move dateModified. If every page changed last Tuesday, the signal is telling a crawler nothing changed at all.

10 pages crawled

The work queue

All 51 scored tests, in order
Show
AIR-1.1 Can AI crawlers reach your site?All 10 AI agents may fetch content paths. Pass 5 pt
Why we test this

All 10 AI agents may fetch content paths.

Your robots.txt tells crawlers what they may read. One stale line, often copied from an old template, can shut out the assistants people now use to find you.

What we saw
URL: https://reference.readinessindex.io/robots.txt Paths: /: yes · /dimensions: yes · /contact: yes · /dimensions/primary-indicators: yes Blocked: no OAI-SearchBot Agent class: answer-serving ChatGPT-User Agent class: answer-serving PerplexityBot Agent class: answer-serving Claude-User Agent class: answer-serving GPTBot Agent class: training ClaudeBot Agent class: training CCBot Agent class: training Bytespider Agent class: training Google-Extended Agent class: directive-only Applebot-Extended Agent class: directive-only
AIR-1.2 Does your CDN let AI crawlers through?All 8 AI user-agents receive full content. Pass 5 pt
Why we test this

All 8 AI user-agents receive full content.

Even when robots.txt says yes, a firewall or bot rule can turn assistants away before they reach a page. We ask as each crawler and record what comes back.

What we saw
Status: 200 Size ratio: 100% Challenged: no Blocked: no https://reference.readinessindex.io/ Agent: OAI-SearchBot Agent class: answer-serving Body bytes: 12188 Baseline bytes: 12188 https://reference.readinessindex.io/dimensions Agent: OAI-SearchBot Agent class: answer-serving Body bytes: 7649 Baseline bytes: 7649 https://reference.readinessindex.io/contact Agent: OAI-SearchBot Agent class: answer-serving Body bytes: 7921 Baseline bytes: 7921 https://reference.readinessindex.io/dimensions/primary-indicators Agent: OAI-SearchBot Agent class: answer-serving Body bytes: 7719 Baseline bytes: 7719 https://reference.readinessindex.io/dimensions/rendering-and-extraction Agent: OAI-SearchBot Agent class: answer-serving Body bytes: 7600 Baseline bytes: 7600 https://reference.readinessindex.io/dimensions/structured-data Agent: OAI-SearchBot Agent class: answer-serving Body bytes: 7701 Baseline bytes: 7701 https://reference.readinessindex.io/dimensions/crawl-and-licensing Agent: OAI-SearchBot Agent class: answer-serving Body bytes: 7883 Baseline bytes: 7883 https://reference.readinessindex.io/dimensions/authorship-and-freshness Agent: OAI-SearchBot Agent class: answer-serving Body bytes: 7570 Baseline bytes: 7570 https://reference.readinessindex.io/dimensions/agent-interfaces Agent: OAI-SearchBot Agent class: answer-serving Body bytes: 7404 Baseline bytes: 7404 https://reference.readinessindex.io/dimensions/alternate-representations Agent: OAI-SearchBot Agent class: answer-serving Body bytes: 7717 Baseline bytes: 7717 https://reference.readinessindex.io/ Agent: ChatGPT-User Agent class: answer-serving Body bytes: 12188 Baseline bytes: 12188 https://reference.readinessindex.io/dimensions Agent: ChatGPT-User Agent class: answer-serving Body bytes: 7649 Baseline bytes: 7649 https://reference.readinessindex.io/contact Agent: ChatGPT-User Agent class: answer-serving Body bytes: 7921 Baseline bytes: 7921 https://reference.readinessindex.io/dimensions/primary-indicators Agent: ChatGPT-User Agent class: answer-serving Body bytes: 7719 Baseline bytes: 7719 https://reference.readinessindex.io/dimensions/rendering-and-extraction Agent: ChatGPT-User Agent class: answer-serving Body bytes: 7600 Baseline bytes: 7600 https://reference.readinessindex.io/dimensions/structured-data Agent: ChatGPT-User Agent class: answer-serving Body bytes: 7701 Baseline bytes: 7701 https://reference.readinessindex.io/dimensions/crawl-and-licensing Agent: ChatGPT-User Agent class: answer-serving Body bytes: 7883 Baseline bytes: 7883 https://reference.readinessindex.io/dimensions/authorship-and-freshness Agent: ChatGPT-User Agent class: answer-serving Body bytes: 7570 Baseline bytes: 7570 https://reference.readinessindex.io/dimensions/agent-interfaces Agent: ChatGPT-User Agent class: answer-serving Body bytes: 7404 Baseline bytes: 7404 https://reference.readinessindex.io/dimensions/alternate-representations Agent: ChatGPT-User Agent class: answer-serving Body bytes: 7717 Baseline bytes: 7717 https://reference.readinessindex.io/ Agent: PerplexityBot Agent class: answer-serving Body bytes: 12188 Baseline bytes: 12188 https://reference.readinessindex.io/dimensions Agent: PerplexityBot Agent class: answer-serving Body bytes: 7649 Baseline bytes: 7649 https://reference.readinessindex.io/contact Agent: PerplexityBot Agent class: answer-serving Body bytes: 7921 Baseline bytes: 7921 https://reference.readinessindex.io/dimensions/primary-indicators Agent: PerplexityBot Agent class: answer-serving Body bytes: 7719 Baseline bytes: 7719 https://reference.readinessindex.io/dimensions/rendering-and-extraction Agent: PerplexityBot Agent class: answer-serving Body bytes: 7600 Baseline bytes: 7600 https://reference.readinessindex.io/dimensions/structured-data Agent: PerplexityBot Agent class: answer-serving Body bytes: 7701 Baseline bytes: 7701 https://reference.readinessindex.io/dimensions/crawl-and-licensing Agent: PerplexityBot Agent class: answer-serving Body bytes: 7883 Baseline bytes: 7883 https://reference.readinessindex.io/dimensions/authorship-and-freshness Agent: PerplexityBot Agent class: answer-serving Body bytes: 7570 Baseline bytes: 7570 https://reference.readinessindex.io/dimensions/agent-interfaces Agent: PerplexityBot Agent class: answer-serving Body bytes: 7404 Baseline bytes: 7404 https://reference.readinessindex.io/dimensions/alternate-representations Agent: PerplexityBot Agent class: answer-serving Body bytes: 7717 Baseline bytes: 7717 https://reference.readinessindex.io/ Agent: Claude-User Agent class: answer-serving Body bytes: 12188 Baseline bytes: 12188 https://reference.readinessindex.io/dimensions Agent: Claude-User Agent class: answer-serving Body bytes: 7649 Baseline bytes: 7649 https://reference.readinessindex.io/contact Agent: Claude-User Agent class: answer-serving Body bytes: 7921 Baseline bytes: 7921 https://reference.readinessindex.io/dimensions/primary-indicators Agent: Claude-User Agent class: answer-serving Body bytes: 7719 Baseline bytes: 7719 https://reference.readinessindex.io/dimensions/rendering-and-extraction Agent: Claude-User Agent class: answer-serving Body bytes: 7600 Baseline bytes: 7600 https://reference.readinessindex.io/dimensions/structured-data Agent: Claude-User Agent class: answer-serving Body bytes: 7701 Baseline bytes: 7701 https://reference.readinessindex.io/dimensions/crawl-and-licensing Agent: Claude-User Agent class: answer-serving Body bytes: 7883 Baseline bytes: 7883 https://reference.readinessindex.io/dimensions/authorship-and-freshness Agent: Claude-User Agent class: answer-serving Body bytes: 7570 Baseline bytes: 7570 https://reference.readinessindex.io/dimensions/agent-interfaces Agent: Claude-User Agent class: answer-serving Body bytes: 7404 Baseline bytes: 7404 https://reference.readinessindex.io/dimensions/alternate-representations Agent: Claude-User Agent class: answer-serving Body bytes: 7717 Baseline bytes: 7717 https://reference.readinessindex.io/ Agent: GPTBot Agent class: training Body bytes: 12188 Baseline bytes: 12188 https://reference.readinessindex.io/dimensions Agent: GPTBot Agent class: training Body bytes: 7649 Baseline bytes: 7649 https://reference.readinessindex.io/contact Agent: GPTBot Agent class: training Body bytes: 7921 Baseline bytes: 7921 https://reference.readinessindex.io/dimensions/primary-indicators Agent: GPTBot Agent class: training Body bytes: 7719 Baseline bytes: 7719 https://reference.readinessindex.io/dimensions/rendering-and-extraction Agent: GPTBot Agent class: training Body bytes: 7600 Baseline bytes: 7600 https://reference.readinessindex.io/dimensions/structured-data Agent: GPTBot Agent class: training Body bytes: 7701 Baseline bytes: 7701 https://reference.readinessindex.io/dimensions/crawl-and-licensing Agent: GPTBot Agent class: training Body bytes: 7883 Baseline bytes: 7883 https://reference.readinessindex.io/dimensions/authorship-and-freshness Agent: GPTBot Agent class: training Body bytes: 7570 Baseline bytes: 7570 https://reference.readinessindex.io/dimensions/agent-interfaces Agent: GPTBot Agent class: training Body bytes: 7404 Baseline bytes: 7404 https://reference.readinessindex.io/dimensions/alternate-representations Agent: GPTBot Agent class: training Body bytes: 7717 Baseline bytes: 7717 https://reference.readinessindex.io/ Agent: ClaudeBot Agent class: training Body bytes: 12188 Baseline bytes: 12188 https://reference.readinessindex.io/dimensions Agent: ClaudeBot Agent class: training Body bytes: 7649 Baseline bytes: 7649 https://reference.readinessindex.io/contact Agent: ClaudeBot Agent class: training Body bytes: 7921 Baseline bytes: 7921 https://reference.readinessindex.io/dimensions/primary-indicators Agent: ClaudeBot Agent class: training Body bytes: 7719 Baseline bytes: 7719 https://reference.readinessindex.io/dimensions/rendering-and-extraction Agent: ClaudeBot Agent class: training Body bytes: 7600 Baseline bytes: 7600 https://reference.readinessindex.io/dimensions/structured-data Agent: ClaudeBot Agent class: training Body bytes: 7701 Baseline bytes: 7701 https://reference.readinessindex.io/dimensions/crawl-and-licensing Agent: ClaudeBot Agent class: training Body bytes: 7883 Baseline bytes: 7883 https://reference.readinessindex.io/dimensions/authorship-and-freshness Agent: ClaudeBot Agent class: training Body bytes: 7570 Baseline bytes: 7570 https://reference.readinessindex.io/dimensions/agent-interfaces Agent: ClaudeBot Agent class: training Body bytes: 7404 Baseline bytes: 7404 https://reference.readinessindex.io/dimensions/alternate-representations Agent: ClaudeBot Agent class: training Body bytes: 7717 Baseline bytes: 7717 https://reference.readinessindex.io/ Agent: CCBot Agent class: training Body bytes: 12188 Baseline bytes: 12188 https://reference.readinessindex.io/dimensions Agent: CCBot Agent class: training Body bytes: 7649 Baseline bytes: 7649 https://reference.readinessindex.io/contact Agent: CCBot Agent class: training Body bytes: 7921 Baseline bytes: 7921 https://reference.readinessindex.io/dimensions/primary-indicators Agent: CCBot Agent class: training Body bytes: 7719 Baseline bytes: 7719 https://reference.readinessindex.io/dimensions/rendering-and-extraction Agent: CCBot Agent class: training Body bytes: 7600 Baseline bytes: 7600 https://reference.readinessindex.io/dimensions/structured-data Agent: CCBot Agent class: training Body bytes: 7701 Baseline bytes: 7701 https://reference.readinessindex.io/dimensions/crawl-and-licensing Agent: CCBot Agent class: training Body bytes: 7883 Baseline bytes: 7883 https://reference.readinessindex.io/dimensions/authorship-and-freshness Agent: CCBot Agent class: training Body bytes: 7570 Baseline bytes: 7570 https://reference.readinessindex.io/dimensions/agent-interfaces Agent: CCBot Agent class: training Body bytes: 7404 Baseline bytes: 7404 https://reference.readinessindex.io/dimensions/alternate-representations Agent: CCBot Agent class: training Body bytes: 7717 Baseline bytes: 7717 https://reference.readinessindex.io/ Agent: Bytespider Agent class: training Body bytes: 12188 Baseline bytes: 12188 https://reference.readinessindex.io/dimensions Agent: Bytespider Agent class: training Body bytes: 7649 Baseline bytes: 7649 https://reference.readinessindex.io/contact Agent: Bytespider Agent class: training Body bytes: 7921 Baseline bytes: 7921 https://reference.readinessindex.io/dimensions/primary-indicators Agent: Bytespider Agent class: training Body bytes: 7719 Baseline bytes: 7719 https://reference.readinessindex.io/dimensions/rendering-and-extraction Agent: Bytespider Agent class: training Body bytes: 7600 Baseline bytes: 7600 https://reference.readinessindex.io/dimensions/structured-data Agent: Bytespider Agent class: training Body bytes: 7701 Baseline bytes: 7701 https://reference.readinessindex.io/dimensions/crawl-and-licensing Agent: Bytespider Agent class: training Body bytes: 7883 Baseline bytes: 7883 https://reference.readinessindex.io/dimensions/authorship-and-freshness Agent: Bytespider Agent class: training Body bytes: 7570 Baseline bytes: 7570 https://reference.readinessindex.io/dimensions/agent-interfaces Agent: Bytespider Agent class: training Body bytes: 7404 Baseline bytes: 7404 https://reference.readinessindex.io/dimensions/alternate-representations Agent: Bytespider Agent class: training Body bytes: 7717 Baseline bytes: 7717
AIR-1.3 Is your page readable without a security challenge?No interactive challenges on 10 sampled read-only pages. Pass 1 pt
Why we test this

No interactive challenges on 10 sampled read-only pages.

A CAPTCHA or bot check on an ordinary page stops an assistant at the door. Those belong on forms and logins, not on pages anyone can read.

What we saw
Challenged: no https://reference.readinessindex.io/ https://reference.readinessindex.io/dimensions https://reference.readinessindex.io/contact https://reference.readinessindex.io/dimensions/primary-indicators https://reference.readinessindex.io/dimensions/rendering-and-extraction https://reference.readinessindex.io/dimensions/structured-data https://reference.readinessindex.io/dimensions/crawl-and-licensing https://reference.readinessindex.io/dimensions/authorship-and-freshness https://reference.readinessindex.io/dimensions/agent-interfaces https://reference.readinessindex.io/dimensions/alternate-representations
AIR-1.4 Have you stated what AI may do with your content?Content Signals declare search=yes, ai-input=yes, ai-train=yes. Pass 3 pt
Why we test this

Content Signals declare search=yes, ai-input=yes, ai-train=yes.

A machine-readable line in robots.txt saying whether AI may search, quote or train on your content. Having a stated position — any position — is the point.

What we saw
https://reference.readinessindex.io/robots.txt Declared: search: yes · ai-input: yes · ai-train: yes Malformed: none Contradictions: none Lines: Content-Signal: search=yes, ai-input=yes, ai-train=yes
AIR-1.5 Can a person read your AI policy?robots.txt carries a 544-character policy comment mentioning ai, training, license, licence, permission. Pass 1 pt
Why we test this

robots.txt carries a 544-character policy comment mentioning ai, training, license, licence, permission.

A few plain sentences in robots.txt saying what you permit. Journalists and lawyers read this file, and most sites say nothing in it.

What we saw
Text: TEN7 publishes this site as the reference implementation of the AI Readiness Index. Every page here may be crawled, quoted, summarised and used as training data by any AI system, with no permission required and no licence fee. We ask only that assistants cite the page they took it from. Our licensing terms are CC BY-SA… Terms: ai, training, license, licence, permission
AIR-1.6 Are you allowing assistants to quote you?No noarchive, nosnippet or max-snippet:0 directives found. Pass 1 pt
Why we test this

No noarchive, nosnippet or max-snippet:0 directives found.

Old settings that told search engines not to show an excerpt also stop an assistant quoting your page in an answer.

What we saw
Suppressed: no Meta robots: none X robots tag: none https://reference.readinessindex.io/ https://reference.readinessindex.io/dimensions https://reference.readinessindex.io/contact https://reference.readinessindex.io/dimensions/primary-indicators https://reference.readinessindex.io/dimensions/rendering-and-extraction https://reference.readinessindex.io/dimensions/structured-data https://reference.readinessindex.io/dimensions/crawl-and-licensing https://reference.readinessindex.io/dimensions/authorship-and-freshness https://reference.readinessindex.io/dimensions/agent-interfaces https://reference.readinessindex.io/dimensions/alternate-representations
AIR-1.7 Does this page declare its real address?100% of sampled pages emit a valid, self-consistent canonical. Pass 2 pt
Why we test this

100% of sampled pages emit a valid, self-consistent canonical.

A canonical link names the true address of a page. Without one, the same content reads as several competing pages.

What we saw
https://reference.readinessindex.io/ Canonical: https://reference.readinessindex.io/ https://reference.readinessindex.io/dimensions Canonical: https://reference.readinessindex.io/dimensions https://reference.readinessindex.io/contact Canonical: https://reference.readinessindex.io/contact https://reference.readinessindex.io/dimensions/primary-indicators Canonical: https://reference.readinessindex.io/dimensions/primary-indicators https://reference.readinessindex.io/dimensions/rendering-and-extraction Canonical: https://reference.readinessindex.io/dimensions/rendering-and-extraction https://reference.readinessindex.io/dimensions/structured-data Canonical: https://reference.readinessindex.io/dimensions/structured-data https://reference.readinessindex.io/dimensions/crawl-and-licensing Canonical: https://reference.readinessindex.io/dimensions/crawl-and-licensing https://reference.readinessindex.io/dimensions/authorship-and-freshness Canonical: https://reference.readinessindex.io/dimensions/authorship-and-freshness https://reference.readinessindex.io/dimensions/agent-interfaces Canonical: https://reference.readinessindex.io/dimensions/agent-interfaces https://reference.readinessindex.io/dimensions/alternate-representations Canonical: https://reference.readinessindex.io/dimensions/alternate-representations
AIR-1.8 Is your page structured so a machine can follow it?100% of sampled pages carry one main element, a wrapping article or section, and a nav. Pass 2 pt
Why we test this

100% of sampled pages carry one main element, a wrapping article or section, and a nav.

Meaningful elements rather than an undifferentiated wall of containers. It is the difference between a document and a soup of boxes.

What we saw
Passes: yes Div to semantic ratio: 0% https://reference.readinessindex.io/ Semantic counts: main: 1 · article: 1 · section: 5 · nav: 1 · header: 1 · footer: 1 · figure: 1 · figcaption: 1 · time: 1 https://reference.readinessindex.io/dimensions Semantic counts: main: 1 · article: 1 · section: 1 · nav: 2 · header: 1 · footer: 1 · dl: 1 · time: 1 https://reference.readinessindex.io/contact Semantic counts: main: 1 · article: 1 · section: 4 · nav: 2 · header: 1 · footer: 1 · dl: 1 · time: 1 https://reference.readinessindex.io/dimensions/primary-indicators Semantic counts: main: 1 · article: 1 · section: 3 · nav: 2 · header: 1 · footer: 1 · time: 1 https://reference.readinessindex.io/dimensions/rendering-and-extraction Semantic counts: main: 1 · article: 1 · section: 3 · nav: 2 · header: 1 · footer: 1 · time: 1 https://reference.readinessindex.io/dimensions/structured-data Semantic counts: main: 1 · article: 1 · section: 3 · nav: 2 · header: 1 · footer: 1 · time: 1 https://reference.readinessindex.io/dimensions/crawl-and-licensing Semantic counts: main: 1 · article: 1 · section: 3 · nav: 2 · header: 1 · footer: 1 · time: 1 https://reference.readinessindex.io/dimensions/authorship-and-freshness Semantic counts: main: 1 · article: 1 · section: 3 · nav: 2 · header: 1 · footer: 1 · time: 1 https://reference.readinessindex.io/dimensions/agent-interfaces Semantic counts: main: 1 · article: 1 · section: 3 · nav: 2 · header: 1 · footer: 1 · time: 1 https://reference.readinessindex.io/dimensions/alternate-representations Semantic counts: main: 1 · article: 1 · section: 3 · nav: 2 · header: 1 · footer: 1 · time: 1
AIR-1.9 Do your headings tell a clear story?100% of sampled pages have exactly one non-empty h1 and no skipped heading levels. Pass 2 pt
Why we test this

100% of sampled pages have exactly one non-empty h1 and no skipped heading levels.

One main heading, then sub-headings in order. Assistants use headings to work out which part of a page answers a question.

What we saw
H1 count: 1 Skipped levels: none https://reference.readinessindex.io/ Headings: h1: A website built to score 100, h2: What this is, h2: The seven dimensions, h2: How it scores, h2: What passes by absence, h2: Who publishes it https://reference.readinessindex.io/dimensions Headings: h1: The seven dimensions, h2: The dimensions https://reference.readinessindex.io/contact Headings: h1: Contact, h2: By email, h2: By telephone, h2: By post, h2: Who answers https://reference.readinessindex.io/dimensions/primary-indicators Headings: h1: Primary Indicators, h2: What it measures, h2: How this site handles it, h2: Weight https://reference.readinessindex.io/dimensions/rendering-and-extraction Headings: h1: Rendering and extraction, h2: What it measures, h2: How this site handles it, h2: Weight https://reference.readinessindex.io/dimensions/structured-data Headings: h1: Structured data and the entity graph, h2: What it measures, h2: How this site handles it, h2: Weight https://reference.readinessindex.io/dimensions/crawl-and-licensing Headings: h1: Crawl, index and licensing hygiene, h2: What it measures, h2: How this site handles it, h2: Weight https://reference.readinessindex.io/dimensions/authorship-and-freshness Headings: h1: Authorship, provenance, freshness, h2: What it measures, h2: How this site handles it, h2: Weight https://reference.readinessindex.io/dimensions/agent-interfaces Headings: h1: Agent interfaces, h2: What it measures, h2: How this site handles it, h2: Weight https://reference.readinessindex.io/dimensions/alternate-representations Headings: h1: Alternate representations, h2: What it measures, h2: How this site handles it, h2: Weight
AIR-1.10 Do you publish a guide for AI assistants?/llms.txt lists 14 links across 3 sections, covering 100% of the sitemap. Pass 2 pt
Why we test this

/llms.txt lists 14 links across 3 sections, covering 100% of the sitemap.

A file at /llms.txt listing your most important pages. It is early and cheap, and it forces a useful conversation about what actually matters on your site.

What we saw
https://reference.readinessindex.io/llms.txt Status: 200 Present: yes Title: Readiness Index — Reference Implementation Summary: A hand-written, no-JavaScript static site published by TEN7 to demonstrate that the Readiness Index v11.3 is achievable rather than merely measurable. Everything here is free to read, quote and train on. Sections: Pages, The dimensions, The standard Link count: 14 Well formed: yes Inlines content: no Problems: none Sitemap coverage: 100% Content type: text/plain; charset=utf-8 Cache headers: age: 84 · x-served-by: cache-chi-klot8100112-CHI · x-cache: MISS · cf-cache-status: HIT
AIR-1.11 Can a machine tell what your organization is?16 of 16 entity nodes carry an @id (100%). The WebPage to WebSite to Organization chain resolves. Pass 2 pt
Why we test this

16 of 16 entity nodes carry an @id (100%). The WebPage to WebSite to Organization chain resolves.

Structured data that links together — your organization, your site, this page — rather than a scattering of disconnected labels.

What we saw
https://reference.readinessindex.io ID coverage: 100% Chain: WebPage->WebSite: yes · WebSite->Organization: yes Duplicates: none Canonical IDS: Organization: https://reference.readinessindex.io/#organization · WebSite: https://reference.readinessindex.io/#website · Person: https://reference.readinessindex.io/#ivan-stegic · Place: None Orphan nodes: 0 Total nodes: 80 Entity nodes: 16
AIR-1.12 Can a machine be certain it is you?6 sameAs links: 1 tier-1 authority identifiers, 2 tier-2, 3 social. 2 do not resolve. Pass 2 pt
Why we test this

6 sameAs links: 1 tier-1 authority identifiers, 2 tier-2, 3 social. 2 do not resolve.

Links from your markup to authoritative records like Wikidata or ROR. Without one, an assistant is guessing which organization of your name it has found.

What we saw
https://github.com/ten7 Tier: 3 Types: Organization Resolved: yes Status: 200 https://orcid.org/0009-0005-6369-8607 Tier: 1 Types: Person Resolved: yes Status: 200 https://www.drupal.org/ten7 Tier: 3 Types: Organization Resolved: yes Status: 200 https://www.linkedin.com/company/ten7/ Tier: 2 Types: Organization Resolved: no Status: 403 https://www.linkedin.com/in/ivanstegic/ Tier: 2 Types: Person Resolved: no Status: 405 https://x.com/ten7 Tier: 3 Types: Organization Resolved: yes Status: 200
AIR-1.13 Can a machine find out who you are?7 of 7 organizational facts are present in the Organization markup: foundingDate, leadership, address, areaServed, contactPoint, legalIdentifier, description. Pass 2 pt
Why we test this

7 of 7 organizational facts are present in the Organization markup: foundingDate, leadership, address, areaServed, contactPoint, legalIdentifier, description.

Founding date, leadership, address, contact details, legal identifiers. Thin About pages are the most common weakness we see.

What we saw
https://reference.readinessindex.io FoundingDate: yes Leadership: yes Address: yes AreaServed: yes ContactPoint: yes LegalIdentifier: yes Description: yes
AIR-2.1 Does your content show up without JavaScript?Raw HTML contains 100% of rendered text on average across 10 URLs. The worst template is /: 100% across 1 pages. Pass 6 pt
Why we test this

Raw HTML contains 100% of rendered text on average across 10 URLs. The worst template is /: 100% across 1 pages.

If your content only appears after JavaScript runs, a crawler that does not run it sees an empty page. This is the heaviest check in the Index.

What we saw
Coverage: 100% Coverage unclamped: 100% https://reference.readinessindex.io/ Template: / Raw text chars: 3342 Rendered text chars: 3342 Raw excerpt: A website built to score 100 By Ivan Stegic , 26 September 2026 This is the reference implementation of the Readiness Index, version 11.3. It is hand-written, it ships no JavaScript, and it exists for one reason: to show that the standard we publish is achievable rather than merely measurable. Anyone can read every fil… Rendered excerpt: A website built to score 100 By Ivan Stegic , 26 September 2026 This is the reference implementation of the Readiness Index, version 11.3. It is hand-written, it ships no JavaScript, and it exists for one reason: to show that the standard we publish is achievable rather than merely measurable. Anyone can read every fil… https://reference.readinessindex.io/dimensions Template: /dimensions Raw text chars: 1215 Rendered text chars: 1215 Raw excerpt: The seven dimensions By Ivan Stegic , 2026-09-25 Version 11.3 of the Readiness Index spreads a hundred points across seven dimensions and fifty-one tests. Each page below says what one dimension measures and what this site does about it — including where it falls short. The dimensions Primary Indicators 30 points acros… Rendered excerpt: The seven dimensions By Ivan Stegic , 2026-09-25 Version 11.3 of the Readiness Index spreads a hundred points across seven dimensions and fifty-one tests. Each page below says what one dimension measures and what this site does about it — including where it falls short. The dimensions Primary Indicators 30 points acros… https://reference.readinessindex.io/contact Template: /contact Raw text chars: 1260 Rendered text chars: 1260 Raw excerpt: Contact By Ivan Stegic , 20 September 2026 There is no contact form on this site, and that is a deliberate choice rather than an omission. A static site cannot process a form without handing the work to somebody else's server, and the services that do it tend to arrive with a bot challenge attached — which is the preci… Rendered excerpt: Contact By Ivan Stegic , 20 September 2026 There is no contact form on this site, and that is a deliberate choice rather than an omission. A static site cannot process a form without handing the work to somebody else's server, and the services that do it tend to arrive with a bot challenge attached — which is the preci… https://reference.readinessindex.io/dimensions/primary-indicators Template: /dimensions/* Raw text chars: 1312 Rendered text chars: 1312 Raw excerpt: Primary Indicators By Ivan Stegic , 2026-09-19 Thirty of the hundred points sit here, more than any other dimension. Not because reachability matters more than everything else, but because this is the sum of the strongest test pulled from each of the others — the things a single page can answer. What it measures Whethe… Rendered excerpt: Primary Indicators By Ivan Stegic , 2026-09-19 Thirty of the hundred points sit here, more than any other dimension. Not because reachability matters more than everything else, but because this is the sum of the strongest test pulled from each of the others — the things a single page can answer. What it measures Whethe… https://reference.readinessindex.io/dimensions/rendering-and-extraction Template: /dimensions/* Raw text chars: 1162 Rendered text chars: 1162 Raw excerpt: Rendering and extraction By Ivan Stegic , 2026-09-21 Most crawlers that feed answer engines do not execute JavaScript. This dimension asks a blunt question: how much of the page is actually in the server's response? What it measures The gap between the raw HTTP response and the hydrated DOM, measured as a ratio and ave… Rendered excerpt: Rendering and extraction By Ivan Stegic , 2026-09-21 Most crawlers that feed answer engines do not execute JavaScript. This dimension asks a blunt question: how much of the page is actually in the server's response? What it measures The gap between the raw HTTP response and the hydrated DOM, measured as a ratio and ave… https://reference.readinessindex.io/dimensions/structured-data Template: /dimensions/* Raw text chars: 1261 Rendered text chars: 1261 Raw excerpt: Structured data and the entity graph By Ivan Stegic , 2026-09-22 An Organization block and some FAQ markup is commodity work. A linked graph, anchored to records somebody else controls and validated so it cannot rot, is not. What it measures Whether schema follows the content or was typed into a template. Whether a pag… Rendered excerpt: Structured data and the entity graph By Ivan Stegic , 2026-09-22 An Organization block and some FAQ markup is commodity work. A linked graph, anchored to records somebody else controls and validated so it cannot rot, is not. What it measures Whether schema follows the content or was typed into a template. Whether a pag… https://reference.readinessindex.io/dimensions/crawl-and-licensing Template: /dimensions/* Raw text chars: 1372 Rendered text chars: 1372 Raw excerpt: Crawl, index and licensing hygiene By Ivan Stegic , 2026-09-23 Two questions that turn out to be one: what may a machine do with this content, and can it get to the content in the first place without drowning in duplicate URLs. What it measures Licensing posture — whether machine-readable terms exist and travel with th… Rendered excerpt: Crawl, index and licensing hygiene By Ivan Stegic , 2026-09-23 Two questions that turn out to be one: what may a machine do with this content, and can it get to the content in the first place without drowning in duplicate URLs. What it measures Licensing posture — whether machine-readable terms exist and travel with th… https://reference.readinessindex.io/dimensions/authorship-and-freshness Template: /dimensions/* Raw text chars: 1133 Rendered text chars: 1133 Raw excerpt: Authorship, provenance, freshness By Ivan Stegic , 2026-09-24 A byline string asserts nothing a machine can check. A resolvable entity with credentials does, and so does a date that only moves when the content moves. What it measures Whether authors resolve to real, credentialed entities rather than names. Whether subs… Rendered excerpt: Authorship, provenance, freshness By Ivan Stegic , 2026-09-24 A byline string asserts nothing a machine can check. A resolvable entity with credentials does, and so does a date that only moves when the content moves. What it measures Whether authors resolve to real, credentialed entities rather than names. Whether subs… https://reference.readinessindex.io/dimensions/agent-interfaces Template: /dimensions/* Raw text chars: 1069 Rendered text chars: 1069 Raw excerpt: Agent interfaces By Ivan Stegic , 2026-09-25 Low weight and high differentiation. Most sites score nothing here, and in 2026 that is still reasonable — treat this dimension as an opportunity map rather than a deficiency list. What it measures Whether a public API is described by a specification an agent can read. Wheth… Rendered excerpt: Agent interfaces By Ivan Stegic , 2026-09-25 Low weight and high differentiation. Most sites score nothing here, and in 2026 that is still reasonable — treat this dimension as an opportunity map rather than a deficiency list. What it measures Whether a public API is described by a specification an agent can read. Wheth… https://reference.readinessindex.io/dimensions/alternate-representations Template: /dimensions/* Raw text chars: 1303 Rendered text chars: 1303 Raw excerpt: Alternate representations By Ivan Stegic , 2026-09-26 Read this before you sell it: evidence that these files are consumed by the major models remains thin. They are here because they are cheap, they force good content hygiene, and being early costs nothing. What it measures Whether every canonical page has a Markdown… Rendered excerpt: Alternate representations By Ivan Stegic , 2026-09-26 Read this before you sell it: evidence that these files are consumed by the major models remains thin. They are here because they are cheap, they force good content hygiene, and being early costs nothing. What it measures Whether every canonical page has a Markdown…
AIR-2.2 Is content behind tabs and accordions already in the page?There is none of this on the site, so there is nothing to fix. Pass 3 pt
Why we test this

There is none of this on the site, so there is nothing to fix.

Tabs and accordions are fine, as long as the text is already in the HTML before anybody clicks.

What we saw
What we looked for Looked for: Progressive disclosure content ships in the initial HTML Found: none of it on the site Scored as: band 4 of 4
AIR-2.3 Are your tables real tables?There is none of this on the site, so there is nothing to fix. Pass 2 pt
Why we test this

There is none of this on the site, so there is nothing to fix.

Tuition, hours, fees, comparisons — in a real table with header cells, not an image and not a grid of divs.

What we saw
What we looked for Looked for: Real data tables with header cells Found: none of it on the site Scored as: band 4 of 4
AIR-2.4 Can a model link straight to a section of your page?31 of 31 subheadings carry a slug-like id (100%); 0 have generated or unstable ids. Pass 2 pt
Why we test this

31 of 31 subheadings carry a slug-like id (100%); 0 have generated or unstable ids.

Stable IDs on your headings let a model cite the exact passage rather than the whole page.

What we saw
Slug like: yes https://reference.readinessindex.io/ Heading: What this is Anchor ID: what-this-is https://reference.readinessindex.io/ Heading: The seven dimensions Anchor ID: the-seven-dimensions https://reference.readinessindex.io/ Heading: How it scores Anchor ID: how-it-scores https://reference.readinessindex.io/ Heading: What passes by absence Anchor ID: what-passes-by-absence https://reference.readinessindex.io/ Heading: Who publishes it Anchor ID: who-publishes-it https://reference.readinessindex.io/dimensions Heading: The dimensions Anchor ID: the-dimensions https://reference.readinessindex.io/contact Heading: By email Anchor ID: by-email https://reference.readinessindex.io/contact Heading: By telephone Anchor ID: by-telephone https://reference.readinessindex.io/contact Heading: By post Anchor ID: by-post https://reference.readinessindex.io/contact Heading: Who answers Anchor ID: who-answers https://reference.readinessindex.io/dimensions/primary-indicators Heading: What it measures Anchor ID: what-it-measures https://reference.readinessindex.io/dimensions/primary-indicators Heading: How this site handles it Anchor ID: how-this-site-handles-it https://reference.readinessindex.io/dimensions/primary-indicators Heading: Weight Anchor ID: weight https://reference.readinessindex.io/dimensions/rendering-and-extraction Heading: What it measures Anchor ID: what-it-measures https://reference.readinessindex.io/dimensions/rendering-and-extraction Heading: How this site handles it Anchor ID: how-this-site-handles-it https://reference.readinessindex.io/dimensions/rendering-and-extraction Heading: Weight Anchor ID: weight https://reference.readinessindex.io/dimensions/structured-data Heading: What it measures Anchor ID: what-it-measures https://reference.readinessindex.io/dimensions/structured-data Heading: How this site handles it Anchor ID: how-this-site-handles-it https://reference.readinessindex.io/dimensions/structured-data Heading: Weight Anchor ID: weight https://reference.readinessindex.io/dimensions/crawl-and-licensing Heading: What it measures Anchor ID: what-it-measures https://reference.readinessindex.io/dimensions/crawl-and-licensing Heading: How this site handles it Anchor ID: how-this-site-handles-it https://reference.readinessindex.io/dimensions/crawl-and-licensing Heading: Weight Anchor ID: weight https://reference.readinessindex.io/dimensions/authorship-and-freshness Heading: What it measures Anchor ID: what-it-measures https://reference.readinessindex.io/dimensions/authorship-and-freshness Heading: How this site handles it Anchor ID: how-this-site-handles-it https://reference.readinessindex.io/dimensions/authorship-and-freshness Heading: Weight Anchor ID: weight https://reference.readinessindex.io/dimensions/agent-interfaces Heading: What it measures Anchor ID: what-it-measures https://reference.readinessindex.io/dimensions/agent-interfaces Heading: How this site handles it Anchor ID: how-this-site-handles-it https://reference.readinessindex.io/dimensions/agent-interfaces Heading: Weight Anchor ID: weight https://reference.readinessindex.io/dimensions/alternate-representations Heading: What it measures Anchor ID: what-it-measures https://reference.readinessindex.io/dimensions/alternate-representations Heading: How this site handles it Anchor ID: how-this-site-handles-it https://reference.readinessindex.io/dimensions/alternate-representations Heading: Weight Anchor ID: weight
AIR-2.5 Do your images say what they show?1 of 1 images carry appropriate alt text: 0 have no alt attribute, 0 use the filename. Pass 1 pt
Why we test this

1 of 1 images carry appropriate alt text: 0 have no alt attribute, 0 use the filename.

Alt text is the only text an image has. Decorative images should say so with an empty alt rather than describing themselves.

What we saw
https://reference.readinessindex.io/ Src: /dimensions.svg Alt: Bar chart of the seven dimensions of the Readiness Index version 11.3: Primary Indicators 30 points, Rendering and extraction 15, Structured data 15, Crawl and licensing hygiene 12, Authorship and freshness 12, Agent interfaces 8, Alternate representations 8. Alt present: yes Filename as alt: no Decorative context: no
AIR-2.6 Are your key facts written as text?No page in the sample looks like its facts live only in an image or a document. Pass 1 pt
Why we test this

No page in the sample looks like its facts live only in an image or a document.

A fact locked inside a PDF, a scan or an infographic is a fact an assistant cannot quote.

What we saw
https://reference.readinessindex.io/ Text chars: 3342 Images: 1 https://reference.readinessindex.io/dimensions Text chars: 1215 Images: 0 https://reference.readinessindex.io/contact Text chars: 1260 Images: 0 https://reference.readinessindex.io/dimensions/primary-indicators Text chars: 1312 Images: 0 https://reference.readinessindex.io/dimensions/rendering-and-extraction Text chars: 1162 Images: 0 https://reference.readinessindex.io/dimensions/structured-data Text chars: 1261 Images: 0 https://reference.readinessindex.io/dimensions/crawl-and-licensing Text chars: 1372 Images: 0 https://reference.readinessindex.io/dimensions/authorship-and-freshness Text chars: 1133 Images: 0 https://reference.readinessindex.io/dimensions/agent-interfaces Text chars: 1069 Images: 0 https://reference.readinessindex.io/dimensions/alternate-representations Text chars: 1303 Images: 0
AIR-3.1 Is your structured data built from your content, not typed in by hand?Schema values track visible content across 1 templates. Pass 2 pt
Why we test this

Schema values track visible content across 1 templates.

Schema generated from your content model survives the next content change. Hardcoded schema rots quietly and nobody notices for a year.

What we saw
/ Pages: 1 Distinct titles: 1 Examined: no /contact Pages: 1 Distinct titles: 1 Examined: no /dimensions Pages: 1 Distinct titles: 1 Examined: no /dimensions/* Pages: 7 Distinct titles: 7 Examined: yes
AIR-3.2 Does each page say where it sits in your site?100% of pages below the homepage carry a BreadcrumbList with at least two steps. Pass 2 pt
Why we test this

100% of pages below the homepage carry a BreadcrumbList with at least two steps.

Every page below the homepage should declare where it sits, so a model knows a program page belongs to a department.

What we saw
https://reference.readinessindex.io/dimensions Steps: 2 https://reference.readinessindex.io/contact Steps: 2 https://reference.readinessindex.io/dimensions/primary-indicators Steps: 3 https://reference.readinessindex.io/dimensions/rendering-and-extraction Steps: 3 https://reference.readinessindex.io/dimensions/structured-data Steps: 3 https://reference.readinessindex.io/dimensions/crawl-and-licensing Steps: 3 https://reference.readinessindex.io/dimensions/authorship-and-freshness Steps: 3 https://reference.readinessindex.io/dimensions/agent-interfaces Steps: 3 https://reference.readinessindex.io/dimensions/alternate-representations Steps: 3
AIR-3.3 Does your markup describe what you actually publish?3 of 3 expected research types are present: Dataset, DataCatalog, ScholarlyArticle. Pass 4 pt
Why we test this

3 of 3 expected research types are present: Dataset, DataCatalog, ScholarlyArticle.

Use the types that match what you actually publish — courses, programs, clinicians, grants — rather than a generic WebPage on everything.

What we saw
https://reference.readinessindex.io Vertical: research Expected: Dataset, DataCatalog, ScholarlyArticle Found: Dataset, DataCatalog, ScholarlyArticle
AIR-3.4 Is your FAQ markup made of real questions and answers?There is none of this on the site, so there is nothing to fix. Pass 2 pt
Why we test this

There is none of this on the site, so there is nothing to fix.

Mark up real questions and answers. Do not invent an FAQ block that is not on the page: fabricated markup is a policy problem, not a shortcut.

What we saw
What we looked for Looked for: FAQPage and QAPage on genuine question-and-answer content Found: none of it on the site Scored as: band 4 of 4
AIR-3.5 Do you say what a page is about and whether it is free to read?10 of 10 substantive pages declare isAccessibleForFree; 10 reference subject entities by identifier. Pass 1 pt
Why we test this

10 of 10 substantive pages declare isAccessibleForFree; 10 reference subject entities by identifier.

Say whether the page is free to read, and link the entities it is actually about. Both are things an assistant would otherwise have to assume.

What we saw
Declared: yes Entity referenced: yes https://reference.readinessindex.io/ https://reference.readinessindex.io/dimensions https://reference.readinessindex.io/contact https://reference.readinessindex.io/dimensions/primary-indicators https://reference.readinessindex.io/dimensions/rendering-and-extraction https://reference.readinessindex.io/dimensions/structured-data https://reference.readinessindex.io/dimensions/crawl-and-licensing https://reference.readinessindex.io/dimensions/authorship-and-freshness https://reference.readinessindex.io/dimensions/agent-interfaces https://reference.readinessindex.io/dimensions/alternate-representations
AIR-3.6 Are your prices and offers in your markup, and current?There is none of this on the site, so there is nothing to fix. Pass 1 pt
Why we test this

There is none of this on the site, so there is nothing to fix.

Prices and offers in markup, and current. A stale price in structured data is worse than no price at all.

What we saw
What we looked for Looked for: Product, Offer, and Service with real prices Found: none of it on the site Scored as: band 4 of 4
AIR-3.7 Can an agent search your site without a search box?There is none of this on the site, so there is nothing to fix. Pass 1 pt
Why we test this

There is none of this on the site, so there is nothing to fix.

Expose your site search as a pattern an agent can call, instead of a box only a human can type into.

What we saw
What we looked for Looked for: SearchAction on the WebSite node Found: none of it on the site Scored as: band 4 of 4
AIR-3.8 Does your structured data actually validate?107 nodes across 10 pages parse, carry what their types require, and hold well-formed values. Pass 2 pt
Why we test this

107 nodes across 10 pages parse, carry what their types require, and hold well-formed values.

Markup that does not parse, or that leaves out what its type needs, is served to machines that cannot use it — and nothing on the page says so.

What we saw
Parse errors: none Defects: none Defect count: 0 https://reference.readinessindex.io/ https://reference.readinessindex.io/dimensions https://reference.readinessindex.io/contact https://reference.readinessindex.io/dimensions/primary-indicators https://reference.readinessindex.io/dimensions/rendering-and-extraction https://reference.readinessindex.io/dimensions/structured-data https://reference.readinessindex.io/dimensions/crawl-and-licensing https://reference.readinessindex.io/dimensions/authorship-and-freshness https://reference.readinessindex.io/dimensions/agent-interfaces https://reference.readinessindex.io/dimensions/alternate-representations
AIR-4.1 Have you published your licensing terms in a form machines can read?We cannot see this from outside your site. Confirm it and this scores in full. Needs work +0
What's half-done

We cannot see this from outside your site. Confirm it and this scores in full.

Machine-readable licensing terms, so an AI company can find out what you allow without emailing you first.

Fixed by
  • Site owner (lead)
  • Back-end developer
What we saw
What we looked for Looked for: RSL licensing document published and referenced Found: nothing a visitor to your site could see Scored as: band 2 of 4
AIR-4.2 Do your licensing terms travel with your content?Licensing reaches 1 of 1 channels: no feeds advertised; 1 of 1 licensable pages carry a schema license property. Pass 1 pt
Why we test this

Licensing reaches 1 of 1 channels: no feeds advertised; 1 of 1 licensable pages carry a schema license property.

Licensing that travels with the content — in your feeds and your structured data, not only in one file nobody fetches.

AIR-4.3 Can you prove a visiting bot is who it says it is?We cannot see this from outside your site. Confirm it and this scores in full. Needs work +0
What's half-done

We cannot see this from outside your site. Confirm it and this scores in full.

Verified agents get through and unsigned scrapers claiming to be them do not, because the edge checks a signature instead of trusting a user-agent string.

Fixed by
  • Operations (lead)
  • Back-end developer
What we saw
What we looked for Looked for: Web Bot Auth verification configured Found: nothing a visitor to your site could see Scored as: band 2 of 4
AIR-4.4 Do your PDFs and images carry their own crawl rules?1 of 1 non-HTML resources carry an X-Robots-Tag. Pass 1 pt
Why we test this

1 of 1 non-HTML resources carry an X-Robots-Tag.

PDFs, images and JSON cannot carry a meta robots tag, so the directive has to travel in the HTTP header instead.

What we saw
https://reference.readinessindex.io/license.xml Status: 200 Content type: application/xml X robots tag: all
AIR-4.5 Do your missing pages say they are missing?0 of 3 deliberately invalid URLs returned HTTP 200. Pass 1 pt
Why we test this

0 of 3 deliberately invalid URLs returned HTTP 200.

A missing page that answers 200 OK teaches a crawler that nothing is ever missing, and spends its time on pages that are not there.

What we saw
Status: 404 Body bytes: 9746 Is soft 404: no https://reference.readinessindex.io/ten7-air-probe-does-not-exist-9f21c https://reference.readinessindex.io/dimensions/ten7-air-probe-does-not-exist-9f21c https://reference.readinessindex.io/contact/ten7-air-probe-does-not-exist-9f21c
AIR-4.6 Do your redirects go straight to the destination?0 of 10 sampled URLs redirect. Pass 1 pt
Why we test this

0 of 10 sampled URLs redirect.

Every extra redirect is another chance to be dropped. One hop, straight to the destination.

What we saw
Hops: 0 Loop: no https://reference.readinessindex.io/ Final URL: https://reference.readinessindex.io/ https://reference.readinessindex.io/dimensions Final URL: https://reference.readinessindex.io/dimensions https://reference.readinessindex.io/contact Final URL: https://reference.readinessindex.io/contact https://reference.readinessindex.io/dimensions/primary-indicators Final URL: https://reference.readinessindex.io/dimensions/primary-indicators https://reference.readinessindex.io/dimensions/rendering-and-extraction Final URL: https://reference.readinessindex.io/dimensions/rendering-and-extraction https://reference.readinessindex.io/dimensions/structured-data Final URL: https://reference.readinessindex.io/dimensions/structured-data https://reference.readinessindex.io/dimensions/crawl-and-licensing Final URL: https://reference.readinessindex.io/dimensions/crawl-and-licensing https://reference.readinessindex.io/dimensions/authorship-and-freshness Final URL: https://reference.readinessindex.io/dimensions/authorship-and-freshness https://reference.readinessindex.io/dimensions/agent-interfaces Final URL: https://reference.readinessindex.io/dimensions/agent-interfaces https://reference.readinessindex.io/dimensions/alternate-representations Final URL: https://reference.readinessindex.io/dimensions/alternate-representations
AIR-4.7 Are your filters and calendars kept from swallowing a crawl?There is none of this on the site, so there is nothing to fix. Pass 2 pt
Why we test this

There is none of this on the site, so there is nothing to fix.

Filters and calendars can generate millions of URLs. A crawler spends its budget in there instead of on the pages you care about.

What we saw
What we looked for Looked for: Faceted, calendar, and parameterized URLs are controlled Found: none of it on the site Scored as: band 4 of 4
AIR-4.8 Can a crawler trust the dates in your sitemap?11 of 11 sitemap URLs carry a lastmod across 1 distinct dates; 100% share 2026-10-08. Problem +1
What's wrong

11 of 11 sitemap URLs carry a lastmod across 1 distinct dates; 100% share 2026-10-08.

A lastmod date should mean the content changed, not that you deployed. Once it is noise, crawlers stop trusting it.

Fixed by
  • Back-end developer (lead)
  • Search specialist
Your move

Wire lastmod to the node's changed timestamp. A lastmod driven by cron or by a deploy tells a crawler everything changed at once, which is the same as telling it nothing changed.

What we saw
https://reference.readinessindex.io/sitemap.xml Total: 11 With lastmod: 11 Coverage: 100% Distinct dates: 1 Distinct timestamps: 1 Top date: 2026-10-08 Top date share: 100% Identical to the minute: yes All identical: yes Heavily clustered: yes Earliest: 2026-10-08T00:00:00 Latest: 2026-10-08T00:00:00
AIR-4.9 Is your sitemap organized by type of content?An index with 3 child sitemaps covering 11 URLs, including media. Pass 1 pt
Why we test this

An index with 3 child sitemaps covering 11 URLs, including media.

Separate sitemaps per content type turn “coverage is bad” into “coverage is bad for news,” which is a problem somebody can fix.

What we saw
Has videos: no https://reference.readinessindex.io/sitemap.xml Kind: index URLS: 0 Bytes: 512 Has images: no https://reference.readinessindex.io/sitemap-pages.xml Kind: urlset URLS: 3 Bytes: 436 Has images: no https://reference.readinessindex.io/sitemap-dimensions.xml Kind: urlset URLS: 7 Bytes: 1049 Has images: no https://reference.readinessindex.io/sitemap-images.xml Kind: urlset URLS: 1 Bytes: 761 Has images: yes
AIR-4.10 Can a crawler reach page two and beyond?There is none of this on the site, so there is nothing to fix. Pass 1 pt
Why we test this

There is none of this on the site, so there is nothing to fix.

Page two and everything after it has to be reachable by something that does not click.

What we saw
What we looked for Looked for: Paginated series are coherently signaled Found: none of it on the site Scored as: band 4 of 4
AIR-5.1 Do your authors have real pages with real credentials?10 of 10 Person entities carry a canonical @id plus at least two of jobTitle, affiliation, knowsAbout or sameAs. Pass 2 pt
Why we test this

10 of 10 Person entities carry a canonical @id plus at least two of jobTitle, affiliation, knowsAbout or sameAs.

Authors who resolve to real people with real credentials, on pages of their own — not a name in a byline and nothing behind it.

What we saw
Node ID: https://reference.readinessindex.io/#ivan-stegic Properties: jobTitle, affiliation, knowsAbout, sameAs Ivan Stegic Ivan Stegic Ivan Stegic Ivan Stegic Ivan Stegic Ivan Stegic Ivan Stegic Ivan Stegic Ivan Stegic Ivan Stegic
AIR-5.2 Do your bylines point at a person, not just a name?10 of 10 substantive pages reference an author by @id; 0 carry a bare string; 0 are unsigned. Pass 2 pt
Why we test this

10 of 10 substantive pages reference an author by @id; 0 carry a bare string; 0 are unsigned.

Sign substantive pages, and point the byline at the author's entity rather than repeating their name as text on every article.

What we saw
Referenced by ID: yes https://reference.readinessindex.io/ Author: {'@id': 'https://reference.readinessindex.io/#organization'} https://reference.readinessindex.io/dimensions Author: {'@id': 'https://reference.readinessindex.io/#ivan-stegic'} https://reference.readinessindex.io/contact Author: {'@id': 'https://reference.readinessindex.io/#ivan-stegic'} https://reference.readinessindex.io/dimensions/primary-indicators Author: {'@id': 'https://reference.readinessindex.io/#ivan-stegic'} https://reference.readinessindex.io/dimensions/rendering-and-extraction Author: {'@id': 'https://reference.readinessindex.io/#ivan-stegic'} https://reference.readinessindex.io/dimensions/structured-data Author: {'@id': 'https://reference.readinessindex.io/#ivan-stegic'} https://reference.readinessindex.io/dimensions/crawl-and-licensing Author: {'@id': 'https://reference.readinessindex.io/#ivan-stegic'} https://reference.readinessindex.io/dimensions/authorship-and-freshness Author: {'@id': 'https://reference.readinessindex.io/#ivan-stegic'} https://reference.readinessindex.io/dimensions/agent-interfaces Author: {'@id': 'https://reference.readinessindex.io/#ivan-stegic'} https://reference.readinessindex.io/dimensions/alternate-representations Author: {'@id': 'https://reference.readinessindex.io/#ivan-stegic'}
AIR-5.3 Does health, legal and financial content name its reviewer?We cannot see this from outside your site. Confirm it and this scores in full. Needs work +1
What's half-done

We cannot see this from outside your site. Confirm it and this scores in full.

Health, legal and financial pages should name their reviewer in the markup, not only in the design where a machine cannot see it.

Fixed by
  • Content team (lead)
  • Back-end developer
What we saw
What we looked for Looked for: reviewedBy on YMYL content Found: nothing a visitor to your site could see Scored as: band 2 of 4
AIR-5.4 Are your published and modified dates honest?10 of 10 pages carry a publication or modification date across 1 distinct dateModified values. Needs work +1
What's half-done

10 of 10 pages carry a publication or modification date across 1 distinct dateModified values.

A modified date that changes on every deploy is not a freshness signal. It is noise, and it costs you the trust of the real one.

Fixed by
  • Back-end developer (lead)
  • Content team
Your move

Wire both dates to the node's own timestamps. A deploy must not move dateModified. If every page changed last Tuesday, the signal is telling a crawler nothing changed at all.

What we saw
Modified: 2026-10-08 https://reference.readinessindex.io/ Published: 2026-09-24 https://reference.readinessindex.io/dimensions Published: 2026-09-25 https://reference.readinessindex.io/contact Published: 2026-09-20 https://reference.readinessindex.io/dimensions/primary-indicators Published: 2026-09-19 https://reference.readinessindex.io/dimensions/rendering-and-extraction Published: 2026-09-21 https://reference.readinessindex.io/dimensions/structured-data Published: 2026-09-22 https://reference.readinessindex.io/dimensions/crawl-and-licensing Published: 2026-09-23 https://reference.readinessindex.io/dimensions/authorship-and-freshness Published: 2026-09-24 https://reference.readinessindex.io/dimensions/agent-interfaces Published: 2026-09-25 https://reference.readinessindex.io/dimensions/alternate-representations Published: 2026-09-26
AIR-5.5 Can a machine follow your citations back to their sources?We cannot see this from outside your site. Confirm it and this scores in full. Needs work +1
What's half-done

We cannot see this from outside your site. Confirm it and this scores in full.

Where you cite a primary source, make the citation machine-readable so the chain from claim to evidence survives.

Fixed by
  • Back-end developer (lead)
  • Content team
What we saw
What we looked for Looked for: citation markup on primary-source references Found: nothing a visitor to your site could see Scored as: band 2 of 4
AIR-5.6 Can your images prove where they came from?We cannot see this from outside your site. Confirm it and this scores in full. Needs work +1
What's half-done

We cannot see this from outside your site. Confirm it and this scores in full.

Provenance that survives into the delivered file, so an image can prove where it came from after somebody else has reposted it.

Fixed by
  • Operations (lead)
  • Site owner
What we saw
What we looked for Looked for: C2PA Content Credentials on original assets Found: nothing a visitor to your site could see Scored as: band 2 of 4
AIR-6.1 Do you describe your public API in a spec an agent can read?There is none of this on the site, so there is nothing to fix. Pass 2 pt
Why we test this

There is none of this on the site, so there is nothing to fix.

If you have a public API, describe it in a spec an agent can read, and version it so today's answer is still true next quarter.

What we saw
What we looked for Looked for: OpenAPI specification for public APIs Found: none of it on the site Scored as: band 4 of 4
AIR-6.2 Do you publish agent capabilities where agents look for them?There is none of this on the site, so there is nothing to fix. Pass 2 pt
Why we test this

There is none of this on the site, so there is nothing to fix.

Put your agent capabilities where agents look for them, rather than in a URL somebody has to be told about.

What we saw
What we looked for Looked for: /.well-known/ discovery entries for agent capabilities Found: none of it on the site Scored as: band 4 of 4
AIR-6.3 Can an agent tell what each form field is for?There is none of this on the site, so there is nothing to fix. Pass 2 pt
Why we test this

There is none of this on the site, so there is nothing to fix.

An agent filling in your form has to know what each field is for. Labels, names and autocomplete tokens are how it finds out.

What we saw
What we looked for Looked for: Form fields carry label, name, and autocomplete Found: none of it on the site Scored as: band 4 of 4
AIR-6.4 Can an agent search and filter without meeting a captcha?No search or filter surface in the sample returned a challenge. Pass 2 pt
Why we test this

No search or filter surface in the sample returned a challenge.

Challenge the actions that need challenging. Searching and filtering are not those actions, and a captcha there ends the visit.

AIR-7.1 Do you offer a clean Markdown version of your pages?4 of 4 sampled pages have a Markdown companion at {path}.md returning a Markdown content type. Pass 2 pt
Why we test this

4 of 4 sampled pages have a Markdown companion at {path}.md returning a Markdown content type.

A clean Markdown version of each page: none of the navigation, none of the markup a model has to wade through to reach your words.

What we saw
Status: 200 Content type: text/markdown; charset=utf-8 https://reference.readinessindex.io/dimensions.md Body bytes: 1268 https://reference.readinessindex.io/contact.md Body bytes: 1310 https://reference.readinessindex.io/dimensions/agent-interfaces.md Body bytes: 1133 https://reference.readinessindex.io/dimensions/alternate-representations.md Body bytes: 1363
AIR-7.2 Does each page point to its Markdown version?100% of sampled pages advertise a Markdown alternate in the head. Pass 2 pt
Why we test this

100% of sampled pages advertise a Markdown alternate in the head.

Publishing the Markdown is not enough. The HTML page has to point at it, or nothing will ever find it.

What we saw
https://reference.readinessindex.io/ Alternates: {'href': 'https://reference.readinessindex.io/index.md', 'type': 'text/markdown', 'hreflang': ''} https://reference.readinessindex.io/dimensions Alternates: {'href': 'https://reference.readinessindex.io/dimensions.md', 'type': 'text/markdown', 'hreflang': ''} https://reference.readinessindex.io/contact Alternates: {'href': 'https://reference.readinessindex.io/contact.md', 'type': 'text/markdown', 'hreflang': ''} https://reference.readinessindex.io/dimensions/primary-indicators Alternates: {'href': 'https://reference.readinessindex.io/dimensions/primary-indicators.md', 'type': 'text/markdown', 'hreflang': ''} https://reference.readinessindex.io/dimensions/rendering-and-extraction Alternates: {'href': 'https://reference.readinessindex.io/dimensions/rendering-and-extraction.md', 'type': 'text/markdown', 'hreflang': ''} https://reference.readinessindex.io/dimensions/structured-data Alternates: {'href': 'https://reference.readinessindex.io/dimensions/structured-data.md', 'type': 'text/markdown', 'hreflang': ''} https://reference.readinessindex.io/dimensions/crawl-and-licensing Alternates: {'href': 'https://reference.readinessindex.io/dimensions/crawl-and-licensing.md', 'type': 'text/markdown', 'hreflang': ''} https://reference.readinessindex.io/dimensions/authorship-and-freshness Alternates: {'href': 'https://reference.readinessindex.io/dimensions/authorship-and-freshness.md', 'type': 'text/markdown', 'hreflang': ''} https://reference.readinessindex.io/dimensions/agent-interfaces Alternates: {'href': 'https://reference.readinessindex.io/dimensions/agent-interfaces.md', 'type': 'text/markdown', 'hreflang': ''} https://reference.readinessindex.io/dimensions/alternate-representations Alternates: {'href': 'https://reference.readinessindex.io/dimensions/alternate-representations.md', 'type': 'text/markdown', 'hreflang': ''}
AIR-7.3 Can a machine ask your URL for Markdown?5 of 5 URLs serve Markdown for Accept: text/markdown, 5 with a correct Vary: Accept. Pass 2 pt
Why we test this

5 of 5 URLs serve Markdown for Accept: text/markdown, 5 with a correct Vary: Accept.

Ask the same URL for Markdown and get Markdown back. One address, two representations, no second set of links to maintain.

What we saw
Status: 200 Content type: text/markdown; charset=utf-8 Vary: Accept, Accept-Encoding https://reference.readinessindex.io/ https://reference.readinessindex.io/dimensions https://reference.readinessindex.io/contact https://reference.readinessindex.io/dimensions/agent-interfaces https://reference.readinessindex.io/dimensions/alternate-representations
AIR-7.4 Are your alternate versions served from the cache?4 of 4 generated representations show evidence of an edge cache hit on a repeat request. Pass 2 pt
Why we test this

4 of 4 generated representations show evidence of an edge cache hit on a repeat request.

Generated representations should come from the CDN. Otherwise every request rebuilds them at origin, and you will turn them off when the bill arrives.

What we saw
Status: 200 Faster on repeat: no Cache control: max-age=14400 https://reference.readinessindex.io/llms.txt First ms: 14.74 Second ms: 999 Cache headers: age: 88 · x-served-by: cache-chi-klot8100112-CHI · x-cache: MISS · cf-cache-status: HIT https://reference.readinessindex.io/dimensions.md First ms: 264.11 Second ms: 997.47 Cache headers: age: 91 · x-served-by: cache-chi-klot8100169-CHI · x-cache: MISS · cf-cache-status: HIT https://reference.readinessindex.io/contact.md First ms: 516.45 Second ms: 997.87 Cache headers: age: 91 · x-served-by: cache-yyz4573-YYZ · x-cache: MISS · cf-cache-status: HIT https://reference.readinessindex.io/dimensions/agent-interfaces.md First ms: 765.67 Second ms: 998.54 Cache headers: age: 91 · x-served-by: cache-chi-klot8100169-CHI · x-cache: MISS · cf-cache-status: HIT
LI-1 Are your step-by-step pages marked up as steps?Does not apply to this site. Not scored —
LI-2 Have you flagged the part of each page that answers the question?No speakable specification found on any sampled page. Not scored —
What we're measuring

No speakable specification found on any sampled page.

Flag your own best short answer — the lede, the summary — so an assistant reads that rather than guessing at a paragraph.

Fixed by
  • Back-end developer (lead)
  • Content team
LI-3 Do you tell search engines the moment something changes?No IndexNow key file was discoverable. The file is named after the key, which is not published, so this is 'not discoverable' rather than proof of absence. Not scored —
What we're measuring

No IndexNow key file was discoverable. The file is named after the key, which is not published, so this is 'not discoverable' rather than proof of absence.

Tell search engines the moment something changes, rather than waiting to be crawled again.

Fixed by
  • Back-end developer (lead)
  • Search specialist
What we saw
https://reference.readinessindex.io Present: no Checked: {'path': '/indexnow.txt', 'status': 404, 'valid': False}, {'path': '/.well-known/indexnow.txt', 'status': 404, 'valid': False} Advertised in robots: no
LI-4 Do you document how your content is made and corrected?0 of 10 Organization nodes reference publishingPrinciples. Not scored —
What we're measuring

0 of 10 Organization nodes reference publishingPrinciples.

Document how your content is produced, reviewed, corrected and funded — then point at that page from your markup.

Fixed by
  • Content team (lead)
  • Site owner
What we saw
https://reference.readinessindex.io/#organization https://reference.readinessindex.io/#organization https://reference.readinessindex.io/#organization https://reference.readinessindex.io/#organization https://reference.readinessindex.io/#organization https://reference.readinessindex.io/#organization https://reference.readinessindex.io/#organization https://reference.readinessindex.io/#organization https://reference.readinessindex.io/#organization https://reference.readinessindex.io/#organization
LI-5 Can an assistant ask your site a question directly?No NLWeb endpoint was discoverable. Not scored —
What we're measuring

No NLWeb endpoint was discoverable.

A natural-language endpoint over your own structured data, so an assistant can ask your site a question instead of scraping around it.

Fixed by
  • Back-end developer (lead)
  • Operations
What we saw
https://reference.readinessindex.io/.well-known/nlweb.json Status: 404
LI-6 Can an assistant call your catalog as a tool?No domain MCP server or tool descriptor was discoverable. Not scored —
What we're measuring

No domain MCP server or tool descriptor was discoverable.

Your course catalog, provider directory or grant database, callable as documented tools rather than scraped out of a search results page.

Fixed by
  • Back-end developer (lead)
  • Operations
What we saw
Status: 404 Found: no https://reference.readinessindex.io/.well-known/mcp.json https://reference.readinessindex.io/.well-known/ai-plugin.json https://reference.readinessindex.io/openapi.json
LI-7 Do you offer your full text in one file?Not declared in the engagement profile. Not scored —
BP-1 Can a task like applying or donating be finished without JavaScript-only clicks?Not declared in the engagement profile. Not scored —
BP-2 Can an agent find your key buttons again after a rebuild?Not declared in the engagement profile. Not scored —
BP-3 Can you count visits that come from AI assistants?Whether a channel group exists for AI assistant referrers is not visible from outside. Analytics presence is; the grouping is not. Not scored —
What we're measuring

Whether a channel group exists for AI assistant referrers is not visible from outside. Analytics presence is; the grouping is not.

Traffic from ChatGPT, Perplexity, Claude and the rest lands in Direct by default, where it disappears. A channel group makes it countable.

Fixed by
  • Search specialist
BP-4 Do you capture visits whose referrer was stripped?Reconciliation between server-side and client-side numbers has to be attested. Not scored —
What we're measuring

Reconciliation between server-side and client-side numbers has to be attested.

Some assistants strip the referrer before the browser sees it. Server-side tagging catches what the client-side tag cannot.

Fixed by
  • Search specialist (lead)
  • Operations
BP-5 Do you keep your crawler logs long enough to use them?Log retention and queryability are not observable from outside the site. Not scored —
What we're measuring

Log retention and queryability are not observable from outside the site.

Crawler logs have to survive long enough to show a before and an after. Many hosts discard them in days.

Fixed by
  • Operations
BP-6 Do you get a regular report on AI crawler activity?Depends on a check that does not apply. Not scored —
BP-7 Do you ask the same questions of AI models every month?Answer-share tracking happens outside the site and must be attested. Not scored —
What we're measuring

Answer-share tracking happens outside the site and must be attested.

Ask the same questions of the same models every month. It is the only way to see whether your share of the answers is moving.

Fixed by
  • Search specialist
BP-8 Have you measured how accurately a model reads your page?No extraction-fidelity baseline is captured by this version of the scanner, which makes no live model calls. Not scored —
What we're measuring

No extraction-fidelity baseline is captured by this version of the scanner, which makes no live model calls.

Feed your page to a model, ask it your key questions, and score the answers. Then do it again after the fixes and compare.

Fixed by
  • Search specialist (lead)
  • Content team
BP-9 Are you verified in Google Search Console and Bing Webmaster Tools?Neither Search Console nor Bing Webmaster Tools verification was found. Not scored —
What we're measuring

Neither Search Console nor Bing Webmaster Tools verification was found.

Verify both. Bing matters more than its search share suggests, because its index feeds several AI products.

Fixed by
  • Search specialist (lead)
  • Operations
What we saw
https://reference.readinessindex.io Google: no Bing: no Analytics detected: no

About these numbers. Points are whole numbers everywhere on this page. The arithmetic behind them is not — a test scores its weight times its band divided by four, so a row can earn 1.5 points and print as 2. Scores are computed from the exact figures and rounded once, at the end, never from the rounded rows. That means adding the points column up will not give you the score exactly. The full accounting is always available: see every line of the arithmetic, unrounded.