Full agent response (highest-scoring run, score 89)
Run 1, judge score 88. ~1000 words; this
is what the AI agent actually wrote in response to the prompt above.
I have everything I need. Let me write the evaluation.
---
## AI-Accessibility (a14y) Evaluation for the CTO
### 1. What a14y Is Measuring
a14y ("agent accessibility") is an open-source project that scores how readable a website is to AI agents — not human users. Its v0.2.0 scorecard (released April 6, 2026) runs 38 standardized checks across two dimensions: site-level discoverability (can an agent find and index the site?) and page-level quality (once an agent reaches a page, can it parse, date, and contextualize the content?). Each run produces a score from 0–100 based on the share of applicable checks passed. The project's framing is blunt: "Agents now read most of the web before humans do." The benchmark treats agent-readability as a first-class engineering concern alongside traditional SEO.
---
### 2. Check Categories in v0.2.0 (38 total)
| Theme | Checks | What it covers |
|---|---|---|
| **Site Discoverability** | 14 | llms.txt, robots.txt, sitemap.xml, sitemap.md, and AGENTS.md — the machine-readable entry points agents use to discover and navigate a site. |
| **HTTP** | 4 | Clean reachability: 200 status, short redirect chains, correct Content-Type, and no `noai` headers blocking agents. |
| **HTML Metadata** | 5 | Core page-identity signals: canonical link, meta description, Open Graph tags, and `lang` attribute. |
| **Structured Data** | 3 | Schema.org JSON-LD blocks, including `dateModified` and `BreadcrumbList` for hierarchy context. |
| **Content Structure** | 3 | Minimum heading count, text-to-HTML ratio above 15%, and glossary linking — proxies for substantive, well-organized pages. |
| **Markdown Mirror** | 6 | A `.md`/`.mdx` twin for every HTML page, with correct frontmatter, a canonical Link header, and content-negotiation support. |
| **Code** | 1 | Language tags on every `<pre><code>` block so agents can parse and attribute code correctly. |
| **API** | 1 | A link to `openapi.json` or equivalent on API documentation pages. |
| **Discovery** | 1 | Confirms the page is indexed in at least one of sitemap.xml, llms.txt, or sitemap.md. |
---
### 3. Top 3 Highest-Leverage Improvements
**#1 — Publish `llms.txt` and unblock AI crawlers**
*Checks:* `llms-txt.exists`, `llms-txt.non-empty`, `llms-txt.content-type`, `llms-txt.md-extensions`, `robots-txt.allows-ai-bots`
*Agent payoff:* Without `llms.txt`, an agent must either blind-crawl or guess which pages matter — the site offers no deterministic entry point. a14y calls it "the agent equivalent of a sitemap." Separately, `robots-txt.allows-ai-bots` checks whether GPTBot, ClaudeBot, CCBot, and Google-Extended are blocked; many sites inadvertently block all four by copying generic `robots.txt` templates, meaning their content never enters AI training or retrieval indexes at all.
*What to do:* Create `/llms.txt` — a plain-text file with markdown-formatted links organized by section (docs, blog, API reference). Serve it as `text/plain`. Audit your `robots.txt` for any `Disallow` rules targeting those four agents and remove them unless you have a deliberate policy reason. Both changes are single-engineer, sub-hour tasks.
---
**#2 — Add JSON-LD structured data with `dateModified` and `BreadcrumbList`**
*Checks:* `html.json-ld`, `html.json-ld.date-modified`, `html.json-ld.breadcrumb`
*Agent payoff:* a14y describes JSON-LD as "the richest machine-readable format an HTML page can carry." `dateModified` tells an agent whether to trust the content as current — without it, the agent has to infer freshness from text, which is unreliable. `BreadcrumbList` "tells agents where the page sits in the site hierarchy without making them parse navigation menus," enabling accurate context-aware Q&A and correct link generation (e.g., an agent can answer "where do I find the billing docs?" by reading the hierarchy, not by crawling the nav).
*What to do:* Add a `<script type="application/ld+json">` block to your page template. Set `@type` to match content (Article, TechArticle, WebPage), wire `dateModified` from your CMS's last-updated field, and include a `BreadcrumbList` reflecting the URL hierarchy. Most CMS SEO plugins (Yoast, RankMath) and SSG plugins generate all of this once configured — this is often a settings change, not a code change.
---
**#3 — Serve markdown mirrors of documentation pages**
*Checks:* `markdown.mirror-suffix`, `markdown.alternate-link`, `markdown.frontmatter`, `markdown.content-negotiation`
*Agent payoff:* Markdown strips away HTML scaffolding — no scripts, no nav chrome, no styling — leaving only the content. a14y states plainly that "mirrors are a small amount of work to generate but dramatically reduce the cost of ingesting a doc site." For a SaaS company, this means AI coding assistants, chatbots, and summarizers can reliably read and cite your documentation rather than mangling it through HTML extraction heuristics.
*What to do:* Add a build step that emits `/docs/page.md` alongside `/docs/page` (or `/docs/page/`). Most modern SSGs (Astro, Docusaurus, Next.js) expose source markdown directly or have export plugins. In each HTML page's `<head>`, add `<link rel="alternate" type="text/markdown" href="/docs/page.md">`. Each `.md` file needs YAML frontmatter with `title`, `description`, `doc_version`, and `last_updated`. Ticket this as a site-generator pipeline task with a one-time template change.
---
### 4. One Honest Caveat
The spec is brand new — v0.2.0 shipped April 6, 2026, and there is no published evidence yet that improving an a14y score measurably increases how often AI systems cite, summarize, or surface your content over competitors. The 38 checks reflect one working group's model of agent behavior, not a ratified web standard. The investments above (`llms.txt`, JSON-LD, markdown mirrors) have genuine independent merit (SEO, crawl efficiency), so the downside of compliance is low — but if the pitch to your engineering team is "this will improve our AI visibility," that claim remains unvalidated. Treat it as hygiene with a speculative upside, not a measured conversion lever. Full agent response (highest-scoring run, score 37)
Run 2, judge score 88.
I have everything I need. Writing the evaluation now.
---
# AI Agent Readability: An a14y Evaluation for Your Engineering Backlog
## 1. What a14y Is Measuring
a14y ("agent readability") is an open-source auditing framework — available as a CLI (`npx a14y your-site.com`), Chrome extension, and coding-agent skill — that scores websites against 38 pass/fail checks organized into three layers: **Discoverability** (can an AI agent find all your pages at all?), **Parsing** (once it lands on a page, can it extract content without fighting through HTML, redirect chains, or bot blocks?), and **Comprehension** (once extracted, does the content self-describe its own context — hierarchy, freshness, terminology — accurately enough for the agent to cite it without hallucinating?). The project's stated philosophy, pulled directly from its spec page, is that "agent readability is to AI-mediated discovery what SEO was to search: cheap to implement, compounding in return, and increasingly table stakes." Version 0.2.0, released April 6, 2026, freezes the current 38-check scorecard.
---
## 2. The v0.2.0 Checks by Theme
The 38 checks break cleanly into eight themes:
| Theme | Checks | What it covers |
|---|---|---|
| **llms.txt presence & quality** | `llms-txt.exists`, `llms-txt.content-type`, `llms-txt.non-empty`, `llms-txt.md-extensions` | Whether the site publishes a plain-text crawl manifest agents can use as a deterministic starting point |
| **robots.txt / AI bot access** | `robots-txt.exists`, `robots-txt.allows-ai-bots`, `robots-txt.allows-llms-txt` | Whether robots.txt permits rather than inadvertently blocks the four major AI crawlers (GPTBot, ClaudeBot, CCBot, Google-Extended) |
| **Sitemaps** | `sitemap-xml.exists`, `sitemap-xml.valid`, `sitemap-xml.has-lastmod`, `sitemap-md.exists`, `sitemap-md.has-structure` | Page inventory in both machine-parseable (XML) and agent-friendly (Markdown) formats, with freshness timestamps |
| **Agent skill file** | `agents-md.exists`, `agents-md.has-min-sections` | An AGENTS.md (or CLAUDE.md / .cursor/rules equivalent) that tells AI coding agents how to interact with the product's codebase or API |
| **HTTP fundamentals** | `http.status-200`, `http.redirect-chain`, `http.content-type-html`, `http.no-noindex-noai` | Basic delivery hygiene: clean status codes, short redirect chains, correct content types, and no `noai` response headers silently blocking agents |
| **HTML metadata** | `html.canonical-link`, `html.meta-description`, `html.og-title`, `html.og-description`, `html.lang-attribute` | Standard head-tag signals that anchor page identity and language for agents building citations |
| **Structured data (JSON-LD)** | `html.json-ld`, `html.json-ld.date-modified`, `html.json-ld.breadcrumb` | Machine-readable schema blocks that convey hierarchy, content type, and content freshness without requiring the agent to infer them from prose |
| **Markdown mirrors** | `markdown.mirror-suffix`, `markdown.alternate-link`, `markdown.frontmatter`, `markdown.canonical-header`, `markdown.content-negotiation`, `markdown.sitemap-section` | Parallel `.md` versions of HTML pages so agents can ingest content with no HTML parser, no script execution, and no layout noise |
(The remaining checks — `html.headings`, `html.text-ratio`, `html.glossary-link`, `code.language-tags`, `api.schema-link`, `discovery.indexed` — cover content structure, code hygiene, and per-page index confirmation.)
---
## 3. The Three Highest-Leverage Improvements
### Priority 1: Unblock AI crawlers and publish `llms.txt`
**Checks:** `robots-txt.allows-ai-bots`, `robots-txt.allows-llms-txt`, `llms-txt.exists`, `llms-txt.content-type`, `llms-txt.non-empty`, `llms-txt.md-extensions`
**Why an agent cares:** An agent that can't crawl your site simply doesn't know your product exists. The `robots-txt.allows-ai-bots` check page notes this is "almost always set inadvertently when authors copy-paste a generic robots.txt template" — meaning you may already be blocking GPTBot, ClaudeBot, CCBot, and Google-Extended for no reason. Once crawling is permitted, `llms-txt.exists` gives agents a single, deterministic entry point — "the agent equivalent of a sitemap" — so they don't have to guess which of your hundreds of URLs are authoritative documentation versus marketing fluff.
**What to do:** First, audit your `robots.txt` for any `Disallow` rules targeting those four user-agent strings and remove them. Takes 15 minutes. Second, create `/llms.txt` at the site root: a plain-text, markdown-formatted file that lists the URLs you most want agents to read, grouped under headings (e.g., `## Docs`, `## API Reference`, `## Pricing`), with each URL pointing to a `.md` version where possible. Commit it, verify it returns `Content-Type: text/plain`, and confirm it is not itself disallowed by `robots.txt`. Estimated effort: one engineer, half a day.
---
### Priority 2: Add JSON-LD structured data to every page
**Checks:** `html.json-ld`, `html.json-ld.date-modified`, `html.json-ld.breadcrumb`
**Why an agent cares:** Without structured data, an agent reading your pricing page has to infer from prose that it's a pricing page, guess when the prices were last updated, and reconstruct that it lives under `/product/pricing` by parsing navigation HTML. `html.json-ld.breadcrumb` directly tells the agent where in the site hierarchy a page sits — the check page states it enables "context-aware Q&A and automated link generation." `html.json-ld.date-modified` prevents agents from confidently citing your outdated content as current — an LLM that knows a page was last modified eight months ago can hedge appropriately or prompt a user to verify.
**What to do:** Add a `<script type="application/ld+json">` block to your site layout template so every page gets at minimum a `BreadcrumbList` (with one `ListItem` per URL segment, each carrying `position`, `name`, and `item` fields) and a top-level `dateModified` field populated from your CMS or build pipeline. For a Next.js or similar SSG stack, this is a one-time layout change plus a CMS field; for a custom stack, it's a template partial. The check passes on any parseable JSON-LD node — you don't need perfect schema coverage, just the two node types.
---
### Priority 3: Serve markdown mirrors of your documentation
**Checks:** `markdown.mirror-suffix`, `markdown.alternate-link`, `markdown.frontmatter`, `markdown.content-negotiation`
**Why an agent cares:** The `markdown.mirror-suffix` check page is direct: "A markdown mirror at `<page>.md` is the cleanest format an agent can ingest — no HTML, no scripts, no styling, just the content." For a SaaS company where agents are increasingly used to research integrations, answer support questions, or generate code against your API, the quality of the raw text the agent ingests directly determines the quality of its answers. An agent hitting `/docs/authentication.md` instead of `/docs/authentication` skips your navigation JavaScript, cookie banners, and sidebar menus entirely.
**What to do:** If you use a static site generator (Gatsby, Next.js, Astro, Hugo, Docusaurus), configure it to emit the source `.md` files at their equivalent public URLs — most have a plugin or route handler for this. Add a `<link rel="alternate" type="text/markdown" href="/docs/page.md">` tag in the HTML `<head>` so agents can discover the mirror without guessing. Ensure each `.md` file has YAML frontmatter with at minimum `title`, `description`, `doc_version`, and `last_updated` (the `markdown.frontmatter` check). Start with your top 20 highest-traffic documentation pages, not the whole site.
---
## 4. An Honest Caveat
a14y v0.2.0 was released on April 6, 2026 — barely six weeks before this writing — and the standard has not yet demonstrated wide adoption or proved that conforming sites receive meaningfully better treatment from AI agents in practice. The `llms.txt` convention in particular is still emergent; major AI systems including Google's AI Overviews and most RAG pipelines today index sites by parsing HTML directly, not by consulting a crawl manifest. Investing engineering time now is essentially a bet that the ecosystem catches up to the spec, not a response to a proven mechanism. The right framing for a CTO: Priorities 1 and 2 above are worth doing anyway — unblocking crawlers costs almost nothing and has zero downside, and JSON-LD is already best practice for SEO. The markdown mirror work (Priority 3) is the real bet, and should be scoped to documentation pages only until there's clearer signal that agent traffic on those pages is materially improving conversion or retention.