Open benchmark
How readiness is scored (readiness-v2)
The full specification, with the reasoning behind each weight, is docs/readiness-v2.md. Everything below is served by the same code that scores every run.
The stages and their weights
| Stage | Weight | Share |
|---|---|---|
| Find products | 3 | 15% |
| Read the details | 3 | 15% |
| See the price | 2 | 10% |
| Check stock | 2 | 10% |
| Add to basket | 2 | 10% |
| Reach checkout | 3 | 15% |
| Pay | 2 | 10% |
| Return an order | 1 | 5% |
| Sign in | 2 | 10% |
Rules
- A check scores 100 and passes until a finding lowers it (see severity_effect).
- Within one persona, a checkpoint's score is the mean of its observations and its status is the worst of them.
- Across personas, a checkpoint takes the worst persona's score and status.
- A checkpoint with no scored observation is excluded from the score, never counted as zero.
- Advisory checks report findings and evidence but never change a score or a status.
- The readiness score is the weighted mean of the scored checkpoints' scores, using the weights below, rounded down.
- The run's status is the worst checkpoint status; a run with no scored checkpoint errors rather than passes.
- An LLM verdict can only lower a journey's checkpoints: not achieved caps a passing stage at 50 and warns; partial caps it at 75.
What a finding's severity does
- critical: fail, score 0
- high: fail, score 0
- info: score lowered by 10 while the check still passes, floored at 60
- low: score lowered by 10 while the check still passes, floored at 60
- medium: warn, score capped at 50
Every check
| Check | Stage | Scored |
|---|---|---|
| The scan could reach the store discovery.access | discovery | advisory, not scored |
| Pages are accessible to screen readers and agents alike accessibility.agent-overlap | product_data | advisory, not scored |
| Bot management admits agents authentication.bot_block | discovery | yes |
| Agents can check, return, cancel and redirect orders after buying postpurchase.self-service | refund | advisory, not scored |
| Agents can find discounts, gift cards and subscriptions promotions.agent-flows | price | advisory, not scored |
| Agent payment methods are declared where agents look payments.rails | payment | advisory, not scored |
| Feed and page agree on price truth.price | price | yes |
| Feed and page agree on availability truth.availability | inventory | yes |
| Feed and page agree on what the product is truth.title | product_data | yes |
| No instructions aimed at shopping agents are planted on the store security.prompt-injection | discovery | advisory, not scored |
| llms.txt discovery.llms_txt | discovery | yes |
| The Merchant Center feed is ready for agent checkout discovery.merchant-feed | discovery | yes |
| Product data meets Google's merchant-listing rules schema.merchant_listing | product_data | advisory, not scored |
| Site reachable noop | discovery | yes |
| Agents are shown the same price as people pricing.parity | price | advisory, not scored |
| Product pages are reachable discovery.product_page | discovery | yes |
| robots.txt agent policy discovery.agent_policy | discovery | yes |
| Structured product data schema.product | product_data | yes |
| Structured price schema.offer_price | price | yes |
| Structured availability schema.availability | inventory | yes |
| HTTPS enforced discovery.transport_security | discovery | yes |
| Products are enumerable from a sitemap discovery.sitemap | discovery | yes |
| UCP business profile discovery.ucp_profile | discovery | yes |