{
  "scan": "Insurance — Crane Index (AI Visibility Suite)",
  "cohort": "insurance",
  "date": "2026-09-01",
  "scanners": {
    "retrieval": "AI Search Readiness",
    "execution": "Agent Readiness",
    "representation": "Brand Representation"
  },
  "concurrency": 10,
  "pages": 1,
  "basis": "page",
  "aggregate": {
    "scannedRequested": 181,
    "reachable": 123,
    "unreachable": 58,
    "retrieval": {
      "n": 123,
      "min": 13,
      "max": 84,
      "median": 51,
      "mean": 52,
      "ge70": 16,
      "b5569": 37,
      "b4054": 49,
      "lt40": 21,
      "below55": 70,
      "ge90": 0
    },
    "execution": {
      "n": 123,
      "min": 30,
      "max": 91,
      "median": 63,
      "mean": 66,
      "ge70": 33,
      "b5569": 79,
      "b4054": 5,
      "lt40": 6,
      "below55": 11,
      "ge90": 2
    },
    "representation": {
      "n": 123,
      "min": 8,
      "max": 76,
      "median": 13,
      "mean": 23,
      "ge70": 1,
      "b5569": 9,
      "b4054": 12,
      "lt40": 101,
      "below55": 113,
      "ge90": 0
    },
    "composite": {
      "n": 123,
      "min": 20,
      "max": 77,
      "median": 44,
      "mean": 47,
      "ge70": 3,
      "b5569": 31,
      "b4054": 53,
      "lt40": 36,
      "below55": 89,
      "ge90": 0
    }
  },
  "escalations": [],
  "recoveries": [],
  "companies": [
    {
      "name": "Allianz",
      "domain": "allianz.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "AXA",
      "domain": "axa.com",
      "ok": true,
      "finalUrl": "https://www.axa.com/",
      "offDomain": "axa.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 35,
        "execution": 62,
        "representation": 13,
        "composite": 37
      },
      "detail": {
        "retrieval": {
          "score": 35,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "9 of 51 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 16 H2, 15 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 70,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 855 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 34 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 359 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "58% of 26 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "11 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 855 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "9 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Zurich Insurance Group",
      "domain": "zurich.com",
      "ok": true,
      "finalUrl": "https://www.zurich.com/",
      "offDomain": "zurich.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 58,
        "execution": 66,
        "representation": 10,
        "composite": 45
      },
      "detail": {
        "retrieval": {
          "score": 58,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 57,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "7 of 22 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "3 H1, 3 H2, 6 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 696 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 41 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 192 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 20 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 91,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (11,453 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (3)"
            },
            {
              "sev": "error",
              "label": "5 insecure HTTP resources on a secure page"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 66,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "1 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 696 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 10,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "2 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Assicurazioni Generali",
      "domain": "generali.com",
      "ok": true,
      "finalUrl": "https://www.generali.com/",
      "offDomain": "generali.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 45,
        "execution": 71,
        "representation": 20,
        "composite": 45
      },
      "detail": {
        "retrieval": {
          "score": 45,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "18 of 23 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 13 H2, 43 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 70,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2600 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 14 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 233 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "77% of 30 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 91,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (12,628 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "7 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 71,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "4 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2600 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 20,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "20 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 100,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "pass",
                  "weight": 1,
                  "detail": "You actively govern representation: TDM reservation. (no training opt-out declared.)",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Aviva",
      "domain": "aviva.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": ""
    },
    {
      "name": "Prudential plc",
      "domain": "prudentialplc.com",
      "ok": true,
      "finalUrl": "https://www.prudentialplc.com/en/",
      "offDomain": "prudentialplc.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 42,
        "execution": 62,
        "representation": 13,
        "composite": 39
      },
      "detail": {
        "retrieval": {
          "score": 42,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "17 of 51 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "5 H1, 8 H2, 20 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1600 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 47 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 155 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "92% of 39 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (5)"
            },
            {
              "sev": "error",
              "label": "4 insecure HTTP resources on a secure page"
            },
            {
              "sev": "warning",
              "label": "3 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1600 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "6 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Legal & General",
      "domain": "legalandgeneral.com",
      "ok": true,
      "finalUrl": "https://www.legalandgeneral.com/",
      "offDomain": "legalandgeneral.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 66,
        "execution": 62,
        "representation": 13,
        "composite": 47
      },
      "detail": {
        "retrieval": {
          "score": 66,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 25,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 29,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Dates present in meta or <time> tags, but not in structured data.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 100,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "21 of 22 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 19 H2, 0 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1200 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 76 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 155 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 10 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1200 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "9 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Aegon",
      "domain": "aegon.com",
      "ok": true,
      "finalUrl": "https://aegon.com/",
      "offDomain": "aegon.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 13,
        "execution": 34,
        "representation": 15,
        "composite": 21
      },
      "detail": {
        "retrieval": {
          "score": 13,
          "band": "Largely invisible to AI",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 0,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No paragraph content found.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 0 H2, 0 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 25,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 6 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No title tag found.",
                  "rec": "Add a descriptive title tag."
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No images to assess.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No lists, landmarks or header tables found.",
                  "rec": "Use lists, <main>/<article> landmarks and tables with <th> headers; they help AI parsers isolate and extract your content cleanly."
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 46,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Page is set to noindex (meta or X-Robots-Tag); excluded from search and AI.",
                  "rec": "Remove the noindex directive; a noindexed page cannot be cited."
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "partial",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, no lang.",
                  "rec": "Serve over HTTPS, add a responsive viewport meta tag, and set an html lang attribute."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "error",
              "label": "Page is set to noindex (excluded from search and AI)"
            },
            {
              "sev": "error",
              "label": "Missing title tag"
            },
            {
              "sev": "warning",
              "label": "Missing meta description"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            },
            {
              "sev": "warning",
              "label": "Thin content (under 250 words)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 34,
          "band": "Closed to agents",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 45,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Very little static content (~6 words); agents that do not run JavaScript will see almost nothing.",
                  "rec": "Server-render or pre-render the primary content and controls. Agents and most crawlers do not execute JavaScript, so a client-rendered action surface is invisible to them."
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            },
            {
              "sev": "error",
              "label": "Action surface appears client-side rendered; agents may see little"
            },
            {
              "sev": "warning",
              "label": "Reachable but nothing to operate (little content, no action, no form)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 15,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 100,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "pass",
                  "weight": 1,
                  "detail": "You actively govern representation: TDM reservation. (no training opt-out declared.)",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "NN Group",
      "domain": "nn-group.com",
      "ok": true,
      "finalUrl": "https://www.nn-group.com/",
      "offDomain": "nn-group.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 62,
        "execution": 57,
        "representation": 41,
        "composite": 53
      },
      "detail": {
        "retrieval": {
          "score": 62,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 69,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "3 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 39,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "3 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Uses @graph / @id, but the page does not reference a subject entity.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Dates present in meta or <time> tags, but not in structured data.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "4 of 11 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 15 H2, 33 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 410 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 8 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 147 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 8 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "No robots.txt is blocking AI crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            },
            {
              "sev": "warning",
              "label": "No sitemap discoverable"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 57,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No robots.txt is blocking retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 410 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 25,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml and reference it in robots.txt so agents can enumerate your actionable pages."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 41,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (NN Group), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 confirmed and 0 unverified authoritative home(s) (of 3 declared; the rest did not resolve): x.com, linkedin.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 3,
              "reachable": 3,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "x.com",
                "linkedin.com"
              ],
              "confirmedHosts": [
                "x.com",
                "linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Ageas",
      "domain": "ageas.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "MAPFRE",
      "domain": "mapfre.com",
      "ok": true,
      "finalUrl": "https://www.mapfre.com/",
      "offDomain": "mapfre.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 72,
        "execution": 82,
        "representation": 34,
        "composite": 63
      },
      "detail": {
        "retrieval": {
          "score": 72,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 64,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "3 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 57,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "8 of 9 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 11 H2, 13 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2600 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 24 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 141 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 18 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags plus a Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 82,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2600 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 34,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Mapfre), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 30,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 confirmed and 0 unverified authoritative home(s) (of 3 declared; the rest did not resolve): x.com.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "4 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 3,
              "reachable": 3,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "x.com"
              ],
              "confirmedHosts": [
                "x.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "CNP Assurances",
      "domain": "cnp.fr",
      "ok": true,
      "finalUrl": "https://www.cnp.fr/particuliers",
      "offDomain": "cnp.fr",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 55,
        "execution": 68,
        "representation": 8,
        "composite": 44
      },
      "detail": {
        "retrieval": {
          "score": 55,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 100,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "14 of 17 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "4 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 7 H2, 21 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2200 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 29 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 34 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 21 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags plus a Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 68,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "1 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2200 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Swiss Life",
      "domain": "swisslife.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Baloise",
      "domain": "baloise.com",
      "ok": true,
      "finalUrl": "https://www.helvetia-baloise.com/corporate/hb/de/home.html",
      "offDomain": "helvetia-baloise.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 35,
        "execution": 40,
        "representation": 8,
        "composite": 28
      },
      "detail": {
        "retrieval": {
          "score": 35,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 of 16 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 3 H2, 4 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 715 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 68 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 193 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 22 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 74,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "robots.txt could not be read on this pass (a transient network fault or rate-limit), so AI crawler access is inconclusive and is not scored as a pass.",
                  "rec": "Re-run the scan. If robots.txt still will not load, confirm it responds with 200 and does not Disallow the AI answer crawlers (OAI-SearchBot, PerplexityBot, Claude-SearchBot)."
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            },
            {
              "sev": "warning",
              "label": "No sitemap discoverable"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": true
        },
        "execution": {
          "score": 40,
          "band": "Major friction",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 50,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "partial",
                  "weight": 3,
                  "detail": "Could not establish a browser baseline (control returned 504); agent results inconclusive. Probed: OAI-SearchBot 200, PerplexityBot timeout, ClaudeBot timeout, GPTBot 200.",
                  "rec": "Your CDN or WAF is refusing AI user-agents at the network layer, so the page is invisible to those agents regardless of robots.txt. If you intend to be agent-reachable, allow the retrieval user-agents (OAI-SearchBot, PerplexityBot, Claude-SearchBot) in your bot-management or Pay-Per-Crawl settings. Note: we test this by sending these user-agent strings from our scanner, so it measures how your edge treats the user-agent; a real agent presents the same string from its own network, making this a strong signal rather than a guarantee."
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "partial",
                  "weight": 1,
                  "detail": "robots.txt could not be read on this scan (a transient network fault or rate-limit), so the declared retrieval policy is unmeasured; held inconclusive, not scored as a pass or a block.",
                  "rec": "Re-run the scan. If robots.txt still will not load, confirm it responds with 200 and does not Disallow the retrieval agents (OAI-SearchBot, PerplexityBot, Claude-SearchBot)."
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 715 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 25,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml and reference it in robots.txt so agents can enumerate your actionable pages."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": true
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (training-crawler posture unmeasured this scan: robots.txt could not be read.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": false,
        "consistent": null,
        "note": "browser-ua-unreadable"
      },
      "flags": [
        "robots-unmeasured"
      ]
    },
    {
      "name": "Helvetia",
      "domain": "helvetia.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Vienna Insurance Group",
      "domain": "group.vig",
      "ok": true,
      "finalUrl": "https://group.vig/",
      "offDomain": "group.vig",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 47,
        "execution": 65,
        "representation": 13,
        "composite": 42
      },
      "detail": {
        "retrieval": {
          "score": 47,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "100 of 155 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 6 H2, 18 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 5600 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 29 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 116 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 56 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 85,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (14,712 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "partial",
                  "weight": 0.75,
                  "detail": "HTTPS, no viewport, lang set.",
                  "rec": "Serve over HTTPS, add a responsive viewport meta tag, and set an html lang attribute."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 65,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 5600 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "40 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "UNIQA Insurance Group",
      "domain": "uniqagroup.com",
      "ok": true,
      "finalUrl": "https://www.uniqagroup.com/grp/home.de.html",
      "offDomain": "uniqagroup.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 47,
        "execution": 63,
        "representation": 8,
        "composite": 39
      },
      "detail": {
        "retrieval": {
          "score": 47,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 of 16 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 11 H2, 5 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 566 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 18 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 94 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 12 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 566 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Talanx",
      "domain": "talanx.com",
      "ok": true,
      "finalUrl": "https://www.talanx.com/en",
      "offDomain": "talanx.com",
      "truncated": true,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 44,
        "execution": 62,
        "representation": 28,
        "composite": 45
      },
      "detail": {
        "retrieval": {
          "score": 44,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 31,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 21,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "8 of 19 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "1 H1, 0 H2, 0 H3.",
                  "rec": "Add H2/H3 subheadings; a flat page is hard for a model to segment and quote."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 10800 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 40 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 9 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 74,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "1/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Missing meta description"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 10800 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 28,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Talanx), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "119 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Achmea",
      "domain": "achmea.com",
      "ok": true,
      "finalUrl": "https://www.achmea.nl/en",
      "offDomain": "achmea.nl",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 35,
        "execution": 58,
        "representation": 8,
        "composite": 34
      },
      "detail": {
        "retrieval": {
          "score": 35,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "1 of 9 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 6 H2, 0 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 70,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 246 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 54 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 128 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 19 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags plus a Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            },
            {
              "sev": "warning",
              "label": "Thin content (under 250 words)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 58,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 60,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Only about 246 words in the static HTML; some content likely depends on JavaScript.",
                  "rec": "Server-render or pre-render the primary content and controls. Agents and most crawlers do not execute JavaScript, so a client-rendered action surface is invisible to them."
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Storebrand",
      "domain": "storebrand.no",
      "ok": true,
      "finalUrl": "https://www.storebrand.no/",
      "offDomain": "storebrand.no",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 49,
        "execution": 68,
        "representation": 15,
        "composite": 44
      },
      "detail": {
        "retrieval": {
          "score": 49,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "12 of 34 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 5 H2, 8 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 70,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 581 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 75 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 143 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "57% of 7 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 91,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (2,028 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "3 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 68,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "2 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 581 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "llms.txt present but declares no transactional surfaces.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 15,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 100,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "pass",
                  "weight": 1,
                  "detail": "You actively govern representation: TDM reservation. (no training opt-out declared.)",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Gjensidige",
      "domain": "gjensidige.com",
      "ok": true,
      "finalUrl": "https://www.gjensidige.com/",
      "offDomain": "gjensidige.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 62,
        "execution": 69,
        "representation": 40,
        "composite": 57
      },
      "detail": {
        "retrieval": {
          "score": 62,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 42,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "partial",
                  "weight": 2,
                  "detail": "2 distinct external profiles linked via sameAs.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No logo and contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 32,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Uses @graph / @id, but the page does not reference a subject entity.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 of 8 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 13 H2, 6 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 70,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 548 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 16 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 294 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "17% of 6 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "5 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 69,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 100,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "1 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 548 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 40,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 71,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Gjensidige), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across schema, title and og:site_name, with a legal identifier present.",
                  "rec": null
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 30,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 confirmed and 0 unverified authoritative home(s): linkedin.com.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "4 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No usage terms found on the page (license, copyrightHolder, meta reservation), and the TDM reservation file (/.well-known/tdmrep.json) could not be read on this scan, so the declared-terms verdict is unmeasured rather than a definitive absence. (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 1,
              "reachable": 1,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "linkedin.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "Tryg",
      "domain": "tryg.com",
      "ok": true,
      "finalUrl": "https://tryg.com/en",
      "offDomain": "tryg.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 35,
        "execution": 58,
        "representation": 8,
        "composite": 34
      },
      "detail": {
        "retrieval": {
          "score": 35,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 of 14 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 H1, 1 H2, 0 H3.",
                  "rec": "Add H2/H3 subheadings; a flat page is hard for a model to segment and quote."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 50,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 239 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 18 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 8 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 78,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            },
            {
              "sev": "warning",
              "label": "Missing meta description"
            },
            {
              "sev": "warning",
              "label": "Thin content (under 250 words)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 58,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 60,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Only about 239 words in the static HTML; some content likely depends on JavaScript.",
                  "rec": "Server-render or pre-render the primary content and controls. Agents and most crawlers do not execute JavaScript, so a client-rendered action surface is invisible to them."
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Sampo",
      "domain": "sampo.com",
      "ok": true,
      "finalUrl": "https://www.sampo.com/",
      "offDomain": "sampo.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 68,
        "execution": 65,
        "representation": 59,
        "composite": 64
      },
      "detail": {
        "retrieval": {
          "score": 68,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 78,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization, Person.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "4 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Named author or person with credibility detail (role, employer, expertise or profiles).",
                  "rec": null
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 21,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "23 of 31 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 H1, 11 H2, 0 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 85,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 475 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 30 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 115 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 10 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (172,638 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (2)"
            },
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 65,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "2 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 475 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 59,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Sampo plc), but thin: no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 30,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 confirmed and 0 unverified authoritative home(s) (of 3 declared; the rest did not resolve): linkedin.com.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 80,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Named author or person with credibility detail (role, employer, expertise or profiles).",
                  "rec": null
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "14 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 100,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "pass",
                  "weight": 1,
                  "detail": "You actively govern representation: TDM reservation. (no training opt-out declared.)",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 3,
              "reachable": 3,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": false,
        "note": "inconsistent-serving"
      },
      "flags": []
    },
    {
      "name": "Lansforsakringar",
      "domain": "lansforsakringar.se",
      "ok": true,
      "finalUrl": "https://www.lansforsakringar.se/stockholm/privat/",
      "offDomain": "lansforsakringar.se",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 44,
        "execution": 69,
        "representation": 10,
        "composite": 41
      },
      "detail": {
        "retrieval": {
          "score": 44,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "8 of 16 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 H1, 9 H2, 6 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 770 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 87 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 164 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "93% of 15 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (2)"
            },
            {
              "sev": "warning",
              "label": "1 image missing alt text"
            },
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 69,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 100,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "5 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 770 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 10,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "2 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Atradius",
      "domain": "atradius.com",
      "ok": true,
      "finalUrl": "https://atradius.com/",
      "offDomain": "atradius.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 15,
        "execution": 34,
        "representation": 15,
        "composite": 21
      },
      "detail": {
        "retrieval": {
          "score": 15,
          "band": "Largely invisible to AI",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 0,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No paragraph content found.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 0 H2, 0 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 15,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 24 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 8 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0% of 1 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No lists, landmarks or header tables found.",
                  "rec": "Use lists, <main>/<article> landmarks and tables with <th> headers; they help AI parsers isolate and extract your content cleanly."
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 61,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (38,442 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "fail",
                  "weight": 0.75,
                  "detail": "HTTPS, no viewport, no lang.",
                  "rec": "Serve over HTTPS, add a responsive viewport meta tag, and set an html lang attribute."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "1 image missing alt text"
            },
            {
              "sev": "warning",
              "label": "Missing meta description"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            },
            {
              "sev": "warning",
              "label": "Thin content (under 250 words)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 34,
          "band": "Closed to agents",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 45,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Very little static content (~24 words); agents that do not run JavaScript will see almost nothing.",
                  "rec": "Server-render or pre-render the primary content and controls. Agents and most crawlers do not execute JavaScript, so a client-rendered action surface is invisible to them."
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            },
            {
              "sev": "error",
              "label": "Action surface appears client-side rendered; agents may see little"
            },
            {
              "sev": "warning",
              "label": "Reachable but nothing to operate (little content, no action, no form)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 15,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 100,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "pass",
                  "weight": 1,
                  "detail": "You actively govern representation: TDM reservation. (no training opt-out declared.)",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Munich Re",
      "domain": "munichre.com",
      "ok": true,
      "finalUrl": "https://www.munichre.com/en.html",
      "offDomain": "munichre.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 44,
        "execution": 50,
        "representation": 10,
        "composite": 35
      },
      "detail": {
        "retrieval": {
          "score": 44,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 of 9 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 6 H2, 1 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 500 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 16 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 110 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 1 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 91,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 50,
          "band": "Major friction",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 63,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "partial",
                  "weight": 3,
                  "detail": "Some AI agents are refused at the edge while a browser gets 200 (OAI-SearchBot 200, PerplexityBot 403, ClaudeBot 403, GPTBot 200).",
                  "rec": "Your CDN or WAF is refusing AI user-agents at the network layer, so the page is invisible to those agents regardless of robots.txt. If you intend to be agent-reachable, allow the retrieval user-agents (OAI-SearchBot, PerplexityBot, Claude-SearchBot) in your bot-management or Pay-Per-Crawl settings. Note: we test this by sending these user-agent strings from our scanner, so it measures how your edge treats the user-agent; a real agent presents the same string from its own network, making this a strong signal rather than a guarantee."
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 500 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Some AI agents refused at the edge (PerplexityBot, ClaudeBot)"
            },
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 10,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "3 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Swiss Re",
      "domain": "swissre.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Hannover Re",
      "domain": "hannover-re.com",
      "ok": true,
      "finalUrl": "https://www.hannover-re.com/en/",
      "offDomain": "hannover-re.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 44,
        "execution": 58,
        "representation": 8,
        "composite": 37
      },
      "detail": {
        "retrieval": {
          "score": 44,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 7,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Dates present in meta or <time> tags, but not in structured data.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "7 of 17 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 7 H2, 0 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 70,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 233 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 56 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 156 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 2 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Thin content (under 250 words)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 58,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 60,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Only about 233 words in the static HTML; some content likely depends on JavaScript.",
                  "rec": "Server-render or pre-render the primary content and controls. Agents and most crawlers do not execute JavaScript, so a client-rendered action surface is invisible to them."
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "SCOR",
      "domain": "scor.com",
      "ok": true,
      "finalUrl": "https://www.scor.com/en",
      "offDomain": "scor.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 43,
        "execution": 68,
        "representation": 13,
        "composite": 41
      },
      "detail": {
        "retrieval": {
          "score": 43,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "23 of 48 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 4 H2, 0 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 959 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 15 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "88% of 24 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 78,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "3 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Missing meta description"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 68,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "2 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 959 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "10 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Everest Group",
      "domain": "everestglobal.com",
      "ok": true,
      "finalUrl": "https://www.everestglobal.com/us-en",
      "offDomain": "everestglobal.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 72,
        "execution": 83,
        "representation": 76,
        "composite": 77
      },
      "detail": {
        "retrieval": {
          "score": 72,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 86,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization, Person.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "5 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Named author or person with credibility detail (role, employer, expertise or profiles).",
                  "rec": null
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 39,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 JSON-LD block(s), but 1 failed to parse.",
                  "rec": "Fix the malformed JSON-LD; invalid blocks are ignored or distrusted."
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Dates present in meta or <time> tags, but not in structured data.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "8 of 29 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 3 H2, 7 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 888 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 28 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 140 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 9 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 78,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "No robots.txt is blocking AI crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "1 invalid structured-data block"
            },
            {
              "sev": "warning",
              "label": "No sitemap discoverable"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 83,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No robots.txt is blocking retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 100,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "1 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 888 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 25,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml and reference it in robots.txt so agents can enumerate your actionable pages."
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 76,
          "band": "Well defined",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (Everest) with a description and descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 100,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 confirmed and 1 unverified authoritative home(s): en.wikipedia.org, linkedin.com, crunchbase.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a confirmed registry (en.wikipedia.org) and a profile source.",
                  "rec": null
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 60,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Named author or person with credibility detail (role, employer, expertise or profiles).",
                  "rec": null
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 3,
              "reachable": 2,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "crunchbase.com",
                  "status": 403,
                  "state": "unverified"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org",
                "linkedin.com",
                "crunchbase.com"
              ],
              "confirmedHosts": [
                "en.wikipedia.org",
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "crunchbase.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "RenaissanceRe",
      "domain": "renre.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "PartnerRe",
      "domain": "partnerre.com",
      "ok": true,
      "finalUrl": "https://www.partnerre.com/",
      "offDomain": "partnerre.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 59,
        "execution": 76,
        "representation": 10,
        "composite": 48
      },
      "detail": {
        "retrieval": {
          "score": 59,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 14,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 57,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "9 of 9 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "3 H1, 4 H2, 2 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 571 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 37 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 180 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 16 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (3)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 76,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 63,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "partial",
                  "weight": 3,
                  "detail": "Some AI agents are refused at the edge while a browser gets 200 (OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 403, GPTBot 200).",
                  "rec": "Your CDN or WAF is refusing AI user-agents at the network layer, so the page is invisible to those agents regardless of robots.txt. If you intend to be agent-reachable, allow the retrieval user-agents (OAI-SearchBot, PerplexityBot, Claude-SearchBot) in your bot-management or Pay-Per-Crawl settings. Note: we test this by sending these user-agent strings from our scanner, so it measures how your edge treats the user-agent; a real agent presents the same string from its own network, making this a strong signal rather than a guarantee."
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "1 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 571 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Some AI agents refused at the edge (ClaudeBot)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 10,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "5 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Arch Capital Group",
      "domain": "archgroup.com",
      "ok": true,
      "finalUrl": "https://www.archgroup.com/",
      "offDomain": "archgroup.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 69,
        "execution": 87,
        "representation": 37,
        "composite": 64
      },
      "detail": {
        "retrieval": {
          "score": 69,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 53,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "partial",
                  "weight": 2,
                  "detail": "1 distinct external profile linked via sameAs.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 57,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "16 of 18 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 2 H2, 10 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 926 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 53 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "90% of 10 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            },
            {
              "sev": "warning",
              "label": "1 image missing alt text"
            },
            {
              "sev": "warning",
              "label": "Missing meta description"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 87,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "2 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 926 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 37,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Arch Capital Group Ltd.), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 30,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 confirmed and 0 unverified authoritative home(s): linkedin.com.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "10 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 1,
              "reachable": 1,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "linkedin.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Reinsurance Group of America",
      "domain": "rgare.com",
      "ok": true,
      "finalUrl": "https://www.rgare.com/",
      "offDomain": "rgare.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 54,
        "execution": 62,
        "representation": 25,
        "composite": 47
      },
      "detail": {
        "retrieval": {
          "score": 54,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 25,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 32,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "The page references a subject, but the schema is otherwise flat.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "26 of 39 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 H1, 9 H2, 10 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1200 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 34 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 151 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "97% of 30 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (2)"
            },
            {
              "sev": "warning",
              "label": "1 image missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1200 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 25,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Reinsurance Group of America, Incorporated), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "5 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "China Reinsurance",
      "domain": "chinare.com.cn",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Lancashire Holdings",
      "domain": "lancashiregroup.com",
      "ok": false,
      "reason": "UNREADABLE (no content / client-side rendered)",
      "wafVendor": ""
    },
    {
      "name": "AXIS Capital",
      "domain": "axiscapital.com",
      "ok": true,
      "finalUrl": "https://www.axiscapital.com/",
      "offDomain": "axiscapital.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 43,
        "execution": 65,
        "representation": 23,
        "composite": 44
      },
      "detail": {
        "retrieval": {
          "score": 43,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "12 of 47 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "7 H1, 37 H2, 6 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1200 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 17 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 116 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "91% of 32 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (199,999 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (7)"
            },
            {
              "sev": "warning",
              "label": "3 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 65,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "1 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1200 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 23,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 30,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "7 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "1 outbound citation(s) sit inside claim-bearing paragraphs, the shape of genuinely sourced writing.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 100,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "pass",
                  "weight": 1,
                  "detail": "You actively govern representation: TDM reservation. (no training opt-out declared.)",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Lloyd's of London",
      "domain": "lloyds.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Beazley",
      "domain": "beazley.com",
      "ok": true,
      "finalUrl": "https://www.beazley.com/",
      "offDomain": "beazley.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 28,
        "execution": 55,
        "representation": 15,
        "composite": 33
      },
      "detail": {
        "retrieval": {
          "score": 28,
          "band": "Largely invisible to AI",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 0,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No paragraph content found.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 4 H2, 2 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 681 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 18 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 15 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 91,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (23,974 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "Missing meta description"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 55,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 63,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "partial",
                  "weight": 3,
                  "detail": "Could not establish a browser baseline (control returned 403); agent results inconclusive. Probed: OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200.",
                  "rec": "Your CDN or WAF is refusing AI user-agents at the network layer, so the page is invisible to those agents regardless of robots.txt. If you intend to be agent-reachable, allow the retrieval user-agents (OAI-SearchBot, PerplexityBot, Claude-SearchBot) in your bot-management or Pay-Per-Crawl settings. Note: we test this by sending these user-agent strings from our scanner, so it measures how your edge treats the user-agent; a real agent presents the same string from its own network, making this a strong signal rather than a guarantee."
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "1 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 681 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 15,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 100,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "pass",
                  "weight": 1,
                  "detail": "You actively govern representation: TDM reservation. (no training opt-out declared.)",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": false,
        "consistent": null,
        "note": "browser-ua-unreadable"
      },
      "flags": []
    },
    {
      "name": "Hiscox",
      "domain": "hiscox.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Brit Insurance",
      "domain": "britinsurance.com",
      "ok": true,
      "finalUrl": "https://www.britinsurance.com/",
      "offDomain": "britinsurance.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 47,
        "execution": 69,
        "representation": 31,
        "composite": 49
      },
      "detail": {
        "retrieval": {
          "score": 47,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 64,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization, Corporation.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "partial",
                  "weight": 2,
                  "detail": "1 distinct external profile linked via sameAs.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 43,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 0,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "1 of 7 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 4 H2, 1 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 65,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 372 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 35 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 153 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0% of 1 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "1 image missing alt text"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 69,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 100,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "1 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 372 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 31,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (Brit Limited) with a description and descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "1 authoritative link(s) declared, but none resolved; dead links are not counted.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 1,
              "reachable": 1,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [],
              "confirmedHosts": [],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Chaucer Group",
      "domain": "chaucergroup.com",
      "ok": true,
      "finalUrl": "https://www.chaucergroup.com/",
      "offDomain": "chaucergroup.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 41,
        "execution": 68,
        "representation": 8,
        "composite": 39
      },
      "detail": {
        "retrieval": {
          "score": 41,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 of 4 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 6 H2, 5 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 312 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 68 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 13 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 4 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 91,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "No robots.txt is blocking AI crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 68,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No robots.txt is blocking retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "1 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 312 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Canopius",
      "domain": "canopius.com",
      "ok": true,
      "finalUrl": "https://www.canopius.com/",
      "offDomain": "canopius.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 73,
        "execution": 89,
        "representation": 37,
        "composite": 66
      },
      "detail": {
        "retrieval": {
          "score": 73,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 50,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "partial",
                  "weight": 2,
                  "detail": "2 distinct external profiles linked via sameAs.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 68,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 JSON-LD block(s), but 1 failed to parse.",
                  "rec": "Fix the malformed JSON-LD; invalid blocks are ignored or distrusted."
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Rich types present: Videoobject.",
                  "rec": null
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "6 of 36 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 5 H2, 14 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2000 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 56 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 130 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 20 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "1 invalid structured-data block"
            },
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 89,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 100,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "2 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2000 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 37,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Canopius), but thin: no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 30,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 confirmed and 0 unverified authoritative home(s) (of 2 declared; the rest did not resolve): linkedin.com.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "23 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 2,
              "reachable": 2,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Hamilton Insurance Group",
      "domain": "hamiltongroup.com",
      "ok": true,
      "finalUrl": "https://www.hamiltongroup.com/",
      "offDomain": "hamiltongroup.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 62,
        "execution": 83,
        "representation": 32,
        "composite": 59
      },
      "detail": {
        "retrieval": {
          "score": 62,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 53,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "partial",
                  "weight": 2,
                  "detail": "1 distinct external profile linked via sameAs.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 57,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 of 2 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 2 H2, 14 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 55,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 490 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 24 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 181 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0% of 5 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "5 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 83,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 429, GPTBot 429). 2 probe(s) returned a transient rate-limit or timeout and are not counted as a block.",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "2 form(s) present, but inputs are poorly labelled.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 490 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 32,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Hamilton Insurance Group, Ltd.), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 30,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 confirmed and 0 unverified authoritative home(s): x.com.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 1,
              "reachable": 1,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "x.com",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "x.com"
              ],
              "confirmedHosts": [
                "x.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Convex Group",
      "domain": "convexin.com",
      "ok": true,
      "finalUrl": "https://convexin.com/",
      "offDomain": "convexin.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 63,
        "execution": 82,
        "representation": 13,
        "composite": 53
      },
      "detail": {
        "retrieval": {
          "score": 63,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 14,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 57,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "13 of 17 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 17 H2, 16 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1000 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 26 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 27 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "60% of 20 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags plus a Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            },
            {
              "sev": "warning",
              "label": "8 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 82,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "2 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1000 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "9 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Inigo Insurance",
      "domain": "inigoinsurance.com",
      "ok": true,
      "finalUrl": "https://inigoinsurance.com/",
      "offDomain": "inigoinsurance.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 60,
        "execution": 79,
        "representation": 37,
        "composite": 59
      },
      "detail": {
        "retrieval": {
          "score": 60,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 53,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "partial",
                  "weight": 2,
                  "detail": "1 distinct external profile linked via sameAs.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 57,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "13 of 16 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 9 H2, 2 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 804 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 46 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 133 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "50% of 20 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "10 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 79,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 65,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 804 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "partial",
                  "weight": 1,
                  "detail": "An invisible reCAPTCHA v3 is present; it scores requests rather than blocking outright, but can still gate an action on a low score.",
                  "rec": "Do not gate primary actions behind an interactive CAPTCHA (hCaptcha, Turnstile, reCAPTCHA v2), which agents cannot solve. Invisible scoring (reCAPTCHA v3) is less hostile but can still block a low-scoring agent, so keep it off critical task paths."
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 37,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Inigo Insurance), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 30,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 confirmed and 0 unverified authoritative home(s): x.com.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "8 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 1,
              "reachable": 1,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "x.com",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "x.com"
              ],
              "confirmedHosts": [
                "x.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Ki Insurance",
      "domain": "ki-insurance.com",
      "ok": true,
      "finalUrl": "https://ki-insurance.com/",
      "offDomain": "ki-insurance.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 57,
        "execution": 82,
        "representation": 8,
        "composite": 49
      },
      "detail": {
        "retrieval": {
          "score": 57,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 14,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 57,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "22 of 27 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 9 H2, 0 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 754 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 19 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 47 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 78,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "1/3 Open Graph tags plus a Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Missing meta description"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 82,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 754 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Chubb",
      "domain": "chubb.com",
      "ok": true,
      "finalUrl": "https://www.chubb.com/us-en/",
      "offDomain": "chubb.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 46,
        "execution": 68,
        "representation": 13,
        "composite": 42
      },
      "detail": {
        "retrieval": {
          "score": 46,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "17 of 18 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 7 H2, 7 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1100 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 46 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 147 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "4% of 23 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 91,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "22 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 68,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "1 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1100 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "11 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "The Travelers Companies",
      "domain": "travelers.com",
      "ok": true,
      "finalUrl": "https://www.travelers.com/",
      "offDomain": "travelers.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 61,
        "execution": 63,
        "representation": 23,
        "composite": 49
      },
      "detail": {
        "retrieval": {
          "score": 61,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 31,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 29,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Dates present in meta or <time> tags, but not in structured data.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "27 of 31 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 23 H2, 12 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1300 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 66 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 160 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 17 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "16 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1300 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 23,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Travelers), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Progressive",
      "domain": "progressive.com",
      "ok": true,
      "finalUrl": "https://www.progressive.com/",
      "offDomain": "progressive.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 49,
        "execution": 63,
        "representation": 13,
        "composite": 42
      },
      "detail": {
        "retrieval": {
          "score": 49,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "67 of 102 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 5 H2, 13 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2900 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 50 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 134 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "80% of 20 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "4 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "6 form(s) present, but an anti-bot honeypot field is likely to reject an autonomous submission.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2900 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "18 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Allstate",
      "domain": "allstate.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Liberty Mutual",
      "domain": "libertymutual.com",
      "ok": true,
      "finalUrl": "https://www.libertymutual.com/",
      "offDomain": "libertymutual.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 79,
        "execution": 83,
        "representation": 64,
        "composite": 75
      },
      "detail": {
        "retrieval": {
          "score": 79,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 75,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "6 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 43,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "3 of 7 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 11 H2, 10 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 929 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 53 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 133 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 6 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (6,340 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 83,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "2 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 929 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "llms.txt present but declares no transactional surfaces.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 64,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (Liberty Mutual) with a description and descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 100,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "3 confirmed and 0 unverified authoritative home(s) (of 6 declared; the rest did not resolve): en.wikipedia.org, twitter.com, linkedin.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a confirmed registry (en.wikipedia.org) and a profile source.",
                  "rec": null
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "4 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 5,
              "confirmed": 3,
              "dead": 0,
              "links": [
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "twitter.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org",
                "twitter.com",
                "linkedin.com"
              ],
              "confirmedHosts": [
                "en.wikipedia.org",
                "twitter.com",
                "linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "State Farm",
      "domain": "statefarm.com",
      "ok": true,
      "finalUrl": "https://www.statefarm.com/",
      "offDomain": "statefarm.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 78,
        "execution": 85,
        "representation": 66,
        "composite": 76
      },
      "detail": {
        "retrieval": {
          "score": 78,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 75,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "5 distinct external profiles linked via sameAs (6 links in total).",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 75,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "The page references a subject, but the schema is otherwise flat.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Rich types present: Service.",
                  "rec": null
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Products or services are described in structured data.",
                  "rec": null
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "29 of 33 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 8 H2, 3 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1100 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 60 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 249 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 41 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 91,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 85,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 63,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "partial",
                  "weight": 3,
                  "detail": "Could not establish a browser baseline (control returned 401); agent results inconclusive. Probed: OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200.",
                  "rec": "Your CDN or WAF is refusing AI user-agents at the network layer, so the page is invisible to those agents regardless of robots.txt. If you intend to be agent-reachable, allow the retrieval user-agents (OAI-SearchBot, PerplexityBot, Claude-SearchBot) in your bot-management or Pay-Per-Crawl settings. Note: we test this by sending these user-agent strings from our scanner, so it measures how your edge treats the user-agent; a real agent presents the same string from its own network, making this a strong signal rather than a guarantee."
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 100,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Products or services are described in structured data.",
                  "rec": null
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 100,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "3 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1100 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 66,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (State Farm) with a description and descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 100,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 confirmed and 0 unverified authoritative home(s) (of 6 declared; the rest did not resolve): en.wikipedia.org, twitter.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a confirmed registry (en.wikipedia.org) and a profile source.",
                  "rec": null
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "10 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No usage terms found on the page (license, copyrightHolder, meta reservation), and the TDM reservation file (/.well-known/tdmrep.json) could not be read on this scan, so the declared-terms verdict is unmeasured rather than a definitive absence. (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 5,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org",
                "twitter.com"
              ],
              "confirmedHosts": [
                "en.wikipedia.org",
                "twitter.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": false,
        "consistent": null,
        "note": "browser-ua-unreadable"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "USAA",
      "domain": "usaa.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Farmers Insurance",
      "domain": "farmers.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "American Family Insurance",
      "domain": "amfam.com",
      "ok": true,
      "finalUrl": "https://www.amfam.com/",
      "offDomain": "amfam.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 44,
        "execution": 66,
        "representation": 18,
        "composite": 43
      },
      "detail": {
        "retrieval": {
          "score": 44,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "3 of 5 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 7 H2, 1 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 85,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 421 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 53 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 161 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 17 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (143,404 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 66,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 421 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 18,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "2 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 100,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "pass",
                  "weight": 1,
                  "detail": "You actively govern representation: TDM reservation. (no training opt-out declared.)",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Erie Insurance",
      "domain": "erieinsurance.com",
      "ok": false,
      "reason": "UNREADABLE (no content / client-side rendered)",
      "wafVendor": ""
    },
    {
      "name": "Cincinnati Financial",
      "domain": "cinfin.com",
      "ok": true,
      "finalUrl": "https://www.cinfin.com/",
      "offDomain": "cinfin.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 47,
        "execution": 63,
        "representation": 10,
        "composite": 40
      },
      "detail": {
        "retrieval": {
          "score": 47,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "6 of 14 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 4 H2, 7 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 739 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 53 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 141 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 16 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "1 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 739 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 10,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "4 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "The Hartford",
      "domain": "thehartford.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "CNA Financial",
      "domain": "cna.com",
      "ok": true,
      "finalUrl": "https://www.cna.com/",
      "offDomain": "cna.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 39,
        "execution": 56,
        "representation": 8,
        "composite": 34
      },
      "detail": {
        "retrieval": {
          "score": 39,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "12 of 22 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 H1, 0 H2, 8 H3.",
                  "rec": "Add H2/H3 subheadings; a flat page is hard for a model to segment and quote."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 804 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 45 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 30 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 78,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Heading levels skip from H1 to H3"
            },
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            },
            {
              "sev": "warning",
              "label": "Missing meta description"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 56,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 63,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "partial",
                  "weight": 3,
                  "detail": "Could not establish a browser baseline (control returned 403); agent results inconclusive. Probed: OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200.",
                  "rec": "Your CDN or WAF is refusing AI user-agents at the network layer, so the page is invisible to those agents regardless of robots.txt. If you intend to be agent-reachable, allow the retrieval user-agents (OAI-SearchBot, PerplexityBot, Claude-SearchBot) in your bot-management or Pay-Per-Crawl settings. Note: we test this by sending these user-agent strings from our scanner, so it measures how your edge treats the user-agent; a real agent presents the same string from its own network, making this a strong signal rather than a guarantee."
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "1 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 804 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": false,
        "consistent": null,
        "note": "browser-ua-unreadable"
      },
      "flags": []
    },
    {
      "name": "W. R. Berkley",
      "domain": "berkley.com",
      "ok": true,
      "finalUrl": "https://www.berkley.com/",
      "offDomain": "berkley.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 51,
        "execution": 62,
        "representation": 13,
        "composite": 42
      },
      "detail": {
        "retrieval": {
          "score": 51,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 32,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Uses @graph / @id, but the page does not reference a subject entity.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "17 of 42 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 9 H2, 21 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1400 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 46 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 186 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "83% of 181 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 78,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "30 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1400 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "9 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Markel",
      "domain": "markel.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Assurant",
      "domain": "assurant.com",
      "ok": true,
      "finalUrl": "https://www.assurant.com/",
      "offDomain": "assurant.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 58,
        "execution": 82,
        "representation": 41,
        "composite": 60
      },
      "detail": {
        "retrieval": {
          "score": 58,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 53,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "5 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 43,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "3 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "1 of 5 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 H1, 7 H2, 13 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 85,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 428 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 66 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 180 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 27 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (2)"
            },
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 82,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 428 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 41,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Assurant), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 confirmed and 0 unverified authoritative home(s) (of 5 declared; the rest did not resolve): twitter.com, linkedin.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 5,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "twitter.com",
                "linkedin.com"
              ],
              "confirmedHosts": [
                "twitter.com",
                "linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "GEICO",
      "domain": "geico.com",
      "ok": true,
      "finalUrl": "https://www.geico.com/",
      "offDomain": "geico.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 51,
        "execution": 62,
        "representation": 13,
        "composite": 42
      },
      "detail": {
        "retrieval": {
          "score": 51,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 14,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 21,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "7 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "14 of 18 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 20 H2, 12 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 972 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 50 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 50 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 18 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 78,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 972 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "13 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Nationwide",
      "domain": "nationwide.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Akamai"
    },
    {
      "name": "American International Group",
      "domain": "aig.com",
      "ok": true,
      "finalUrl": "https://www.aig.com/home",
      "offDomain": "aig.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 71,
        "execution": 63,
        "representation": 60,
        "composite": 65
      },
      "detail": {
        "retrieval": {
          "score": 71,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 89,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization, Person.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "20 distinct external profiles linked via sameAs (26 links in total).",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Named author or person with credibility detail (role, employer, expertise or profiles).",
                  "rec": null
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Social proof schema",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Reputation is verifiable through a linked review profile (sameAs).",
                  "rec": null
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 21,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "63 of 125 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 43 H2, 13 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 4000 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 27 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 160 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "93% of 27 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            },
            {
              "sev": "warning",
              "label": "2 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "1 form(s) present, but an anti-bot honeypot field is likely to reject an autonomous submission.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 4000 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 60,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (AIG) with a description and descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 30,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 confirmed and 1 unverified authoritative home(s) (of 7 declared; the rest did not resolve): linkedin.com, crunchbase.com.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 80,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Named author or person with credibility detail (role, employer, expertise or profiles).",
                  "rec": null
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "27 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No usage terms found on the page (license, copyrightHolder, meta reservation), and the TDM reservation file (/.well-known/tdmrep.json) could not be read on this scan, so the declared-terms verdict is unmeasured rather than a definitive absence. (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 4,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "crunchbase.com",
                  "status": 403,
                  "state": "unverified"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "crunchbase.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "crunchbase.com"
              ]
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "MetLife",
      "domain": "metlife.com",
      "ok": true,
      "finalUrl": "https://www.metlife.com/",
      "offDomain": "metlife.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 58,
        "execution": 68,
        "representation": 13,
        "composite": 46
      },
      "detail": {
        "retrieval": {
          "score": 58,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 14,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 36,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "15 of 35 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 2 H2, 8 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 4000 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 49 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 171 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 14 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 91,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (2,195 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 68,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "2 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 4000 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "llms.txt present but declares no transactional surfaces.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "6 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No usage terms found on the page (license, copyrightHolder, meta reservation), and the TDM reservation file (/.well-known/tdmrep.json) could not be read on this scan, so the declared-terms verdict is unmeasured rather than a definitive absence. (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "Prudential Financial",
      "domain": "prudential.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "New York Life",
      "domain": "newyorklife.com",
      "ok": true,
      "finalUrl": "https://www.newyorklife.com/",
      "offDomain": "newyorklife.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 68,
        "execution": 77,
        "representation": 39,
        "composite": 61
      },
      "detail": {
        "retrieval": {
          "score": 68,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 69,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "5 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 21,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "4 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "53 of 79 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 6 H2, 6 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2100 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 57 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 152 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "97% of 33 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "2 insecure HTTP resources on a secure page"
            },
            {
              "sev": "warning",
              "label": "1 image missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 77,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 63,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "partial",
                  "weight": 3,
                  "detail": "Some AI agents are refused at the edge while a browser gets 200 (OAI-SearchBot 200, PerplexityBot 403, ClaudeBot 403, GPTBot 200).",
                  "rec": "Your CDN or WAF is refusing AI user-agents at the network layer, so the page is invisible to those agents regardless of robots.txt. If you intend to be agent-reachable, allow the retrieval user-agents (OAI-SearchBot, PerplexityBot, Claude-SearchBot) in your bot-management or Pay-Per-Crawl settings. Note: we test this by sending these user-agent strings from our scanner, so it measures how your edge treats the user-agent; a real agent presents the same string from its own network, making this a strong signal rather than a guarantee."
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 100,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "4 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2100 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Some AI agents refused at the edge (PerplexityBot, ClaudeBot)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 39,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (New York Life Insurance Company), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name \"New York Life Insurance Company\" is not clearly echoed in the title or og:site_name, which weakens disambiguation.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 30,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 confirmed and 0 unverified authoritative home(s) (of 5 declared; the rest did not resolve): twitter.com.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 30,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "8 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "1 outbound citation(s) sit inside claim-bearing paragraphs, the shape of genuinely sourced writing.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 5,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "twitter.com"
              ],
              "confirmedHosts": [
                "twitter.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "MassMutual",
      "domain": "massmutual.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Northwestern Mutual",
      "domain": "northwesternmutual.com",
      "ok": true,
      "finalUrl": "https://www.northwesternmutual.com/",
      "offDomain": "northwesternmutual.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 53,
        "execution": 59,
        "representation": 13,
        "composite": 42
      },
      "detail": {
        "retrieval": {
          "score": 53,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 100,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "31 of 37 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "11 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 7 H2, 16 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2000 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 69 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 174 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 9 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 74,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "1/3 Open Graph tags plus a Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 59,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 65,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "2 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2000 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "partial",
                  "weight": 1,
                  "detail": "An invisible reCAPTCHA v3 is present; it scores requests rather than blocking outright, but can still gate an action on a low score.",
                  "rec": "Do not gate primary actions behind an interactive CAPTCHA (hCaptcha, Turnstile, reCAPTCHA v2), which agents cannot solve. Invisible scoring (reCAPTCHA v3) is less hostile but can still block a low-scoring agent, so keep it off critical task paths."
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "25 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Lincoln Financial",
      "domain": "lincolnfinancial.com",
      "ok": false,
      "reason": "UNREADABLE (no content / client-side rendered)",
      "wafVendor": ""
    },
    {
      "name": "Principal Financial Group",
      "domain": "principal.com",
      "ok": true,
      "finalUrl": "https://www.principal.com/",
      "offDomain": "principal.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 63,
        "execution": 63,
        "representation": 43,
        "composite": 56
      },
      "detail": {
        "retrieval": {
          "score": 63,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 67,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Corporation.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "5 distinct external profiles linked via sameAs (10 links in total).",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 43,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "16 of 36 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 7 H2, 2 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 898 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 50 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 104 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 5 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 898 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 43,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Principal Financial Group®), but thin: no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name \"Principal Financial Group®\" is not clearly echoed in the title or og:site_name, which weakens disambiguation.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 confirmed and 0 unverified authoritative home(s) (of 5 declared; the rest did not resolve): linkedin.com, twitter.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "1 outbound citation(s) sit inside claim-bearing paragraphs, the shape of genuinely sourced writing.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 5,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "twitter.com"
              ],
              "confirmedHosts": [
                "linkedin.com",
                "twitter.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Aflac",
      "domain": "aflac.com",
      "ok": true,
      "finalUrl": "https://www.aflac.com/",
      "offDomain": "aflac.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 65,
        "execution": 71,
        "representation": 23,
        "composite": 53
      },
      "detail": {
        "retrieval": {
          "score": 65,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 31,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 21,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "27 of 40 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "3 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "4 H1, 12 H2, 28 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2300 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 55 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 107 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "95% of 19 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (5,791 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (4)"
            },
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            },
            {
              "sev": "warning",
              "label": "1 image missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 71,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 63,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "partial",
                  "weight": 3,
                  "detail": "Could not establish a browser baseline (control returned 403); agent results inconclusive. Probed: OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200.",
                  "rec": "Your CDN or WAF is refusing AI user-agents at the network layer, so the page is invisible to those agents regardless of robots.txt. If you intend to be agent-reachable, allow the retrieval user-agents (OAI-SearchBot, PerplexityBot, Claude-SearchBot) in your bot-management or Pay-Per-Crawl settings. Note: we test this by sending these user-agent strings from our scanner, so it measures how your edge treats the user-agent; a real agent presents the same string from its own network, making this a strong signal rather than a guarantee."
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "2 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2300 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "llms.txt present but declares no transactional surfaces.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 23,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Aflac), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": false,
        "consistent": null,
        "note": "browser-ua-unreadable"
      },
      "flags": []
    },
    {
      "name": "Unum",
      "domain": "unum.com",
      "ok": true,
      "finalUrl": "https://www.unum.com/",
      "offDomain": "unum.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 40,
        "execution": 62,
        "representation": 8,
        "composite": 37
      },
      "detail": {
        "retrieval": {
          "score": 40,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "6 of 21 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "4 H1, 6 H2, 2 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 688 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 77 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 199 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 20 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (4)"
            },
            {
              "sev": "error",
              "label": "2 insecure HTTP resources on a secure page"
            },
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 688 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Guardian Life",
      "domain": "guardianlife.com",
      "ok": true,
      "finalUrl": "https://www.guardianlife.com/",
      "offDomain": "guardianlife.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 57,
        "execution": 63,
        "representation": 13,
        "composite": 44
      },
      "detail": {
        "retrieval": {
          "score": 57,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 100,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "42 of 69 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 14 H2, 43 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2200 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 8 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 140 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 34 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (2,947 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "1 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2200 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "llms.txt present but declares no transactional surfaces.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "18 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Pacific Life",
      "domain": "pacificlife.com",
      "ok": true,
      "finalUrl": "https://www.pacificlife.com/",
      "offDomain": "pacificlife.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 37,
        "execution": 62,
        "representation": 8,
        "composite": 36
      },
      "detail": {
        "retrieval": {
          "score": 37,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "81 of 95 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 H1, 0 H2, 19 H3.",
                  "rec": "Add H2/H3 subheadings; a flat page is hard for a model to segment and quote."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 70,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 7900 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 52 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 296 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "54% of 26 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 74,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap is referenced but its file could not be read on this scan, so its lastmod freshness is unmeasured.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Heading levels skip from H1 to H3"
            },
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            },
            {
              "sev": "warning",
              "label": "12 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "A form element is present but has no usable named inputs.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 7900 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Voya Financial",
      "domain": "voya.com",
      "ok": true,
      "finalUrl": "https://www.voya.com/",
      "offDomain": "voya.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 64,
        "execution": 76,
        "representation": 58,
        "composite": 66
      },
      "detail": {
        "retrieval": {
          "score": 64,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 61,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "5 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 32,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Uses @graph / @id, but the page does not reference a subject entity.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "8 of 25 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 4 H2, 0 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1700 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 63 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 155 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 1 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 74,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (2,443 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No sitemap discoverable"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 76,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1700 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 25,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "llms.txt present but declares no transactional surfaces.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml and reference it in robots.txt so agents can enumerate your actionable pages."
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 58,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Voya Financial), but thin: no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name \"Voya Financial\" is not clearly echoed in the title or og:site_name, which weakens disambiguation.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 100,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 confirmed and 0 unverified authoritative home(s) (of 5 declared; the rest did not resolve): linkedin.com, en.wikipedia.org.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a confirmed registry (en.wikipedia.org) and a profile source.",
                  "rec": null
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "9 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 5,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "en.wikipedia.org"
              ],
              "confirmedHosts": [
                "linkedin.com",
                "en.wikipedia.org"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Brighthouse Financial",
      "domain": "brighthousefinancial.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Corebridge Financial",
      "domain": "corebridgefinancial.com",
      "ok": true,
      "finalUrl": "https://www.corebridgefinancial.com/",
      "offDomain": "corebridgefinancial.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 43,
        "execution": 68,
        "representation": 13,
        "composite": 41
      },
      "detail": {
        "retrieval": {
          "score": 43,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "33 of 60 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 H1, 6 H2, 9 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2100 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 20 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 143 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "88% of 8 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (2)"
            },
            {
              "sev": "warning",
              "label": "1 image missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 68,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "1 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2100 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "8 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Equitable Holdings",
      "domain": "equitable.com",
      "ok": true,
      "finalUrl": "https://equitable.com/",
      "offDomain": "equitable.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 22,
        "execution": 34,
        "representation": 15,
        "composite": 24
      },
      "detail": {
        "retrieval": {
          "score": 22,
          "band": "Largely invisible to AI",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 17,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 of 3 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 1 H2, 0 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 20,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 27 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 9 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0% of 1 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 74,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (1,912 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "1 image missing alt text"
            },
            {
              "sev": "warning",
              "label": "Missing meta description"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            },
            {
              "sev": "warning",
              "label": "Thin content (under 250 words)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 34,
          "band": "Closed to agents",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 45,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Very little static content (~27 words); agents that do not run JavaScript will see almost nothing.",
                  "rec": "Server-render or pre-render the primary content and controls. Agents and most crawlers do not execute JavaScript, so a client-rendered action surface is invisible to them."
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            },
            {
              "sev": "error",
              "label": "Action surface appears client-side rendered; agents may see little"
            },
            {
              "sev": "warning",
              "label": "Reachable but nothing to operate (little content, no action, no form)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 15,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 100,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "pass",
                  "weight": 1,
                  "detail": "You actively govern representation: TDM reservation. (no training opt-out declared.)",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Ameriprise Financial",
      "domain": "ameriprise.com",
      "ok": true,
      "finalUrl": "https://www.ameriprise.com/",
      "offDomain": "ameriprise.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 55,
        "execution": 86,
        "representation": 34,
        "composite": 58
      },
      "detail": {
        "retrieval": {
          "score": 55,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 58,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "3 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 21,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "11 of 11 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 1 H2, 2 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 641 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 71 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 116 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No images to assess.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 91,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (13,763 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 86,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 641 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 34,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Ameriprise Financial), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 30,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 confirmed and 0 unverified authoritative home(s) (of 3 declared; the rest did not resolve): linkedin.com.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "2 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 3,
              "reachable": 3,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Jackson Financial",
      "domain": "jackson.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Athene",
      "domain": "athene.com",
      "ok": true,
      "finalUrl": "https://www.athene.com/",
      "offDomain": "athene.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 46,
        "execution": 66,
        "representation": 10,
        "composite": 41
      },
      "detail": {
        "retrieval": {
          "score": 46,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "30 of 48 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 9 H2, 0 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1500 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 59 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 172 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "73% of 11 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (5,349 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "3 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 66,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1500 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 10,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "3 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No usage terms found on the page (license, copyrightHolder, meta reservation), and the TDM reservation file (/.well-known/tdmrep.json) could not be read on this scan, so the declared-terms verdict is unmeasured rather than a definitive absence. (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "Thrivent",
      "domain": "thrivent.com",
      "ok": true,
      "finalUrl": "https://www.thrivent.com/",
      "offDomain": "thrivent.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 49,
        "execution": 63,
        "representation": 13,
        "composite": 42
      },
      "detail": {
        "retrieval": {
          "score": 49,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "6 of 11 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 8 H2, 3 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1200 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 48 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 139 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 7 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "1 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1200 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "13 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "TIAA",
      "domain": "tiaa.org",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "UnitedHealth Group",
      "domain": "unitedhealthgroup.com",
      "ok": true,
      "finalUrl": "https://www.unitedhealthgroup.com/",
      "offDomain": "unitedhealthgroup.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 67,
        "execution": 66,
        "representation": 46,
        "composite": 60
      },
      "detail": {
        "retrieval": {
          "score": 67,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 75,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Corporation.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "4 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 32,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Uses @graph / @id, but the page does not reference a subject entity.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "16 of 27 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "4 H1, 3 H2, 9 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 918 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 56 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 111 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "88% of 24 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (83,386 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (4)"
            },
            {
              "sev": "warning",
              "label": "3 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 66,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 918 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 46,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 57,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (named) with a description and descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 30,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 confirmed and 0 unverified authoritative home(s) (of 4 declared; the rest did not resolve): twitter.com.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "6 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 100,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "pass",
                  "weight": 1,
                  "detail": "You actively govern representation: TDM reservation. (no training opt-out declared.)",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 4,
              "reachable": 3,
              "confirmed": 1,
              "dead": 1,
              "links": [
                {
                  "host": "twitter.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 404,
                  "state": "dead"
                }
              ],
              "scoringHosts": [
                "twitter.com"
              ],
              "confirmedHosts": [
                "twitter.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Elevance Health",
      "domain": "elevancehealth.com",
      "ok": true,
      "finalUrl": "https://www.elevancehealth.com/",
      "offDomain": "elevancehealth.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 62,
        "execution": 63,
        "representation": 61,
        "composite": 62
      },
      "detail": {
        "retrieval": {
          "score": 62,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 69,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization, Person.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "4 distinct external profiles linked via sameAs (8 links in total).",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Named author or person with credibility detail (role, employer, expertise or profiles).",
                  "rec": null
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 21,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "17 of 101 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 H1, 4 H2, 1 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1100 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 52 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 132 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "73% of 33 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (2)"
            },
            {
              "sev": "warning",
              "label": "9 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1100 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 61,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Elevance Health), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 confirmed and 0 unverified authoritative home(s) (of 4 declared; the rest did not resolve): linkedin.com, x.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 80,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Named author or person with credibility detail (role, employer, expertise or profiles).",
                  "rec": null
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "11 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No usage terms found on the page (license, copyrightHolder, meta reservation), and the TDM reservation file (/.well-known/tdmrep.json) could not be read on this scan, so the declared-terms verdict is unmeasured rather than a definitive absence. (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 5,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "x.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com",
                "x.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "Cigna",
      "domain": "cigna.com",
      "ok": true,
      "finalUrl": "https://www.cigna.com/",
      "offDomain": "cigna.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 63,
        "execution": 71,
        "representation": 28,
        "composite": 54
      },
      "detail": {
        "retrieval": {
          "score": 63,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 31,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No logo and contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 32,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Uses @graph / @id, but the page does not reference a subject entity.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "29 of 34 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 H1, 6 H2, 12 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1800 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 52 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 139 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 9 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (8,974 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "1/3 Open Graph tags plus a Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (2)"
            },
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 71,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "2 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1800 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 28,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Cigna Corporation), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name \"Cigna Corporation\" is not clearly echoed in the title or og:site_name, which weakens disambiguation.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "10 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Humana",
      "domain": "humana.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Centene",
      "domain": "centene.com",
      "ok": true,
      "finalUrl": "https://www.centene.com/",
      "offDomain": "centene.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 45,
        "execution": 59,
        "representation": 8,
        "composite": 37
      },
      "detail": {
        "retrieval": {
          "score": 45,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "10 of 14 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 7 H2, 0 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 616 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 61 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 150 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 6 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 74,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "1/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 59,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 65,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "A form element is present but has no usable named inputs.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 616 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "partial",
                  "weight": 1,
                  "detail": "An invisible reCAPTCHA v3 is present; it scores requests rather than blocking outright, but can still gate an action on a low score.",
                  "rec": "Do not gate primary actions behind an interactive CAPTCHA (hCaptcha, Turnstile, reCAPTCHA v2), which agents cannot solve. Invisible scoring (reCAPTCHA v3) is less hostile but can still block a low-scoring agent, so keep it off critical task paths."
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Molina Healthcare",
      "domain": "molinahealthcare.com",
      "ok": true,
      "finalUrl": "https://www.molinahealthcare.com/",
      "offDomain": "molinahealthcare.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 52,
        "execution": 62,
        "representation": 8,
        "composite": 41
      },
      "detail": {
        "retrieval": {
          "score": 52,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 100,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "6 of 14 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 7 H2, 14 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 717 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 17 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 12 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 78,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "2 insecure HTTP resources on a secure page"
            },
            {
              "sev": "warning",
              "label": "Missing meta description"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "1 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 717 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "fail",
                  "weight": 1,
                  "detail": "An interactive CAPTCHA (hCaptcha, Cloudflare Turnstile or reCAPTCHA v2) is present; autonomous agents cannot pass it.",
                  "rec": "Do not gate primary actions behind an interactive CAPTCHA (hCaptcha, Turnstile, reCAPTCHA v2), which agents cannot solve. Invisible scoring (reCAPTCHA v3) is less hostile but can still block a low-scoring agent, so keep it off critical task paths."
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            },
            {
              "sev": "warning",
              "label": "Interactive CAPTCHA present; autonomous agents cannot complete it"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Aetna",
      "domain": "aetna.com",
      "ok": true,
      "finalUrl": "https://www.aetna.com/",
      "offDomain": "aetna.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 52,
        "execution": 56,
        "representation": 10,
        "composite": 39
      },
      "detail": {
        "retrieval": {
          "score": 52,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 100,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "53 of 69 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 45 H2, 12 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 70,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 4700 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 30 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 216 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "18% of 11 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "2 insecure HTTP resources on a secure page"
            },
            {
              "sev": "warning",
              "label": "9 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 56,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 63,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "partial",
                  "weight": 3,
                  "detail": "Some AI agents are refused at the edge while a browser gets 200 (OAI-SearchBot 200, PerplexityBot 403, ClaudeBot 403, GPTBot 200).",
                  "rec": "Your CDN or WAF is refusing AI user-agents at the network layer, so the page is invisible to those agents regardless of robots.txt. If you intend to be agent-reachable, allow the retrieval user-agents (OAI-SearchBot, PerplexityBot, Claude-SearchBot) in your bot-management or Pay-Per-Crawl settings. Note: we test this by sending these user-agent strings from our scanner, so it measures how your edge treats the user-agent; a real agent presents the same string from its own network, making this a strong signal rather than a guarantee."
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "3 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 4700 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Some AI agents refused at the edge (PerplexityBot, ClaudeBot)"
            },
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 10,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "3 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Kaiser Permanente",
      "domain": "kaiserpermanente.org",
      "ok": true,
      "finalUrl": "https://healthy.kaiserpermanente.org/front-door",
      "offDomain": "healthy.kaiserpermanente.org",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 64,
        "execution": 69,
        "representation": 29,
        "composite": 54
      },
      "detail": {
        "retrieval": {
          "score": 64,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 53,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "5 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Author or person is named, but without credential depth.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 43,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Rich types present: Article.",
                  "rec": null
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "26 of 32 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "6 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 12 H2, 26 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1500 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 59 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 120 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 84 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 74,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags plus a Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 69,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 100,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "2 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1500 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 29,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 29,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (named), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "4 authoritative link(s) declared, but none resolved; dead links are not counted.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 50,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "A person or author is named, but without credential depth.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "3 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "1 outbound citation(s) sit inside claim-bearing paragraphs, the shape of genuinely sourced writing.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 4,
              "reachable": 3,
              "confirmed": 0,
              "dead": 1,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 520,
                  "state": "dead"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [],
              "confirmedHosts": [],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "sameas-unverified"
      ]
    },
    {
      "name": "Health Care Service Corporation",
      "domain": "hcsc.com",
      "ok": true,
      "finalUrl": "https://www.hcsc.com/",
      "offDomain": "hcsc.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 39,
        "execution": 62,
        "representation": 13,
        "composite": 38
      },
      "detail": {
        "retrieval": {
          "score": 39,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "12 of 32 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 2 H2, 5 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 70,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 624 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 65 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "77% of 13 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 65,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "No robots.txt is blocking AI crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "3 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Missing meta description"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            },
            {
              "sev": "warning",
              "label": "No sitemap discoverable"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No robots.txt is blocking retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "2 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 624 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 25,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml and reference it in robots.txt so agents can enumerate your actionable pages."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "10 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Florida Blue",
      "domain": "floridablue.com",
      "ok": true,
      "finalUrl": "https://www.floridablue.com/",
      "offDomain": "floridablue.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 40,
        "execution": 63,
        "representation": 10,
        "composite": 38
      },
      "detail": {
        "retrieval": {
          "score": 40,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "12 of 25 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 H1, 13 H2, 0 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1100 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 45 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 156 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "40% of 5 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (2)"
            },
            {
              "sev": "warning",
              "label": "3 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1100 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 10,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "2 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No usage terms found on the page (license, copyrightHolder, meta reservation), and the TDM reservation file (/.well-known/tdmrep.json) could not be read on this scan, so the declared-terms verdict is unmeasured rather than a definitive absence. (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "Fidelity National Financial",
      "domain": "fnf.com",
      "ok": true,
      "finalUrl": "https://fnf.com/",
      "offDomain": "fnf.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 36,
        "execution": 62,
        "representation": 10,
        "composite": 36
      },
      "detail": {
        "retrieval": {
          "score": 36,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "6 of 9 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "4 H1, 14 H2, 0 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 85,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 469 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 34 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 150 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 14 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 59,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "No robots.txt is blocking AI crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "partial",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, no lang.",
                  "rec": "Serve over HTTPS, add a responsive viewport meta tag, and set an html lang attribute."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (4)"
            },
            {
              "sev": "error",
              "label": "5 insecure HTTP resources on a secure page"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            },
            {
              "sev": "warning",
              "label": "No sitemap discoverable"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No robots.txt is blocking retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "1 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 469 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 25,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml and reference it in robots.txt so agents can enumerate your actionable pages."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 10,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "2 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "First American",
      "domain": "firstam.com",
      "ok": true,
      "finalUrl": "https://www.firstam.com/",
      "offDomain": "firstam.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 47,
        "execution": 50,
        "representation": 10,
        "composite": 36
      },
      "detail": {
        "retrieval": {
          "score": 47,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "28 of 58 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 8 H2, 6 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1400 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 104 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 383 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 27 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "2 insecure HTTP resources on a secure page"
            },
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 50,
          "band": "Major friction",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 63,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "partial",
                  "weight": 3,
                  "detail": "Some AI agents are refused at the edge while a browser gets 200 (OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 403, GPTBot 200).",
                  "rec": "Your CDN or WAF is refusing AI user-agents at the network layer, so the page is invisible to those agents regardless of robots.txt. If you intend to be agent-reachable, allow the retrieval user-agents (OAI-SearchBot, PerplexityBot, Claude-SearchBot) in your bot-management or Pay-Per-Crawl settings. Note: we test this by sending these user-agent strings from our scanner, so it measures how your edge treats the user-agent; a real agent presents the same string from its own network, making this a strong signal rather than a guarantee."
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "2 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1400 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Some AI agents refused at the edge (ClaudeBot)"
            },
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 10,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "5 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "MGIC",
      "domain": "mgic.com",
      "ok": true,
      "finalUrl": "https://www.mgic.com/",
      "offDomain": "mgic.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 37,
        "execution": 62,
        "representation": 8,
        "composite": 36
      },
      "detail": {
        "retrieval": {
          "score": 37,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "9 of 23 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 4 H2, 13 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1000 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 25 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 148 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "69% of 16 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "error",
              "label": "3 insecure HTTP resources on a secure page"
            },
            {
              "sev": "warning",
              "label": "5 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1000 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Manulife",
      "domain": "manulife.com",
      "ok": true,
      "finalUrl": "https://www.manulife.com/ca/en/personal",
      "offDomain": "manulife.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 57,
        "execution": 63,
        "representation": 23,
        "composite": 48
      },
      "detail": {
        "retrieval": {
          "score": 57,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 36,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 29,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Dates present in meta or <time> tags, but not in structured data.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "6 of 8 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 H1, 3 H2, 0 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 502 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 26 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 109 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0% of 4 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (2)"
            },
            {
              "sev": "warning",
              "label": "4 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 502 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 23,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Manulife), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Sun Life Financial",
      "domain": "sunlife.com",
      "ok": true,
      "finalUrl": "https://www.sunlife.com/en/",
      "offDomain": "sunlife.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 50,
        "execution": 56,
        "representation": 10,
        "composite": 39
      },
      "detail": {
        "retrieval": {
          "score": 50,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 21,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "13 of 14 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 30 H2, 15 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 951 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 35 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 126 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "71% of 7 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "2 insecure HTTP resources on a secure page"
            },
            {
              "sev": "warning",
              "label": "2 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 56,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 63,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "partial",
                  "weight": 3,
                  "detail": "Some AI agents are refused at the edge while a browser gets 200 (OAI-SearchBot 200, PerplexityBot 403, ClaudeBot 403, GPTBot 200).",
                  "rec": "Your CDN or WAF is refusing AI user-agents at the network layer, so the page is invisible to those agents regardless of robots.txt. If you intend to be agent-reachable, allow the retrieval user-agents (OAI-SearchBot, PerplexityBot, Claude-SearchBot) in your bot-management or Pay-Per-Crawl settings. Note: we test this by sending these user-agent strings from our scanner, so it measures how your edge treats the user-agent; a real agent presents the same string from its own network, making this a strong signal rather than a guarantee."
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "4 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 951 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Some AI agents refused at the edge (PerplexityBot, ClaudeBot)"
            },
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 10,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "2 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Great-West Lifeco",
      "domain": "greatwestlifeco.com",
      "ok": true,
      "finalUrl": "https://www.greatwestlifeco.com/",
      "offDomain": "greatwestlifeco.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 42,
        "execution": 58,
        "representation": 10,
        "composite": 37
      },
      "detail": {
        "retrieval": {
          "score": 42,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "8 of 15 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 2 H2, 0 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 65,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 251 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 17 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No images to assess.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags plus a Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Missing meta description"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 58,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 60,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Only about 251 words in the static HTML; some content likely depends on JavaScript.",
                  "rec": "Server-render or pre-render the primary content and controls. Agents and most crawlers do not execute JavaScript, so a client-rendered action surface is invisible to them."
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 10,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "4 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Fairfax Financial",
      "domain": "fairfax.ca",
      "ok": true,
      "finalUrl": "https://www.fairfax.ca/",
      "offDomain": "fairfax.ca",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 57,
        "execution": 78,
        "representation": 28,
        "composite": 54
      },
      "detail": {
        "retrieval": {
          "score": 57,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 42,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 57,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 of 6 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 8 H2, 0 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 50,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 232 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 28 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 38 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags plus a Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Missing meta description"
            },
            {
              "sev": "warning",
              "label": "Thin content (under 250 words)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 78,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 60,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Only about 232 words in the static HTML; some content likely depends on JavaScript.",
                  "rec": "Server-render or pre-render the primary content and controls. Agents and most crawlers do not execute JavaScript, so a client-rendered action surface is invisible to them."
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 28,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Fairfax Financial Holdings Limited), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "7 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Intact Financial",
      "domain": "intactfc.com",
      "ok": false,
      "reason": "UNREADABLE (HTTP 405)",
      "wafVendor": ""
    },
    {
      "name": "iA Financial Group",
      "domain": "ia.ca",
      "ok": true,
      "finalUrl": "https://ia.ca/",
      "offDomain": "ia.ca",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 64,
        "execution": 63,
        "representation": 8,
        "composite": 45
      },
      "detail": {
        "retrieval": {
          "score": 64,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 47,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "7 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 32,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Uses @graph / @id, but the page does not reference a subject entity.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "3 of 6 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 3 H2, 0 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 85,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 388 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 44 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 147 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 9 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (2,889 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "3 insecure HTTP resources on a secure page"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 388 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "llms.txt present but declares no transactional surfaces.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "6 authoritative link(s) declared, but none resolved; dead links are not counted.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 5,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "tiktok.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [],
              "confirmedHosts": [],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "sameas-unverified"
      ]
    },
    {
      "name": "Definity Financial",
      "domain": "definityfinancial.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Co-operators",
      "domain": "cooperators.ca",
      "ok": true,
      "finalUrl": "https://www.cooperators.ca/en/personal",
      "offDomain": "cooperators.ca",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 49,
        "execution": 63,
        "representation": 10,
        "composite": 41
      },
      "detail": {
        "retrieval": {
          "score": 49,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "26 of 53 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 32 H2, 7 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1400 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 40 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 82 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "39% of 44 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "27 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1400 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 10,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "2 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Ping An Insurance",
      "domain": "pingan.com",
      "ok": true,
      "finalUrl": "https://www.pingan.com/",
      "offDomain": "pingan.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 74,
        "execution": 83,
        "representation": 36,
        "composite": 64
      },
      "detail": {
        "retrieval": {
          "score": 74,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 75,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "partial",
                  "weight": 2,
                  "detail": "2 distinct external profiles linked via sameAs.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 64,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Rich types present: Faqpage.",
                  "rec": null
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 of 32 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 9 H2, 23 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 547 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 42 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 80 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "85% of 217 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (3,498 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "10 insecure HTTP resources on a secure page"
            },
            {
              "sev": "warning",
              "label": "33 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 83,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 547 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "llms.txt present but declares no transactional surfaces.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 36,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (中国平安保险（集团）股份有限公司) with a description and descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name \"中国平安保险（集团）股份有限公司\" is not clearly echoed in the title or og:site_name, which weakens disambiguation.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "2 sameAs link(s), but none to an authoritative home.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "9 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "China Life Insurance",
      "domain": "chinalife.com.cn",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "China Pacific Insurance",
      "domain": "cpic.com.cn",
      "ok": true,
      "finalUrl": "https://cpic.com.cn/",
      "offDomain": "cpic.com.cn",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 29,
        "execution": 56,
        "representation": 13,
        "composite": 33
      },
      "detail": {
        "retrieval": {
          "score": 29,
          "band": "Largely invisible to AI",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 of 70 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 3 H2, 5 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 782 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 38 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 112 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "9% of 106 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 52,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "fail",
                  "weight": 0.75,
                  "detail": "HTTPS, no viewport, no lang.",
                  "rec": "Serve over HTTPS, add a responsive viewport meta tag, and set an html lang attribute."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "96 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            },
            {
              "sev": "warning",
              "label": "No sitemap discoverable"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 56,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 782 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 25,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml and reference it in robots.txt so agents can enumerate your actionable pages."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "14 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "PICC",
      "domain": "picc.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "AIA Group",
      "domain": "aia.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "FWD Group",
      "domain": "fwd.com",
      "ok": true,
      "finalUrl": "https://www.fwd.com/en/",
      "offDomain": "fwd.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 44,
        "execution": 34,
        "representation": 60,
        "composite": 46
      },
      "detail": {
        "retrieval": {
          "score": 44,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 50,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "partial",
                  "weight": 2,
                  "detail": "2 distinct external profiles linked via sameAs.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 32,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Uses @graph / @id, but the page does not reference a subject entity.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 0,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No paragraph content found.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 0 H2, 0 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 55,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 19 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 99 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 119 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No images to assess.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No lists, landmarks or header tables found.",
                  "rec": "Use lists, <main>/<article> landmarks and tables with <th> headers; they help AI parsers isolate and extract your content cleanly."
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (200,000 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            },
            {
              "sev": "warning",
              "label": "Thin content (under 250 words)"
            },
            {
              "sev": "error",
              "label": "Content appears client-side rendered; static AI crawlers may see little text"
            }
          ],
          "renderDependent": true,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 34,
          "band": "Closed to agents",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 45,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Very little static content (~19 words) with a single-page-app mount point; agents that do not run JavaScript will see almost nothing.",
                  "rec": "Server-render or pre-render the primary content and controls. Agents and most crawlers do not execute JavaScript, so a client-rendered action surface is invisible to them."
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            },
            {
              "sev": "error",
              "label": "Action surface appears client-side rendered; agents may see little"
            },
            {
              "sev": "warning",
              "label": "Client-rendered app: raw-fetch agents see an empty shell (this cap is honest for them); rendering agents may still operate it"
            }
          ],
          "renderDependent": true,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 60,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (FWD Group), but thin: no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 100,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 confirmed and 0 unverified authoritative home(s): hk.linkedin.com, en.wikipedia.org.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a confirmed registry (en.wikipedia.org) and a profile source.",
                  "rec": null
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 100,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "pass",
                  "weight": 1,
                  "detail": "You actively govern representation: TDM reservation. (no training opt-out declared.)",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 2,
              "reachable": 2,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "hk.linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "hk.linkedin.com",
                "en.wikipedia.org"
              ],
              "confirmedHosts": [
                "hk.linkedin.com",
                "en.wikipedia.org"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Great Eastern Holdings",
      "domain": "greateasternlife.com",
      "ok": true,
      "finalUrl": "https://www.greateasternlife.com/sg/en/personal-insurance.html",
      "offDomain": "greateasternlife.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 77,
        "execution": 91,
        "representation": 33,
        "composite": 67
      },
      "detail": {
        "retrieval": {
          "score": 77,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 83,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization, Person.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "4 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Author or person is named, but without credential depth.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 64,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Products or services are described in structured data.",
                  "rec": null
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "11 of 33 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 4 H2, 21 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 970 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 34 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 116 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 61 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 91,
          "band": "Built for agents",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 100,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Products or services are described in structured data.",
                  "rec": null
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "A form element is present but has no usable named inputs.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 970 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 33,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Great Eastern), but thin: no description.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "4 authoritative link(s) declared, but none resolved; dead links are not counted.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 40,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "A person or author is named, but without credential depth.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "3 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 4,
              "reachable": 4,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "tiktok.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [],
              "confirmedHosts": [],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "sameas-unverified"
      ]
    },
    {
      "name": "Tokio Marine Holdings",
      "domain": "tokiomarinehd.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "MS&AD Insurance Group",
      "domain": "ms-ad-hd.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Sompo Holdings",
      "domain": "sompo-hd.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Dai-ichi Life",
      "domain": "dai-ichi-life.co.jp",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Nippon Life",
      "domain": "nissay.co.jp",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Meiji Yasuda Life",
      "domain": "meijiyasuda.co.jp",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Sumitomo Life",
      "domain": "sumitomolife.co.jp",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Samsung Life Insurance",
      "domain": "samsunglife.com",
      "ok": true,
      "finalUrl": "https://www.samsunglife.com/",
      "offDomain": "samsunglife.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 17,
        "execution": 34,
        "representation": 8,
        "composite": 20
      },
      "detail": {
        "retrieval": {
          "score": 17,
          "band": "Largely invisible to AI",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 0,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No paragraph content found.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 0 H2, 0 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 35,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 16 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 4 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No images to assess.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No lists, landmarks or header tables found.",
                  "rec": "Use lists, <main>/<article> landmarks and tables with <th> headers; they help AI parsers isolate and extract your content cleanly."
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 63,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "partial",
                  "weight": 0.75,
                  "detail": "HTTPS, no viewport, lang set.",
                  "rec": "Serve over HTTPS, add a responsive viewport meta tag, and set an html lang attribute."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "Missing meta description"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            },
            {
              "sev": "warning",
              "label": "Thin content (under 250 words)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 34,
          "band": "Closed to agents",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 45,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Very little static content (~16 words); agents that do not run JavaScript will see almost nothing.",
                  "rec": "Server-render or pre-render the primary content and controls. Agents and most crawlers do not execute JavaScript, so a client-rendered action surface is invisible to them."
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            },
            {
              "sev": "error",
              "label": "Action surface appears client-side rendered; agents may see little"
            },
            {
              "sev": "warning",
              "label": "Reachable but nothing to operate (little content, no action, no form)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Samsung Fire & Marine",
      "domain": "samsungfire.com",
      "ok": true,
      "finalUrl": "https://samsungfire.com/",
      "offDomain": "samsungfire.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 21,
        "execution": 52,
        "representation": 8,
        "composite": 27
      },
      "detail": {
        "retrieval": {
          "score": 21,
          "band": "Largely invisible to AI",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 0,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 of 11 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 0 H2, 0 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 60,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 176 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 4 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 82 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 35 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 65,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "1/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "error",
              "label": "3 insecure HTTP resources on a secure page"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            },
            {
              "sev": "warning",
              "label": "Thin content (under 250 words)"
            },
            {
              "sev": "warning",
              "label": "No sitemap discoverable"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 52,
          "band": "Major friction",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 60,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Only about 176 words in the static HTML; some content likely depends on JavaScript.",
                  "rec": "Server-render or pre-render the primary content and controls. Agents and most crawlers do not execute JavaScript, so a client-rendered action surface is invisible to them."
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 25,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml and reference it in robots.txt so agents can enumerate your actionable pages."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Hanwha Life",
      "domain": "hanwhalife.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Cathay Financial Holdings",
      "domain": "cathayholdings.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Life Insurance Corporation of India",
      "domain": "licindia.in",
      "ok": true,
      "finalUrl": "https://licindia.in/",
      "offDomain": "licindia.in",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 53,
        "execution": 68,
        "representation": 13,
        "composite": 45
      },
      "detail": {
        "retrieval": {
          "score": 53,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 100,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "13 of 63 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 28 H2, 30 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1500 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 101 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 217 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 81 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            },
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 68,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "3 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1500 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "7 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No usage terms found on the page (license, copyrightHolder, meta reservation), and the TDM reservation file (/.well-known/tdmrep.json) could not be read on this scan, so the declared-terms verdict is unmeasured rather than a definitive absence. (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "SBI Life Insurance",
      "domain": "sbilife.co.in",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": ""
    },
    {
      "name": "HDFC Life",
      "domain": "hdfclife.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": ""
    },
    {
      "name": "ICICI Prudential Life",
      "domain": "iciciprulife.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": ""
    },
    {
      "name": "ICICI Lombard",
      "domain": "icicilombard.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": ""
    },
    {
      "name": "Bajaj Allianz",
      "domain": "bajajallianz.com",
      "ok": true,
      "finalUrl": "https://www.bajajgeneralinsurance.com/",
      "offDomain": "bajajgeneralinsurance.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 84,
        "execution": 81,
        "representation": 25,
        "composite": 63
      },
      "detail": {
        "retrieval": {
          "score": 84,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 61,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "4 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Reviews or ratings are marked up on an eligible type.",
                  "rec": null
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 64,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "3 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Rich types present: Product, Aggregaterating.",
                  "rec": null
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Products or services are described in structured data.",
                  "rec": null
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 100,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "70 of 486 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "7 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 56 H2, 13 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 3700 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 48 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 166 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "92% of 282 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (19,853 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "23 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 81,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 64,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "partial",
                  "weight": 2.5,
                  "detail": "Offerings are described, but with no price or actionable Action type an agent cannot act on them.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Products or services are described in structured data.",
                  "rec": null
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 3700 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "llms.txt present but declares no transactional surfaces.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Offerings described but not actionable (no price or Action)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 25,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Bajaj General Insurance Limited), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "4 authoritative link(s) declared, but none resolved; dead links are not counted.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "2 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 4,
              "reachable": 4,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [],
              "confirmedHosts": [],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "sameas-unverified"
      ]
    },
    {
      "name": "QBE Insurance",
      "domain": "qbe.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Insurance Australia Group",
      "domain": "iag.com.au",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Akamai"
    },
    {
      "name": "Suncorp",
      "domain": "suncorpgroup.com.au",
      "ok": true,
      "finalUrl": "https://www.suncorpgroup.com.au/",
      "offDomain": "suncorpgroup.com.au",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 25,
        "execution": 59,
        "representation": 8,
        "composite": 31
      },
      "detail": {
        "retrieval": {
          "score": 25,
          "band": "Largely invisible to AI",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 0,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "1 of 6 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 3 H2, 0 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 60,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 235 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 4 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 163 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 15 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 85,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "partial",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, no lang.",
                  "rec": "Serve over HTTPS, add a responsive viewport meta tag, and set an html lang attribute."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "Thin content (under 250 words)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 59,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 65,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Only about 235 words in the static HTML; some content likely depends on JavaScript.",
                  "rec": "Server-render or pre-render the primary content and controls. Agents and most crawlers do not execute JavaScript, so a client-rendered action surface is invisible to them."
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Medibank",
      "domain": "medibank.com.au",
      "ok": true,
      "finalUrl": "https://www.medibank.com.au/",
      "offDomain": "medibank.com.au",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 71,
        "execution": 52,
        "representation": 37,
        "composite": 53
      },
      "detail": {
        "retrieval": {
          "score": 71,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 58,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "3 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 21,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 100,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "78 of 102 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "8 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 8 H2, 23 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 3900 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 44 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 151 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "71% of 28 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "2 insecure HTTP resources on a secure page"
            },
            {
              "sev": "warning",
              "label": "8 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 52,
          "band": "Major friction",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 63,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "partial",
                  "weight": 3,
                  "detail": "Some AI agents are refused at the edge while a browser gets 200 (OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 403).",
                  "rec": "Your CDN or WAF is refusing AI user-agents at the network layer, so the page is invisible to those agents regardless of robots.txt. If you intend to be agent-reachable, allow the retrieval user-agents (OAI-SearchBot, PerplexityBot, Claude-SearchBot) in your bot-management or Pay-Per-Crawl settings. Note: we test this by sending these user-agent strings from our scanner, so it measures how your edge treats the user-agent; a real agent presents the same string from its own network, making this a strong signal rather than a guarantee."
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 3900 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Some AI agents refused at the edge (GPTBot)"
            },
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 37,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Medibank), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 30,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 confirmed and 0 unverified authoritative home(s) (of 3 declared; the rest did not resolve): twitter.com.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "37 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No usage terms found on the page (license, copyrightHolder, meta reservation), and the TDM reservation file (/.well-known/tdmrep.json) could not be read on this scan, so the declared-terms verdict is unmeasured rather than a definitive absence. (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 3,
              "reachable": 3,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "twitter.com"
              ],
              "confirmedHosts": [
                "twitter.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "AMP",
      "domain": "amp.com.au",
      "ok": true,
      "finalUrl": "https://www.amp.com.au/",
      "offDomain": "amp.com.au",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 65,
        "execution": 80,
        "representation": 45,
        "composite": 63
      },
      "detail": {
        "retrieval": {
          "score": 65,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 75,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Corporation.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "4 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 21,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "43 of 139 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 H1, 20 H2, 0 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 3200 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 47 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 115 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "70% of 47 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 78,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (2)"
            },
            {
              "sev": "warning",
              "label": "14 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 80,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 70,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "2 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 3200 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "partial",
                  "weight": 1,
                  "detail": "An invisible reCAPTCHA v3 is present; it scores requests rather than blocking outright, but can still gate an action on a low score.",
                  "rec": "Do not gate primary actions behind an interactive CAPTCHA (hCaptcha, Turnstile, reCAPTCHA v2), which agents cannot solve. Invisible scoring (reCAPTCHA v3) is less hostile but can still block a low-scoring agent, so keep it off critical task paths."
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 45,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (AMP) with a description and descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 30,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 confirmed and 0 unverified authoritative home(s) (of 4 declared; the rest did not resolve): en.wikipedia.org.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "A registry link is confirmed, but no distinct profile source corroborates it.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "11 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 4,
              "reachable": 4,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org"
              ],
              "confirmedHosts": [
                "en.wikipedia.org"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Steadfast Group",
      "domain": "steadfast.com.au",
      "ok": true,
      "finalUrl": "https://www.steadfast.com.au/",
      "offDomain": "steadfast.com.au",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 51,
        "execution": 62,
        "representation": 8,
        "composite": 40
      },
      "detail": {
        "retrieval": {
          "score": 51,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "32 of 39 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 5 H2, 20 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1100 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 16 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 132 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 50 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "AI answer crawlers allowed; training or user-initiated crawlers blocked (gptbot, claudebot, google-extended, applebot-extended, meta-externalagent, ccbot, cohere-ai, bytespider, diffbot, omgili, imagesiftbot), a legitimate choice.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "1 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1100 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (training/other crawlers blocked (gptbot, claudebot, google-extended, applebot-extended).)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Old Mutual",
      "domain": "oldmutual.com",
      "ok": true,
      "finalUrl": "https://oldmutual.com/",
      "offDomain": "oldmutual.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 40,
        "execution": 55,
        "representation": 18,
        "composite": 38
      },
      "detail": {
        "retrieval": {
          "score": 40,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 of 13 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "4 H1, 1 H2, 0 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 85,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 397 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 38 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 157 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 11 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (9,558 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags plus a Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (4)"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 55,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 63,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "partial",
                  "weight": 3,
                  "detail": "Some AI agents are refused at the edge while a browser gets 200 (OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 403).",
                  "rec": "Your CDN or WAF is refusing AI user-agents at the network layer, so the page is invisible to those agents regardless of robots.txt. If you intend to be agent-reachable, allow the retrieval user-agents (OAI-SearchBot, PerplexityBot, Claude-SearchBot) in your bot-management or Pay-Per-Crawl settings. Note: we test this by sending these user-agent strings from our scanner, so it measures how your edge treats the user-agent; a real agent presents the same string from its own network, making this a strong signal rather than a guarantee."
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 397 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Some AI agents refused at the edge (GPTBot)"
            },
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 18,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "4 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 100,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "pass",
                  "weight": 1,
                  "detail": "You actively govern representation: TDM reservation. (no training opt-out declared.)",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Sanlam",
      "domain": "sanlam.com",
      "ok": true,
      "finalUrl": "https://www.sanlam.com/",
      "offDomain": "sanlam.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 37,
        "execution": 62,
        "representation": 8,
        "composite": 36
      },
      "detail": {
        "retrieval": {
          "score": 37,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "30 of 61 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "6 H1, 17 H2, 6 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1800 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 13 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 121 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "81% of 26 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 63,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "partial",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, no lang.",
                  "rec": "Serve over HTTPS, add a responsive viewport meta tag, and set an html lang attribute."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (6)"
            },
            {
              "sev": "warning",
              "label": "5 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "1 form(s) present, but inputs are poorly labelled.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1800 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No usage terms found on the page (license, copyrightHolder, meta reservation), and the TDM reservation file (/.well-known/tdmrep.json) could not be read on this scan, so the declared-terms verdict is unmeasured rather than a definitive absence. (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "Discovery Limited",
      "domain": "discovery.co.za",
      "ok": true,
      "finalUrl": "https://www.discovery.co.za/",
      "offDomain": "discovery.co.za",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 44,
        "execution": 69,
        "representation": 13,
        "composite": 42
      },
      "detail": {
        "retrieval": {
          "score": 44,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 21,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "20 of 69 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "23 H1, 10 H2, 27 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 3300 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 59 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 151 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "46% of 41 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (23)"
            },
            {
              "sev": "error",
              "label": "4 insecure HTTP resources on a secure page"
            },
            {
              "sev": "warning",
              "label": "22 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 69,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 100,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "4 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 3300 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "12 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Momentum Group",
      "domain": "momentumgroupltd.co.za",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Santam",
      "domain": "santam.co.za",
      "ok": true,
      "finalUrl": "https://www.santam.co.za/",
      "offDomain": "santam.co.za",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 54,
        "execution": 63,
        "representation": 28,
        "composite": 48
      },
      "detail": {
        "retrieval": {
          "score": 54,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 58,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "6 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 21,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "11 of 82 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 6 H2, 1 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1000 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 25 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 142 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "93% of 14 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags plus a Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            },
            {
              "sev": "warning",
              "label": "1 image missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "1 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1000 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 28,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 29,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (named), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 30,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 confirmed and 0 unverified authoritative home(s) (of 4 declared; the rest did not resolve): twitter.com.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "4 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 4,
              "reachable": 4,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "twitter.com"
              ],
              "confirmedHosts": [
                "twitter.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Suramericana",
      "domain": "suramericana.com",
      "ok": true,
      "finalUrl": "https://suramericana.com/",
      "offDomain": "suramericana.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 66,
        "execution": 85,
        "representation": 23,
        "composite": 58
      },
      "detail": {
        "retrieval": {
          "score": 66,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 42,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 57,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "18 of 34 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 H1, 7 H2, 7 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 786 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 35 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 142 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 32 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (82,188 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (2)"
            },
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 85,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 786 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 23,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Seguros SURA), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name \"Seguros SURA\" is not clearly echoed in the title or og:site_name, which weakens disambiguation.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Porto Seguro",
      "domain": "portoseguro.com.br",
      "ok": true,
      "finalUrl": "https://www.portoseguro.com.br/",
      "offDomain": "portoseguro.com.br",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 49,
        "execution": 62,
        "representation": 13,
        "composite": 41
      },
      "detail": {
        "retrieval": {
          "score": 49,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "19 of 42 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "6 H1, 18 H2, 20 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1100 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 61 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 149 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 37 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (6)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1100 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "44 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No usage terms found on the page (license, copyrightHolder, meta reservation), and the TDM reservation file (/.well-known/tdmrep.json) could not be read on this scan, so the declared-terms verdict is unmeasured rather than a definitive absence. (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "Marsh McLennan",
      "domain": "marshmclennan.com",
      "ok": true,
      "finalUrl": "https://www.marsh.com/en/home.html",
      "offDomain": "marsh.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 55,
        "execution": 62,
        "representation": 10,
        "composite": 42
      },
      "detail": {
        "retrieval": {
          "score": 55,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 100,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "18 of 23 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 7 H2, 9 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 816 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 57 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 167 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 8 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 816 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 10,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "4 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No usage terms found on the page (license, copyrightHolder, meta reservation), and the TDM reservation file (/.well-known/tdmrep.json) could not be read on this scan, so the declared-terms verdict is unmeasured rather than a definitive absence. (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "Aon",
      "domain": "aon.com",
      "ok": true,
      "finalUrl": "https://www.aon.com/en/",
      "offDomain": "aon.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 50,
        "execution": 62,
        "representation": 13,
        "composite": 42
      },
      "detail": {
        "retrieval": {
          "score": 50,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "30 of 64 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 11 H2, 7 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2100 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 22 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 43 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 27 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "5 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2100 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "fail",
                  "weight": 1,
                  "detail": "An interactive CAPTCHA (hCaptcha, Cloudflare Turnstile or reCAPTCHA v2) is present; autonomous agents cannot pass it.",
                  "rec": "Do not gate primary actions behind an interactive CAPTCHA (hCaptcha, Turnstile, reCAPTCHA v2), which agents cannot solve. Invisible scoring (reCAPTCHA v3) is less hostile but can still block a low-scoring agent, so keep it off critical task paths."
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            },
            {
              "sev": "warning",
              "label": "Interactive CAPTCHA present; autonomous agents cannot complete it"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "9 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "WTW",
      "domain": "wtwco.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 429)",
      "wafVendor": ""
    },
    {
      "name": "Arthur J. Gallagher",
      "domain": "ajg.com",
      "ok": true,
      "finalUrl": "https://www.ajg.com/",
      "offDomain": "ajg.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 62,
        "execution": 86,
        "representation": 25,
        "composite": 58
      },
      "detail": {
        "retrieval": {
          "score": 62,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 56,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Corporation.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "partial",
                  "weight": 2,
                  "detail": "1 distinct external profile linked via sameAs.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 21,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "21 of 32 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 7 H2, 14 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1000 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 53 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 149 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "95% of 22 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (49,561 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "1 image missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 86,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1000 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 25,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Gallagher), but thin: no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "1 authoritative link(s) declared, but none resolved; dead links are not counted.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "5 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 1,
              "reachable": 0,
              "confirmed": 0,
              "dead": 1,
              "links": [
                {
                  "host": "twitter.com",
                  "status": 520,
                  "state": "dead"
                }
              ],
              "scoringHosts": [],
              "confirmedHosts": [],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Brown & Brown",
      "domain": "bbrown.com",
      "ok": true,
      "finalUrl": "https://us.bbrown.com/",
      "offDomain": "us.bbrown.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 50,
        "execution": 71,
        "representation": 10,
        "composite": 44
      },
      "detail": {
        "retrieval": {
          "score": 50,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "11 of 12 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 8 H2, 9 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1800 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 59 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 158 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 22 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (200,000 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 71,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "2 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1800 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 10,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "3 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Hub International",
      "domain": "hubinternational.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "USI Insurance Services",
      "domain": "usi.com",
      "ok": true,
      "finalUrl": "https://www.usi.com/",
      "offDomain": "usi.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 37,
        "execution": 65,
        "representation": 15,
        "composite": 39
      },
      "detail": {
        "retrieval": {
          "score": 37,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "8 of 12 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "13 H1, 1 H2, 3 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 55,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 430 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 59 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "67% of 9 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (50,219 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "1/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (13)"
            },
            {
              "sev": "warning",
              "label": "3 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Missing meta description"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 65,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 430 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 15,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 100,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "pass",
                  "weight": 1,
                  "detail": "You actively govern representation: TDM reservation. (no training opt-out declared.)",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Lockton",
      "domain": "lockton.com",
      "ok": true,
      "finalUrl": "https://global.lockton.com/us/en",
      "offDomain": "global.lockton.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 53,
        "execution": 62,
        "representation": 13,
        "composite": 43
      },
      "detail": {
        "retrieval": {
          "score": 53,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "19 of 33 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 4 H2, 12 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 897 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 17 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 163 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 33 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "A form element is present but has no usable named inputs.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 897 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "24 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Howden Group",
      "domain": "howdengroup.com",
      "ok": true,
      "finalUrl": "https://www.howdengroup.com/us-en",
      "offDomain": "howdengroup.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 73,
        "execution": 63,
        "representation": 61,
        "composite": 66
      },
      "detail": {
        "retrieval": {
          "score": 73,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 64,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "partial",
                  "weight": 2,
                  "detail": "2 distinct external profiles linked via sameAs.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 43,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "7 of 14 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 7 H2, 12 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 695 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 42 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 134 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "98% of 54 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (346 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "1/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            },
            {
              "sev": "warning",
              "label": "1 image missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "2 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 695 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "fail",
                  "weight": 1,
                  "detail": "An interactive CAPTCHA (hCaptcha, Cloudflare Turnstile or reCAPTCHA v2) is present; autonomous agents cannot pass it.",
                  "rec": "Do not gate primary actions behind an interactive CAPTCHA (hCaptcha, Turnstile, reCAPTCHA v2), which agents cannot solve. Invisible scoring (reCAPTCHA v3) is less hostile but can still block a low-scoring agent, so keep it off critical task paths."
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "llms.txt present but declares no transactional surfaces.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            },
            {
              "sev": "warning",
              "label": "Interactive CAPTCHA present; autonomous agents cannot complete it"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 61,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (Howden) with a description and descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 100,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 confirmed and 0 unverified authoritative home(s): linkedin.com, find-and-update.company-information.service.gov.uk.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a confirmed registry (find-and-update.company-information.service.gov.uk) and a profile source.",
                  "rec": null
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 2,
              "reachable": 2,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "find-and-update.company-information.service.gov.uk",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "find-and-update.company-information.service.gov.uk"
              ],
              "confirmedHosts": [
                "linkedin.com",
                "find-and-update.company-information.service.gov.uk"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "The Ardonagh Group",
      "domain": "ardonagh.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": ""
    },
    {
      "name": "Acrisure",
      "domain": "acrisure.com",
      "ok": false,
      "reason": "UNREADABLE (no content / client-side rendered)",
      "wafVendor": ""
    },
    {
      "name": "Ryan Specialty",
      "domain": "ryanspecialty.com",
      "ok": true,
      "finalUrl": "https://ryanspecialty.com/",
      "offDomain": "ryanspecialty.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 48,
        "execution": 89,
        "representation": 8,
        "composite": 48
      },
      "detail": {
        "retrieval": {
          "score": 48,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 14,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 57,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 17,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "4 of 4 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "1 H1, 0 H2, 0 H3.",
                  "rec": "Add H2/H3 subheadings; a flat page is hard for a model to segment and quote."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 85,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 318 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 27 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 138 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 11 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 89,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 429). 1 probe(s) returned a transient rate-limit or timeout and are not counted as a block.",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 100,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "1 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 318 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Phoenix Group",
      "domain": "thephoenixgroup.com",
      "ok": true,
      "finalUrl": "https://www.standardlifeplc.com/",
      "offDomain": "standardlifeplc.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 64,
        "execution": 71,
        "representation": 36,
        "composite": 57
      },
      "detail": {
        "retrieval": {
          "score": 64,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 44,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 32,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "The page references a subject, but the schema is otherwise flat.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "32 of 52 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 16 H2, 15 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1300 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 40 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 215 characters.",
                  "rec": "Aim for a 70 to 180 character description; it is often quoted verbatim as your summary."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 15 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (76,441 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 71,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "2 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1300 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 36,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 71,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Standard Life plc), but thin: no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across schema, title and og:site_name, with a legal identifier present.",
                  "rec": null
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "7 sameAs link(s), but none to an authoritative home.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 30,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "12 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "1 outbound citation(s) sit inside claim-bearing paragraphs, the shape of genuinely sourced writing.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "M&G",
      "domain": "mandg.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Just Group",
      "domain": "justgroupplc.co.uk",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Royal London",
      "domain": "royallondon.com",
      "ok": true,
      "finalUrl": "https://www.royallondon.com/",
      "offDomain": "royallondon.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 75,
        "execution": 87,
        "representation": 46,
        "composite": 69
      },
      "detail": {
        "retrieval": {
          "score": 75,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 53,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "3 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 32,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Uses @graph / @id, but the page does not reference a subject entity.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 100,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "48 of 57 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "3 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 100 H2, 35 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 3800 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 70 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 155 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 34 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 87,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "2 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 3800 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 46,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Royal London), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 confirmed and 0 unverified authoritative home(s) (of 3 declared; the rest did not resolve): twitter.com, linkedin.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "10 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 3,
              "reachable": 3,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "twitter.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "twitter.com",
                "linkedin.com"
              ],
              "confirmedHosts": [
                "twitter.com",
                "linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "LV=",
      "domain": "lv.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "NFU Mutual",
      "domain": "nfumutual.co.uk",
      "ok": true,
      "finalUrl": "https://www.nfumutual.co.uk/",
      "offDomain": "nfumutual.co.uk",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 73,
        "execution": 87,
        "representation": 43,
        "composite": 68
      },
      "detail": {
        "retrieval": {
          "score": 73,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 53,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "3 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 54,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Uses @graph / @id, but the page does not reference a subject entity.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Rich types present: Itemlist.",
                  "rec": null
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "18 of 22 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 20 H2, 14 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1400 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 47 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 117 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 6 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 87,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "1 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1400 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 43,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (NFU Mutual), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 confirmed and 0 unverified authoritative home(s) (of 3 declared; the rest did not resolve): twitter.com, linkedin.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "4 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 3,
              "reachable": 3,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "twitter.com",
                "linkedin.com"
              ],
              "confirmedHosts": [
                "twitter.com",
                "linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Direct Line",
      "domain": "directline.com",
      "ok": true,
      "finalUrl": "https://www.directline.com/",
      "offDomain": "directline.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 69,
        "execution": 91,
        "representation": 44,
        "composite": 68
      },
      "detail": {
        "retrieval": {
          "score": 69,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 78,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Governmentorganization, Person, Organization, Corporation.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "9 distinct external profiles linked via sameAs (44 links in total).",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Named author or person with credibility detail (role, employer, expertise or profiles).",
                  "rec": null
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 64,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Products or services are described in structured data.",
                  "rec": null
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "6 of 9 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 0 H2, 11 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 667 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 18 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 149 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 29 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 91,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "Heading levels skip from H1 to H3"
            },
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 91,
          "band": "Built for agents",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 100,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Products or services are described in structured data.",
                  "rec": null
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 667 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 44,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 71,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Direct Line), but thin: no description.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across schema, title and og:site_name, with a legal identifier present.",
                  "rec": null
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "7 authoritative link(s) declared, but none resolved; dead links are not counted.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 60,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Named author or person with credibility detail (role, employer, expertise or profiles).",
                  "rec": null
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 5,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "wikidata.org",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "wikidata.org",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "wikidata.org",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [],
              "confirmedHosts": [],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "sameas-unverified"
      ]
    },
    {
      "name": "Admiral Group",
      "domain": "admiralgroup.co.uk",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Hastings Direct",
      "domain": "hastingsdirect.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Imperva (Incapsula)"
    },
    {
      "name": "esure",
      "domain": "esure.com",
      "ok": true,
      "finalUrl": "https://www.esure.com/",
      "offDomain": "esure.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 53,
        "execution": 62,
        "representation": 10,
        "composite": 42
      },
      "detail": {
        "retrieval": {
          "score": 53,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 100,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "11 of 13 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "4 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 18 H2, 1 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 565 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 26 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 160 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "65% of 17 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 78,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "6 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 565 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 10,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "4 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No usage terms found on the page (license, copyrightHolder, meta reservation), and the TDM reservation file (/.well-known/tdmrep.json) could not be read on this scan, so the declared-terms verdict is unmeasured rather than a definitive absence. (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "Saga",
      "domain": "saga.co.uk",
      "ok": true,
      "finalUrl": "https://saga.co.uk/",
      "offDomain": "saga.co.uk",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 65,
        "execution": 69,
        "representation": 43,
        "composite": 59
      },
      "detail": {
        "retrieval": {
          "score": 65,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 53,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Corporation.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "5 distinct external profiles linked via sameAs (7 links in total).",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 32,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "The page references a subject, but the schema is otherwise flat.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 of 5 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 2 H2, 1 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1200 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 56 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 159 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 28 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 69,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 100,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "1 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1200 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 43,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Saga), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 confirmed and 0 unverified authoritative home(s) (of 5 declared; the rest did not resolve): twitter.com, uk.linkedin.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "2 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 5,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "uk.linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "twitter.com",
                "uk.linkedin.com"
              ],
              "confirmedHosts": [
                "twitter.com",
                "uk.linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Bupa",
      "domain": "bupa.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Vitality",
      "domain": "vitality.co.uk",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Ecclesiastical",
      "domain": "ecclesiastical.com",
      "ok": true,
      "finalUrl": "https://www.ecclesiastical.com/",
      "offDomain": "ecclesiastical.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 50,
        "execution": 62,
        "representation": 13,
        "composite": 42
      },
      "detail": {
        "retrieval": {
          "score": 50,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "14 of 15 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 7 H2, 11 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 944 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 79 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 176 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 6 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            },
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "A form element is present but has no usable named inputs.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 944 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "2 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "1 outbound citation(s) sit inside claim-bearing paragraphs, the shape of genuinely sourced writing.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Sabre Insurance",
      "domain": "sabreplc.co.uk",
      "ok": true,
      "finalUrl": "https://sabreplc.co.uk/",
      "offDomain": "sabreplc.co.uk",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 36,
        "execution": 30,
        "representation": 13,
        "composite": 26
      },
      "detail": {
        "retrieval": {
          "score": 36,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "4 of 4 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 question-led heading(s) or Q&A found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "2 H1, 11 H2, 4 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 776 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 25 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 14 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 63,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "AI answer crawlers allowed; training or user-initiated crawlers blocked (gptbot, claudebot, google-extended, applebot-extended, meta-externalagent, ccbot, bytespider), a legitimate choice.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No canonical link found.",
                  "rec": "Declare a canonical URL so engines consolidate signals on one address."
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "fail",
                  "weight": 1,
                  "detail": "0/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "partial",
                  "weight": 0.75,
                  "detail": "HTTPS, no viewport, lang set.",
                  "rec": "Serve over HTTPS, add a responsive viewport meta tag, and set an html lang attribute."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (2)"
            },
            {
              "sev": "warning",
              "label": "Missing meta description"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 30,
          "band": "Closed to agents",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 25,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "fail",
                  "weight": 3,
                  "detail": "Every probed AI agent is refused at the edge while a browser gets 200 (OAI-SearchBot 403, PerplexityBot 403, ClaudeBot 403, GPTBot 403).",
                  "rec": "Your CDN or WAF is refusing AI user-agents at the network layer, so the page is invisible to those agents regardless of robots.txt. If you intend to be agent-reachable, allow the retrieval user-agents (OAI-SearchBot, PerplexityBot, Claude-SearchBot) in your bot-management or Pay-Per-Crawl settings. Note: we test this by sending these user-agent strings from our scanner, so it measures how your edge treats the user-agent; a real agent presents the same string from its own network, making this a strong signal rather than a guarantee."
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 95,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "3 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 776 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "AI agents are refused at the edge (CDN/WAF), not just in robots.txt"
            },
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "10 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (training/other crawlers blocked (gptbot, claudebot, google-extended, applebot-extended).)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Lemonade",
      "domain": "lemonade.com",
      "ok": true,
      "finalUrl": "https://www.lemonade.com/",
      "offDomain": "lemonade.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 68,
        "execution": 66,
        "representation": 58,
        "composite": 64
      },
      "detail": {
        "retrieval": {
          "score": 68,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 69,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "8 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 21,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "3 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "23 of 70 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 5 H2, 18 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1600 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 57 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 160 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 55 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (11,746 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 66,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1600 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 58,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Lemonade), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 100,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "3 confirmed and 0 unverified authoritative home(s) (of 7 declared; the rest did not resolve): twitter.com, linkedin.com, en.wikipedia.org.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a confirmed registry (en.wikipedia.org) and a profile source.",
                  "rec": null
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "7 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 5,
              "confirmed": 3,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "twitter.com",
                "linkedin.com",
                "en.wikipedia.org"
              ],
              "confirmedHosts": [
                "twitter.com",
                "linkedin.com",
                "en.wikipedia.org"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Root Insurance",
      "domain": "joinroot.com",
      "ok": true,
      "finalUrl": "https://www.joinroot.com/",
      "offDomain": "joinroot.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 47,
        "execution": 56,
        "representation": 15,
        "composite": 39
      },
      "detail": {
        "retrieval": {
          "score": 47,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "15 of 25 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 6 H2, 11 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 882 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 48 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 159 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 39 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "No robots.txt is blocking AI crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 56,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No robots.txt is blocking retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 882 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 25,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "No sitemap found via robots.txt or /sitemap.xml.",
                  "rec": "Publish a sitemap.xml and reference it in robots.txt so agents can enumerate your actionable pages."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 15,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 30,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "7 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "1 outbound citation(s) sit inside claim-bearing paragraphs, the shape of genuinely sourced writing.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Hippo",
      "domain": "hippo.com",
      "ok": true,
      "finalUrl": "https://www.hippo.com/",
      "offDomain": "hippo.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 58,
        "execution": 62,
        "representation": 8,
        "composite": 43
      },
      "detail": {
        "retrieval": {
          "score": 58,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 100,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "14 of 26 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "3 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 8 H2, 15 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 836 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 70 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 129 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 27 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 62,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "1 form(s) with named inputs, but no action attribute: submission is wired in JavaScript, so a non-rendering agent has no endpoint to post to.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 836 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Next Insurance",
      "domain": "nextinsurance.com",
      "ok": true,
      "finalUrl": "https://www.nextinsurance.com/",
      "offDomain": "nextinsurance.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 77,
        "execution": 82,
        "representation": 46,
        "composite": 68
      },
      "detail": {
        "retrieval": {
          "score": 77,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 64,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "8 distinct external profiles linked via sameAs (9 links in total).",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No logo and contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 57,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "4 of 40 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": "Write several concise, self-contained paragraphs (roughly 40 to 450 characters, at least eight words each) that each answer a real question, rather than long unbroken blocks or repeated one-liners."
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 9 H2, 0 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1100 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 53 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 148 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 39 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 91,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 82,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 71,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1100 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 46,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (ERGO Group AG), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name \"ERGO Group AG\" is not clearly echoed in the title or og:site_name, which weakens disambiguation.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 70,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 confirmed and 1 unverified authoritative home(s) (of 8 declared; the rest did not resolve): wikidata.org, crunchbase.com.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a confirmed registry (wikidata.org) and a profile source.",
                  "rec": null
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 10,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "4 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 4,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "wikidata.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "crunchbase.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "wikidata.org",
                "crunchbase.com"
              ],
              "confirmedHosts": [
                "wikidata.org"
              ],
              "unverifiedHosts": [
                "crunchbase.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Coalition",
      "domain": "coalitioninc.com",
      "ok": true,
      "finalUrl": "https://www.coalitioninc.com/",
      "offDomain": "coalitioninc.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 39,
        "execution": 63,
        "representation": 13,
        "composite": 38
      },
      "detail": {
        "retrieval": {
          "score": 39,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "7 of 81 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 4 H2, 13 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1200 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 66 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 138 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 59 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 1200 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "10 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Oscar Health",
      "domain": "hioscar.com",
      "ok": true,
      "finalUrl": "https://www.hioscar.com/",
      "offDomain": "hioscar.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 47,
        "execution": 63,
        "representation": 13,
        "composite": 41
      },
      "detail": {
        "retrieval": {
          "score": 47,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 0,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No JSON-LD found.",
                  "rec": "Add JSON-LD structured data; it is how a machine reads your facts rather than guessing them."
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "10 of 23 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 4 H2, 9 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 900 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 43 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 115 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 14 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 83,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 63,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 80,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 900 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 13,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "7 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "ManyPets",
      "domain": "manypets.com",
      "ok": false,
      "reason": "UNREADABLE (HTTP 405)",
      "wafVendor": ""
    },
    {
      "name": "Wefox",
      "domain": "wefox.com",
      "ok": true,
      "finalUrl": "https://www.wefox.com/",
      "offDomain": "wefox.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 41,
        "execution": 61,
        "representation": 8,
        "composite": 37
      },
      "detail": {
        "retrieval": {
          "score": 41,
          "band": "Significant gaps",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 3,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, LocalBusiness or Person markup found.",
                  "rec": "Declare an Organisation (or LocalBusiness / Person) entity in JSON-LD so AI engines can identify and attribute you by name."
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No sameAs links found to verify your identity.",
                  "rec": "Add several sameAs links to distinct profiles (LinkedIn, Companies House, Wikidata, key socials) so a model can confirm you are a real, single entity. Distinct domains count, so several links to one profile count once."
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No logo and no contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 21,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Structured data is flat, with no entity linking.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 of 9 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 1 H2, 4 H3.",
                  "rec": "Use exactly one H1, then H2/H3 to structure the content a model parses."
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 60,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 131 words of readable text.",
                  "rec": "Give models enough clean, standalone prose to quote. This measures depth, not quality; a focused page can be cited at lower length, but very thin pages rarely are."
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 12 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 96 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 11 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (3,193 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "pass",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags plus a Twitter card.",
                  "rec": null
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "Thin content (under 250 words)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 61,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 60,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Only about 131 words in the static HTML; some content likely depends on JavaScript.",
                  "rec": "Server-render or pre-render the primary content and controls. Agents and most crawlers do not execute JavaScript, so a client-rendered action surface is invisible to them."
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 8,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "fail",
                  "weight": 2,
                  "detail": "No Organisation, Brand or Person entity in structured data.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 0,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No authoritative links to span.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No usage terms found on the page (license, copyrightHolder, meta reservation), and the TDM reservation file (/.well-known/tdmrep.json) could not be read on this scan, so the declared-terms verdict is unmeasured rather than a definitive absence. (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "error",
              "label": "No machine-readable entity (Organisation / Brand / Person)"
            },
            {
              "sev": "warning",
              "label": "No authoritative sameAs links to disambiguate the entity"
            }
          ],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 0,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [],
              "scoringHosts": []
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "Alan",
      "domain": "alan.com",
      "ok": true,
      "finalUrl": "https://alan.com/",
      "offDomain": "alan.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 70,
        "execution": 65,
        "representation": 54,
        "composite": 63
      },
      "detail": {
        "retrieval": {
          "score": 70,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 86,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Corporation, Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "7 distinct external profiles linked via sameAs (14 links in total).",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Logo and contact details in structured data.",
                  "rec": null
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "pass",
                  "weight": 1,
                  "detail": "BreadcrumbList schema present.",
                  "rec": null
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 32,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "82 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "The page references a subject, but the schema is otherwise flat.",
                  "rec": "Link entities with @id (an @graph) and connect the page to its subject with about / mainEntity, so a model reads one connected entity."
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No Product, Service or Offer markup for what you sell.",
                  "rec": "Mark up what you actually offer (Product, Service or Offer). A model cannot recommend offerings it cannot see."
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "97 of 291 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No question-led content found.",
                  "rec": "Frame some sections as the questions buyers actually ask, each with a concise answer beneath. This is the content pattern, not the deprecated FAQ rich result, so no FAQ schema is required."
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 12 H2, 32 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2700 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 77 characters.",
                  "rec": "Aim for a 15 to 70 character title that states who you are and what you do."
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 161 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "64% of 85 images have alt text.",
                  "rec": "Give images descriptive alt text; it is readable context a model can use."
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (14,310 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "A sitemap exists but carries no lastmod dates.",
                  "rec": "Publish a sitemap.xml with lastmod dates and reference it in robots.txt."
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "3/3 Open Graph tags, no Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "31 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 65,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 100,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "pass",
                  "weight": 3,
                  "detail": "AI agents reach the page like a browser (browser 200; OAI-SearchBot 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 0,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "fail",
                  "weight": 2.5,
                  "detail": "No machine-readable action (priced Offer, OrderAction, ReserveAction or potentialAction) found.",
                  "rec": "Mark up the action an agent would take: a priced Offer (price + priceCurrency + availability), or an Action type (OrderAction, ReserveAction, potentialAction) with a valid absolute-URL target. An agent cannot transact against what it cannot read."
                },
                {
                  "label": "Offerings described",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Product, Service or Offer markup for what you provide.",
                  "rec": "Describe what you offer with Product / Service / Offer schema so an agent can identify and select it."
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "No HTML form on this page, so an agent cannot complete a form-based task here.",
                  "rec": "Provide real <form> elements with a real action attribute, named inputs and <label>/aria-label, and no honeypot trap, so an agent can read and complete the task. Forms wired only in JavaScript are invisible to non-rendering agents."
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2700 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No machine-readable contact route for an agent hand-off.",
                  "rec": "Expose a ContactPoint in schema and a mailto:/tel: link so an agent can route a human when it reaches the limit of what it can do."
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt declares transactional or API surfaces for agents.",
                  "rec": null
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 54,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (Alan) with a description and descriptive depth.",
                  "rec": null
                },
                {
                  "label": "Identity consistency",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "Entity name is consistent across surfaces, but no legal identifier (company number, VAT, LEI) is declared.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 confirmed and 0 unverified authoritative home(s) (of 3 declared; the rest did not resolve): twitter.com, linkedin.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 20,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "11 extractable signals (statistics, figures, quotations, definitions) a model can lift and attribute.",
                  "rec": null
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 3,
              "reachable": 3,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "twitter.com",
                "linkedin.com"
              ],
              "confirmedHosts": [
                "twitter.com",
                "linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Everywhen",
      "domain": "everywhen.co.uk",
      "ok": true,
      "finalUrl": "https://www.everywhen.co.uk/",
      "offDomain": "everywhen.co.uk",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 80,
        "execution": 85,
        "representation": 25,
        "composite": 63
      },
      "detail": {
        "retrieval": {
          "score": 80,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 53,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "3 distinct external profiles linked via sameAs.",
                  "rec": null
                },
                {
                  "label": "Logo & contact in schema",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No logo and contact details in structured data.",
                  "rec": "Add a logo and contactPoint / address to your Organisation schema so AI answers can render and trust you."
                },
                {
                  "label": "Authorship & credibility",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No Person or author markup found.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout or sameAs. Models weigh named, credentialed authorship (E-E-A-T) when deciding who to trust."
                },
                {
                  "label": "Breadcrumbs",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No BreadcrumbList schema found.",
                  "rec": "Add BreadcrumbList schema so engines understand where this page sits in your site."
                },
                {
                  "label": "Entity detail (description & expertise)",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Your entity has a name but little descriptive detail.",
                  "rec": "Flesh out the entity: a description plus knowsAbout, areaServed or founder, so a model understands what you do and for whom."
                },
                {
                  "label": "Social proof schema",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No verifiable reputation signal in your structured data.",
                  "rec": "Link a third-party review profile, such as your Google Business Profile, via sameAs so a model can corroborate your reputation. Reserve Review or AggregateRating schema for eligible pages like individual products with independent reviews; Google disallows self-serving reviews on your own organisation."
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 64,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 valid JSON-LD block(s).",
                  "rec": null
                },
                {
                  "label": "Linked entity graph",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Entities are linked with @graph / @id, and the page references its subject.",
                  "rec": null
                },
                {
                  "label": "Rich content types",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "Only basic site markup; no Product, Service, Article, FAQ or similar.",
                  "rec": "Mark up what you actually offer (Product, Service, Article, FAQPage, Review). Org-and-website-only schema tells a model almost nothing about your value."
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "fail",
                  "weight": 1,
                  "detail": "No published or modified dates found.",
                  "rec": "Expose datePublished / dateModified in JSON-LD (an article:published_time meta or <time datetime> is a partial signal). Models favour content they can date."
                },
                {
                  "label": "Offerings marked up",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "Products or services are described in structured data.",
                  "rec": null
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 100,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "28 of 35 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 9 H2, 22 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 879 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 54 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 123 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 29 images have alt text.",
                  "rec": null
                },
                {
                  "label": "Semantic structure",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Uses lists, HTML5 landmarks or header-table structure.",
                  "rec": null
                }
              ]
            },
            {
              "key": "access",
              "label": "AI Access & Discovery",
              "weight": 0.2,
              "score": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No llms.txt at the site root.",
                  "rec": "Scored lightly, by design. As of 2026 the major AI search crawlers rarely fetch llms.txt, and Google has stated it has no effect on Google Search. Coding and agent tools (Cursor, Copilot, Claude Code) do read it, and other AI systems may adopt the convention, so it is a sensible, low-cost hedge for the agent era, not an AI-search ranking signal today."
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "robots.txt allows the major AI answer crawlers.",
                  "rec": null
                },
                {
                  "label": "Indexable & snippet-eligible",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Indexable and snippet-eligible.",
                  "rec": null
                },
                {
                  "label": "Canonical URL",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "Canonical link declared.",
                  "rec": null
                },
                {
                  "label": "Sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap with lastmod dates is discoverable.",
                  "rec": null
                },
                {
                  "label": "Social / Open Graph",
                  "status": "partial",
                  "weight": 1,
                  "detail": "2/3 Open Graph tags plus a Twitter card.",
                  "rec": "Complete og:title, og:description, og:image and a twitter:card for clean rendering when shared or cited."
                },
                {
                  "label": "Mobile, language & HTTPS",
                  "status": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 85,
          "band": "Agent-operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 63,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "partial",
                  "weight": 3,
                  "detail": "Some AI agents are refused at the edge while a browser gets 200 (OAI-SearchBot 200, PerplexityBot 403, ClaudeBot 200, GPTBot 200).",
                  "rec": "Your CDN or WAF is refusing AI user-agents at the network layer, so the page is invisible to those agents regardless of robots.txt. If you intend to be agent-reachable, allow the retrieval user-agents (OAI-SearchBot, PerplexityBot, Claude-SearchBot) in your bot-management or Pay-Per-Crawl settings. Note: we test this by sending these user-agent strings from our scanner, so it measures how your edge treats the user-agent; a real agent presents the same string from its own network, making this a strong signal rather than a guarantee."
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "pass",
                  "weight": 1,
                  "detail": "robots.txt allows the retrieval agents.",
                  "rec": null
                }
              ]
            },
            {
              "key": "action",
              "label": "Actionability",
              "weight": 0.28,
              "score": 100,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "pass",
                  "weight": 2.5,
                  "detail": "A consequential action is described in schema.",
                  "rec": null
                },
                {
                  "label": "Offerings described",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Products or services are described in structured data.",
                  "rec": null
                }
              ]
            },
            {
              "key": "operability",
              "label": "Operability",
              "weight": 0.28,
              "score": 100,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "pass",
                  "weight": 2,
                  "detail": "1 form(s) with named, labelled inputs and a submittable action an agent can complete.",
                  "rec": null
                },
                {
                  "label": "Static content (render dependency)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 879 words of content are present in the static HTML.",
                  "rec": null
                },
                {
                  "label": "Machine-readable contact",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A contact route (ContactPoint, mailto or tel) is available for an agent to hand off.",
                  "rec": null
                },
                {
                  "label": "No CAPTCHA wall",
                  "status": "pass",
                  "weight": 1,
                  "detail": "No CAPTCHA challenge detected.",
                  "rec": null
                }
              ]
            },
            {
              "key": "discovery",
              "label": "Discoverability",
              "weight": 0.12,
              "score": 75,
              "checks": [
                {
                  "label": "Declared machine interface",
                  "status": "partial",
                  "weight": 0.5,
                  "detail": "No agent-facing interface declaration found.",
                  "rec": "As agent protocols settle, declare your agent-facing surfaces (in llms.txt today, and emerging well-known manifests). Scored lightly and forward-looking; not a ranking signal."
                },
                {
                  "label": "Discoverable sitemap",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "A sitemap is discoverable for agents to enumerate pages.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Some AI agents refused at the edge (PerplexityBot)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 25,
          "band": "Unresolved to machines",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 29,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (named), but thin: no description; no knowsAbout / areaServed / founder detail.",
                  "rec": "Declare an Organisation / Brand / Person with a description and depth fields (knowsAbout, areaServed, founder, foundingDate) so a model can build a faithful picture of who you are."
                },
                {
                  "label": "Identity consistency",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No entity name in schema to check for consistency.",
                  "rec": "Use one consistent name across schema, <title> and og:site_name, and declare a legal identifier (company number, VAT, or LEI) so a model can resolve you to a single, verifiable legal entity."
                }
              ]
            },
            {
              "key": "disambiguation",
              "label": "Disambiguation",
              "weight": 0.3,
              "score": 30,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 confirmed and 0 unverified authoritative home(s) (of 3 declared; the rest did not resolve): linkedin.com.",
                  "rec": "Declare at least two authoritative homes that resolve and reference you. Bot-walled links (uncheckable, e.g. LinkedIn) count for less than confirmed ones, so include a checkable registry (Wikidata, Companies House, OpenCorporates)."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are present, but no CONFIRMED authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) that resolves and references you, and a profile (LinkedIn, Crunchbase, a verified social). Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 0,
              "checks": [
                {
                  "label": "Credentialed authorship",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "No named, credentialed person or author; content reads as anonymous to a model.",
                  "rec": "Mark up the people behind the content as Person / author with jobTitle, worksFor, knowsAbout and sameAs. Models weigh named, credentialed authorship when deciding whose account of you to trust."
                },
                {
                  "label": "Citation-worthy claims",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Few extractable, quotable claims; little for a model to cite back to you.",
                  "rec": "Publish concrete, attributable claims: statistics, figures, defined terms and quotable statements. These are the units a model lifts, and lifting yours keeps the narrative in your words."
                },
                {
                  "label": "Sourced claims (outbound citations)",
                  "status": "fail",
                  "weight": 0.5,
                  "detail": "Claims are not backed by outbound links to sources a model can follow and trust.",
                  "rec": "Where you cite a figure or a study, link the source (an external, authoritative URL) from within the same paragraph. Sourced claims read as more citable than unbacked ones."
                }
              ]
            },
            {
              "key": "rights",
              "label": "Representation Rights",
              "weight": 0.15,
              "score": 50,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "partial",
                  "weight": 1,
                  "detail": "No representation or usage terms declared (license, copyrightHolder, TDM reservation). (no training opt-out declared.)",
                  "rec": "State your terms so the machine layer knows how it may use your content: a schema license and copyrightHolder, and, if you wish to govern AI training/text-and-data-mining, a TDM reservation (/.well-known/tdmrep.json) or noai directive. Declaring terms is governance, not a penalty for any particular choice."
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 3,
              "reachable": 3,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    }
  ]
}