AI ReadinessScan a storeMethodology
27 scored checks across 4 categories, plus one gate. This page is generated from the same registry the scanner runs, so it cannot describe a version of the tool we no longer ship.
How the score is built
Each check returns a score between 0 and 1. A category score is the weighted mean of its checks; the overall score is the weighted mean of the categories.
| Category | Weight | Checks |
|---|---|---|
| Basic | 25% | 10 |
| Site-wide | 20% | 8 |
| Product pages | 35% | 8 |
| Long-tail pages | 20% | 1 |
Bands
| 85–100 | AI-ready |
| 65–84 | Mostly ready |
| 40–64 | Gaps to close |
| 0–39 | Invisible to agents |
Two rules that keep it honest
A check we could not run leaves the denominator. It does not score zero. “We could not measure your page speed” must never reach you as “your page speed is terrible”, and a check that fails because of a bug in our code is our problem, not a mark against your store.
Below 60% coverage we publish no score at all. A number assembled from the fraction of a store we could see is an artifact of what we could not. You get the findings we did establish, and no headline figure.
Absent is not the same as prevented
| Your store answers | We report |
|---|---|
| 404 / 410 | Fail — the thing is genuinely missing |
| 429 / 403 / 5xx / timeout | Untested — we were prevented from looking |
A store that defends itself well is not a store with missing policies. This distinction is the one the whole report rests on.
Every check we run
Weights are relative within a category. A weight of 0 means the check is a gate or is reported for information and does not move the score.
Basic · 25% of the score
Whether an agent can reach you at all, and whether the machine-readable entry points it looks for are there.
| Store runs on Shopify | gate |
| robots.txt is reachable and parseable | 2 |
| AI crawlers are allowed on product, collection and content pages | 5 |
| robots.txt declares a sitemap | 1 |
| llms.txt is published at the domain root | 2 |
| llms.txt follows the spec and its links resolve | 2 |
| Storefront MCP server responds and advertises its tools | 4 |
| Agents get a real answer to "what is your return policy?" | 3 |
| UCP merchant profile is published at /.well-known/ucp | 3 |
| Products meet Shopify Catalog completeness requirements | 4 |
| Mobile page speed on the homepage and a product page | 3 |
Site-wide · 20% of the score
The pages an agent consults before it will recommend a purchase — shipping, returns, who you are, how to reach you.
| Shipping policy is published and substantive | 3 |
| Return/refund policy is published and substantive | 3 |
| Privacy policy is published | 2 |
| Terms of service are published | 1 |
| An About page explains who the business is | 2 |
| Contact options are published and machine-readable | 3 |
| An FAQ answers pre-purchase questions | 3 |
| FAQ content is marked up as FAQPage structured data | 2 |
Product pages · 35% of the score
The product detail pages themselves: structured data, identifiers, description depth, and whether any of it survives without JavaScript.
| Product pages carry complete Product/Offer structured data | 6 |
| Products carry GTIN/barcode identifiers | 5 |
| Product descriptions contain specifications, not just marketing copy | 4 |
| Reviews are exposed as structured data | 3 |
| Shipping and returns information appears on product pages | 3 |
| Product images have meaningful alt text | 3 |
| Price, title and description are in the server-rendered HTML | 5 |
| Variant options are named meaningfully | 2 |
Long-tail pages · 20% of the score
Editorial and collection content that answers the specific questions buyers ask before they are ready to buy.
| High-intent long-tail content exists beyond product pages | 5 |
The 14 crawlers we check for
We read your robots.txt and work out which of these you allow on product, collection and content paths. Blocking an answer crawler removes your store from AI shopping results today. Blocking a training crawler is a defensible business choice, so we note it rather than mark you down for it.
| OAI-SearchBot | OpenAI | answer |
| ChatGPT-User | OpenAI | answer |
| GPTBot | OpenAI | training |
| Claude-SearchBot | Anthropic | answer |
| Claude-User | Anthropic | answer |
| ClaudeBot | Anthropic | training |
| PerplexityBot | Perplexity | answer |
| Perplexity-User | Perplexity | answer |
| Bingbot | Microsoft | answer |
| Applebot | Apple | answer |
| Applebot-Extended | Apple | training |
| Google-Extended | training | |
| CCBot | Common Crawl | training |
| Meta-ExternalAgent | Meta | training |
What a scan costs your store
We fetch public pages only. No login, no forms, no cart, and nothing is changed.
- At most 80 requests for a whole scan, and typically far fewer.
- At most 4 at a time, with at least 200 ms between them.
- One retry, with backoff, honoring
Retry-After. - After 5 consecutive refusals we stop requesting your store entirely.
- We read
robots.txtfirst and obey it.
More detail, including how to block us, is on our crawler page.
Limits worth knowing
Product checks run against a sample of your catalog, not every product, so those results are an estimate. The sample is deterministic — scanning twice gives the same products.
Long-tail scoring is heuristic. It reads URL patterns, editorial volume and collection descriptions; it does not judge whether the writing is any good.
Page speed comes from Google PageSpeed Insights and is skipped when no API key is configured — skipped, not zero.
Read our privacy notice, about our crawler, or ask us to stop scanning your store.