{
  "scan": "Technology and Software — Crane Index (AI Visibility Suite)",
  "cohort": "technology-software",
  "date": "2026-11-01",
  "scanners": {
    "retrieval": "AI Search Readiness",
    "execution": "Agent Readiness",
    "representation": "Brand Representation"
  },
  "concurrency": 10,
  "pages": 1,
  "basis": "page",
  "profileRule": "declared",
  "restatedOn": "2026-11-02",
  "aggregate": {
    "scannedRequested": 169,
    "reachable": 124,
    "unreachable": 45,
    "retrieval": {
      "n": 124,
      "min": 13,
      "max": 91,
      "median": 64,
      "mean": 60,
      "ge70": 40,
      "b5569": 45,
      "b4054": 25,
      "lt40": 14,
      "below55": 39,
      "ge90": 1
    },
    "execution": {
      "n": 124,
      "min": 30,
      "max": 94,
      "median": 65,
      "mean": 66,
      "ge70": 42,
      "b5569": 63,
      "b4054": 8,
      "lt40": 11,
      "below55": 19,
      "ge90": 4
    },
    "representation": {
      "n": 124,
      "min": 8,
      "max": 81,
      "median": 43,
      "mean": 38,
      "ge70": 7,
      "b5569": 24,
      "b4054": 38,
      "lt40": 55,
      "below55": 93,
      "ge90": 0
    },
    "composite": {
      "n": 124,
      "min": 21,
      "max": 88,
      "median": 57,
      "mean": 55,
      "ge70": 20,
      "b5569": 51,
      "b4054": 30,
      "lt40": 23,
      "below55": 53,
      "ge90": 0
    }
  },
  "escalations": [
    {
      "name": "Juniper Networks",
      "domain": "juniper.net",
      "from": 70,
      "since": "2026-10-01",
      "outcome": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Roblox",
      "domain": "roblox.com",
      "from": 39,
      "since": "2026-10-01",
      "outcome": "UNREADABLE (no content / client-side rendered)",
      "wafVendor": ""
    },
    {
      "name": "Zebra Technologies",
      "domain": "zebra.com",
      "from": 69,
      "since": "2026-10-01",
      "outcome": "UNREADABLE (HTTP 406)",
      "wafVendor": ""
    }
  ],
  "recoveries": [
    {
      "name": "Intuit",
      "domain": "intuit.com",
      "to": 70,
      "since": "2026-10-01",
      "prevOutcome": "BLOCKED (HTTP 429)"
    },
    {
      "name": "Super Micro Computer",
      "domain": "supermicro.com",
      "to": 38,
      "since": "2026-10-01",
      "prevOutcome": "UNREACHABLE (no response)"
    },
    {
      "name": "Spotify",
      "domain": "spotify.com",
      "to": 23,
      "since": "2026-10-01",
      "prevOutcome": "UNREADABLE (no content / client-side rendered)"
    },
    {
      "name": "Softcat",
      "domain": "softcat.com",
      "to": 57,
      "since": "2026-10-01",
      "prevOutcome": "UNREADABLE (HTTP 404)"
    }
  ],
  "companies": [
    {
      "name": "Apple",
      "domain": "apple.com",
      "ok": true,
      "finalUrl": "https://www.apple.com/",
      "offDomain": "apple.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 64,
        "execution": 89,
        "representation": 55,
        "composite": 69
      },
      "detail": {
        "retrieval": {
          "score": 64,
          "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": "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": "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": "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": "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 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, 17 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 961 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 5 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 172 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 99 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": 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, ChatGPT-User 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": "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 961 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": 55,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Apple), 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": "5 declared authoritative home(s) counted: wikidata.org, youtube.com, linkedin.com, facebook.com, twitter.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (wikidata.org) and a declared 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": "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": 4,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "wikidata.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                }
              ],
              "scoringHosts": [
                "wikidata.org",
                "linkedin.com",
                "twitter.com"
              ],
              "confirmedHosts": [
                "wikidata.org",
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Microsoft",
      "domain": "microsoft.com",
      "ok": true,
      "finalUrl": "https://www.microsoft.com/en-us",
      "offDomain": "microsoft.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 56,
        "execution": 82,
        "representation": 10,
        "composite": 49
      },
      "detail": {
        "retrieval": {
          "score": 56,
          "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": 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": "20 of 21 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, 23 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 65 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 154 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "65% of 40 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 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": "14 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, ChatGPT-User 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": 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Amazon",
      "domain": "amazon.com",
      "ok": true,
      "finalUrl": "https://www.amazon.com/",
      "offDomain": "amazon.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 20,
        "execution": 54,
        "representation": 10,
        "composite": 28
      },
      "detail": {
        "retrieval": {
          "score": 20,
          "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 1 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, 8 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 773 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": "partial",
                  "weight": 1,
                  "detail": "Meta description is 366 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 22 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": 50,
              "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": "fail",
                  "weight": 1.5,
                  "detail": "robots.txt blocks AI answer crawlers: oai-searchbot, perplexitybot, claude-searchbot.",
                  "rec": "Allow the crawlers that surface you in AI answers (OAI-SearchBot for ChatGPT search, ChatGPT-User for pages a ChatGPT user opens, PerplexityBot, Claude-SearchBot), or you are opting out of much AI visibility. Blocking training crawlers (GPTBot, ClaudeBot, Google-Extended) is a separate, legitimate choice that does not affect being cited in AI answers."
                },
                {
                  "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": "/sitemap.xml could not be read on this scan (a transient network fault or rate-limit), so sitemap presence is unmeasured; not scored as missing.",
                  "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": "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": "5 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 54,
          "band": "Major friction",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 75,
              "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, ChatGPT-User 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "fail",
                  "weight": 1,
                  "detail": "robots.txt disallows retrieval agents: oai-searchbot, perplexitybot, claude-searchbot.",
                  "rec": "Allow the retrieval crawlers that feed AI answers (OAI-SearchBot, ChatGPT-User, PerplexityBot, Claude-SearchBot) in robots.txt. Blocking training crawlers is a separate, legitimate choice."
                }
              ]
            },
            {
              "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 773 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": "robots.txt disallows retrieval agents"
            },
            {
              "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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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). (training/other crawlers blocked (gptbot, claudebot, google-extended, meta-externalagent).)",
                  "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": "Meta Platforms",
      "domain": "meta.com",
      "ok": true,
      "finalUrl": "https://www.meta.com/",
      "offDomain": "meta.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 57,
        "execution": 34,
        "representation": 60,
        "composite": 50
      },
      "detail": {
        "retrieval": {
          "score": 57,
          "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, Corporation.",
                  "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": "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": 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": "fail",
                  "weight": 1.5,
                  "detail": "0 of 1 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, 8 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 70,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 96 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 162 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": "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": "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": 34,
          "band": "Closed to agents",
          "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 400); agent results inconclusive. Probed: OAI-SearchBot 429, ChatGPT-User 429, PerplexityBot 200, ClaudeBot 200, GPTBot 429.",
                  "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, ChatGPT-User, 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": 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 (~96 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": 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 (Meta), 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": "5 declared authoritative home(s) counted (of 6 declared): linkedin.com, instagram.com, facebook.com, x.com, en.wikipedia.org.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared 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: copyrightHolder. (no training opt-out declared.)",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 4,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "en.wikipedia.org",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com",
                "en.wikipedia.org"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": false,
        "consistent": null,
        "note": "browser-ua-unreadable"
      },
      "flags": []
    },
    {
      "name": "Nvidia",
      "domain": "nvidia.com",
      "ok": true,
      "finalUrl": "https://www.nvidia.com/en-us/",
      "offDomain": "nvidia.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 66,
        "execution": 63,
        "representation": 43,
        "composite": 57
      },
      "detail": {
        "retrieval": {
          "score": 66,
          "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: Corporation.",
                  "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": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "249 of 322 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, 83 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 6100 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 58 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 114 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "90% of 82 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 (2,741 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": "error",
              "label": "1 insecure HTTP resource on a secure page"
            },
            {
              "sev": "warning",
              "label": "8 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, ChatGPT-User 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 6100 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": 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 (NVIDIA - World Leader in Artificial Intelligence Computing), 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": "5 declared authoritative home(s) counted: facebook.com, twitter.com, instagram.com, youtube.com, linkedin.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": 5,
              "reachable": 4,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "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": [],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "sameas-unverified",
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "Netflix",
      "domain": "netflix.com",
      "ok": true,
      "finalUrl": "https://www.netflix.com/",
      "offDomain": "netflix.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 51,
        "execution": 66,
        "representation": 18,
        "composite": 45
      },
      "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": 100,
              "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": "pass",
                  "weight": 1.5,
                  "detail": "6 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 3 H2, 13 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 553 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 124 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "50% of 2 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 (23,383 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "AI answer crawlers allowed; training or user-initiated crawlers blocked (meta-externalagent, ccbot, cohere-ai, bytespider, diffbot, omgili, imagesiftbot, perplexity-user, oai-adsbot), 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": "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": "error",
              "label": "1 insecure HTTP resource on a secure page"
            },
            {
              "sev": "warning",
              "label": "1 image 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, ChatGPT-User 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 553 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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. (training/other crawlers blocked (meta-externalagent, ccbot, cohere-ai, bytespider).)",
                  "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": "Intel",
      "domain": "intel.com",
      "ok": true,
      "finalUrl": "https://www.intel.com/content/www/us/en/homepage.html",
      "offDomain": "intel.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": 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": "7 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, 8 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 658 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 115 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": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (12,819 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": "error",
              "label": "No H1 heading on the page"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 59,
          "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, ChatGPT-User 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, ChatGPT-User, 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 658 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": "Some AI agents refused at the edge (PerplexityBot)"
            },
            {
              "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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "AMD",
      "domain": "amd.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Qualcomm",
      "domain": "qualcomm.com",
      "ok": true,
      "finalUrl": "https://www.qualcomm.com/",
      "offDomain": "qualcomm.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 45,
        "execution": 34,
        "representation": 53,
        "composite": 44
      },
      "detail": {
        "retrieval": {
          "score": 45,
          "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: Corporation.",
                  "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": 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": 65,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 13 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 42 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": "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 (1,267 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": 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, ChatGPT-User 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": 50,
              "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 (~13 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": "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"
            },
            {
              "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": 53,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Qualcomm), 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 declared authoritative home(s) counted: linkedin.com, en.wikipedia.org, x.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared 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": 3,
              "reachable": 2,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "en.wikipedia.org",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com",
                "en.wikipedia.org"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Broadcom",
      "domain": "broadcom.com",
      "ok": false,
      "reason": "UNREADABLE (no content / client-side rendered)",
      "wafVendor": ""
    },
    {
      "name": "Texas Instruments",
      "domain": "ti.com",
      "ok": true,
      "finalUrl": "https://www.ti.com/",
      "offDomain": "ti.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 43,
        "execution": 62,
        "representation": 10,
        "composite": 38
      },
      "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": "15 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, 9 H2, 2 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 70,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 580 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": "partial",
                  "weight": 1,
                  "detail": "Meta description is 195 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 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": "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": "1 image 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, ChatGPT-User 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 580 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Micron Technology",
      "domain": "micron.com",
      "ok": true,
      "finalUrl": "https://www.micron.com/",
      "offDomain": "micron.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 60,
        "execution": 68,
        "representation": 67,
        "composite": 65
      },
      "detail": {
        "retrieval": {
          "score": 60,
          "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": "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": "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": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "28 of 50 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, 32 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 1700 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 90 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 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": "No H1 heading on the page"
            },
            {
              "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, ChatGPT-User 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 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": 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": 67,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (Micron Technology, Inc.) 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": "4 declared authoritative home(s) counted: facebook.com, x.com, linkedin.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 70,
              "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": "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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 4,
              "reachable": 3,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "x.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "sameas-unverified"
      ]
    },
    {
      "name": "TSMC",
      "domain": "tsmc.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "ASML",
      "domain": "asml.com",
      "ok": true,
      "finalUrl": "https://www.asml.com/en",
      "offDomain": "asml.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 48,
        "execution": 62,
        "representation": 8,
        "composite": 39
      },
      "detail": {
        "retrieval": {
          "score": 48,
          "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 38 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, 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 660 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 62 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 153 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": 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": 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, ChatGPT-User 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 660 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Applied Materials",
      "domain": "appliedmaterials.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Akamai"
    },
    {
      "name": "Analog Devices",
      "domain": "analog.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Arm Holdings",
      "domain": "arm.com",
      "ok": true,
      "finalUrl": "https://www.arm.com/",
      "offDomain": "arm.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 45,
        "execution": 66,
        "representation": 13,
        "composite": 41
      },
      "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": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "166 of 271 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, 9 H2, 19 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 3600 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 120 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 113 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 (28,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 (3)"
            },
            {
              "sev": "error",
              "label": "2 insecure HTTP resources on a secure page"
            }
          ],
          "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, ChatGPT-User 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 3600 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": 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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 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": "NXP Semiconductors",
      "domain": "nxp.com",
      "ok": true,
      "finalUrl": "https://www.nxp.com/",
      "offDomain": "nxp.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 47,
        "execution": 50,
        "representation": 8,
        "composite": 35
      },
      "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": 11,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 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": "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": "20 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": "partial",
                  "weight": 1.5,
                  "detail": "5 H1, 5 H2, 21 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 778 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 108 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": 72,
              "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 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": "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 (5)"
            },
            {
              "sev": "error",
              "label": "1 invalid structured-data block"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "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": "Could not establish a browser baseline (control returned 404); agent results inconclusive. Probed: OAI-SearchBot 200, ChatGPT-User 200, PerplexityBot 404, 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, ChatGPT-User, 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 778 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)"
            },
            {
              "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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Marvell Technology",
      "domain": "marvell.com",
      "ok": true,
      "finalUrl": "https://www.marvell.com/",
      "offDomain": "marvell.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 67,
        "execution": 80,
        "representation": 41,
        "composite": 63
      },
      "detail": {
        "retrieval": {
          "score": 67,
          "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.",
                  "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": 50,
              "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": "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": "pass",
                  "weight": 1.5,
                  "detail": "16 of 55 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, 42 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 59 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 190 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": "99% of 73 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": "Multiple H1 headings (2)"
            },
            {
              "sev": "warning",
              "label": "1 image missing alt text"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            }
          ],
          "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, ChatGPT-User 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": "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 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": "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": 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 (Marvell Technology, Inc), 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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 declared authoritative home(s) counted: linkedin.com, x.com, facebook.com, instagram.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": 4,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "x.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "sameas-unverified"
      ]
    },
    {
      "name": "STMicroelectronics",
      "domain": "st.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Infineon Technologies",
      "domain": "infineon.com",
      "ok": true,
      "finalUrl": "https://www.infineon.com/",
      "offDomain": "infineon.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 74,
        "execution": 63,
        "representation": 41,
        "composite": 59
      },
      "detail": {
        "retrieval": {
          "score": 74,
          "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": 79,
              "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": "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: Article, Itemlist, Event.",
                  "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": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "15 of 78 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, 10 H2, 19 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 8700 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": "pass",
                  "weight": 1,
                  "detail": "Meta description is 158 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 305 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"
            }
          ],
          "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, ChatGPT-User 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 8700 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": 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 (Infineon Technologies), 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": "5 declared authoritative home(s) counted: facebook.com, instagram.com, linkedin.com, youtube.com, tiktok.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": 1,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "tiktok.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "GlobalFoundries",
      "domain": "gf.com",
      "ok": true,
      "finalUrl": "https://gf.com/",
      "offDomain": "gf.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 82,
        "execution": 87,
        "representation": 58,
        "composite": 76
      },
      "detail": {
        "retrieval": {
          "score": 82,
          "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": "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": "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": 82,
              "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: Service.",
                  "rec": null
                },
                {
                  "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": "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": "31 of 41 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, 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 1700 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 62 characters.",
                  "rec": null
                },
                {
                  "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": "100% of 40 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": 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, ChatGPT-User 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": 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 1700 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": "Offerings described but not actionable (no price or Action)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 58,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 100,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (GlobalFoundries) with a description and descriptive depth.",
                  "rec": null
                },
                {
                  "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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 declared authoritative home(s) counted (of 7 declared): linkedin.com, x.com, youtube.com, facebook.com, instagram.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": 5,
              "reachable": 4,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Lam Research",
      "domain": "lamresearch.com",
      "ok": true,
      "finalUrl": "https://www.lamresearch.com/",
      "offDomain": "lamresearch.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 61,
        "execution": 84,
        "representation": 28,
        "composite": 58
      },
      "detail": {
        "retrieval": {
          "score": 61,
          "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": "5 of 8 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, 10 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": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 726 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 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": 91,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (185,789 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "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": "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": "Missing meta description"
            },
            {
              "sev": "warning",
              "label": "No sitemap discoverable"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 84,
          "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, ChatGPT-User 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": 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 726 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": 50,
              "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": "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": 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 (Lam Research), 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "KLA",
      "domain": "kla.com",
      "ok": true,
      "finalUrl": "https://www.kla.com/",
      "offDomain": "kla.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 71,
        "execution": 87,
        "representation": 43,
        "composite": 67
      },
      "detail": {
        "retrieval": {
          "score": 71,
          "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": 79,
              "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": "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: Blogposting.",
                  "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": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "26 of 50 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, 7 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": 90,
              "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 55 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 135 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "78% of 18 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": "warning",
              "label": "Multiple H1 headings (4)"
            },
            {
              "sev": "warning",
              "label": "4 images missing alt text"
            }
          ],
          "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, ChatGPT-User 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": "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 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": 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 (KLA), 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": "3 declared authoritative home(s) counted: facebook.com, x.com, linkedin.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 3,
              "reachable": 2,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "x.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "sameas-unverified"
      ]
    },
    {
      "name": "Microchip Technology",
      "domain": "microchip.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Akamai"
    },
    {
      "name": "onsemi",
      "domain": "onsemi.com",
      "ok": true,
      "finalUrl": "https://www.onsemi.com/",
      "offDomain": "onsemi.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 71,
        "execution": 53,
        "representation": 48,
        "composite": 57
      },
      "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": "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": "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": 46,
              "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": "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": "36 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, 24 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 1400 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 51 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 153 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": "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": "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": 53,
          "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": "Could not establish a browser baseline (control returned 403); agent results inconclusive. Probed: OAI-SearchBot 200, ChatGPT-User 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, ChatGPT-User, 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 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": 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 (PerplexityBot)"
            },
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 48,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (onsemi), 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": "5 declared authoritative home(s) counted: linkedin.com, youtube.com, x.com, facebook.com, instagram.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 4,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": false,
        "consistent": null,
        "note": "browser-ua-unreadable"
      },
      "flags": []
    },
    {
      "name": "Renesas Electronics",
      "domain": "renesas.com",
      "ok": true,
      "finalUrl": "https://www.renesas.com/en",
      "offDomain": "renesas.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 60,
        "execution": 56,
        "representation": 55,
        "composite": 57
      },
      "detail": {
        "retrieval": {
          "score": 60,
          "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: Corporation.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "7 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": 39,
              "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": "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": 33,
              "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": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 21 H2, 8 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 55 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 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": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (6,768 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "AI answer crawlers allowed; training or user-initiated crawlers blocked (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": "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"
            }
          ],
          "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, ChatGPT-User 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": 55,
              "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": "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": 55,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Renesas Electronics Corporation), 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 \"Renesas Electronics 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": 100,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 declared authoritative home(s) counted (of 6 declared): facebook.com, en.wikipedia.org, twitter.com, youtube.com, instagram.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared 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": "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). (training/other crawlers blocked (bytespider).)",
                  "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": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org",
                "twitter.com"
              ],
              "confirmedHosts": [
                "en.wikipedia.org"
              ],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Salesforce",
      "domain": "salesforce.com",
      "ok": true,
      "finalUrl": "https://www.salesforce.com/?bc=DB",
      "offDomain": "salesforce.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 83,
        "execution": 83,
        "representation": 28,
        "composite": 65
      },
      "detail": {
        "retrieval": {
          "score": 83,
          "band": "Well positioned",
          "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": 100,
              "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": "pass",
                  "weight": 1.5,
                  "detail": "Rich types present: Faqpage.",
                  "rec": null
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "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": "175 of 224 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, 162 H2, 99 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 7400 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": "65% of 274 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 (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": "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": "97 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 83,
          "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, ChatGPT-User 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, ChatGPT-User, 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 (priced Offer).",
                  "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 7400 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 (PerplexityBot)"
            }
          ],
          "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 (Salesforce), 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "35 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": "Oracle",
      "domain": "oracle.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Akamai"
    },
    {
      "name": "SAP",
      "domain": "sap.com",
      "ok": true,
      "finalUrl": "https://www.sap.com/index.html",
      "offDomain": "sap.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 27,
        "execution": 34,
        "representation": 8,
        "composite": 23
      },
      "detail": {
        "retrieval": {
          "score": 27,
          "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 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": "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": 60,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 113 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 61 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 200 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 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": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (9,575 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "AI answer crawlers allowed; training or user-initiated crawlers blocked (applebot-extended, meta-externalagent, cohere-ai, bytespider, diffbot, omgili, imagesiftbot, oai-adsbot), a legitimate choice.",
                  "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": "Meta description over 180 characters"
            },
            {
              "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": 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, ChatGPT-User 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, ChatGPT-User, 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": 50,
              "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 (~113 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": "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 (PerplexityBot)"
            },
            {
              "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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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 (applebot-extended, meta-externalagent, cohere-ai, bytespider).)",
                  "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": "Adobe",
      "domain": "adobe.com",
      "ok": true,
      "finalUrl": "https://www.adobe.com/",
      "offDomain": "adobe.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 69,
        "execution": 53,
        "representation": 55,
        "composite": 59
      },
      "detail": {
        "retrieval": {
          "score": 69,
          "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, Corporation.",
                  "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": 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": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "24 of 37 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, 98 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 927 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": "pass",
                  "weight": 1,
                  "detail": "Meta description is 133 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": 89,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (10,479 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": "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": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 53,
          "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": "Could not establish a browser baseline (control returned 403); agent results inconclusive. Probed: OAI-SearchBot 200, ChatGPT-User 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, ChatGPT-User, 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 927 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": "Some AI agents refused at the edge (PerplexityBot)"
            },
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 55,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Adobe), 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": "5 declared authoritative home(s) counted: en.wikipedia.org, wikidata.org, linkedin.com, youtube.com, instagram.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org, wikidata.org) and a declared 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": "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": 3,
              "dead": 0,
              "links": [
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "wikidata.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org",
                "wikidata.org",
                "linkedin.com"
              ],
              "confirmedHosts": [
                "en.wikipedia.org",
                "wikidata.org",
                "linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": false,
        "consistent": null,
        "note": "browser-ua-unreadable"
      },
      "flags": []
    },
    {
      "name": "ServiceNow",
      "domain": "servicenow.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Akamai"
    },
    {
      "name": "Workday",
      "domain": "workday.com",
      "ok": true,
      "finalUrl": "https://www.workday.com/",
      "offDomain": "workday.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 68,
        "execution": 63,
        "representation": 55,
        "composite": 62
      },
      "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": "10 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": "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": "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": 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": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "24 of 74 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, 4 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 70,
              "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 67 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": "27% of 15 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": "11 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, ChatGPT-User 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": "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 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": 55,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Workday), 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": "5 declared authoritative home(s) counted: linkedin.com, x.com, instagram.com, facebook.com, en.wikipedia.org.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared 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": "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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 4,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "en.wikipedia.org",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com",
                "en.wikipedia.org"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Intuit",
      "domain": "intuit.com",
      "ok": true,
      "finalUrl": "https://www.intuit.com/",
      "offDomain": "intuit.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 76,
        "execution": 66,
        "representation": 67,
        "composite": 70
      },
      "detail": {
        "retrieval": {
          "score": 76,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 97,
              "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": "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": "pass",
                  "weight": 1,
                  "detail": "Named author or person with credibility detail (role, employer, expertise or profiles).",
                  "rec": null
                },
                {
                  "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": 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": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "17 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, 4 H2, 20 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 52 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 78 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "77% of 35 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,785 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": "8 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, ChatGPT-User 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": 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": 67,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (Intuit Inc.) 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": "5 declared authoritative home(s) counted (of 7 declared): facebook.com, linkedin.com, twitter.com, instagram.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. Two of the same kind corroborate less than one of each."
                }
              ]
            },
            {
              "key": "authority",
              "label": "Authority",
              "weight": 0.25,
              "score": 70,
              "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": "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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 4,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "twitter.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": false,
        "consistent": null,
        "note": "browser-ua-unreadable"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "Autodesk",
      "domain": "autodesk.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Akamai"
    },
    {
      "name": "Atlassian",
      "domain": "atlassian.com",
      "ok": true,
      "finalUrl": "https://www.atlassian.com/",
      "offDomain": "atlassian.com",
      "truncated": true,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 81,
        "execution": 86,
        "representation": 62,
        "composite": 76
      },
      "detail": {
        "retrieval": {
          "score": 81,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 81,
              "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": "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": "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": 79,
              "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": "pass",
                  "weight": 1.5,
                  "detail": "Rich types present: Softwareapplication.",
                  "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": "34 of 62 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, 32 H2, 9 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "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 70 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 9 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 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": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (26,567 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": "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, ChatGPT-User 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 4700 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": 62,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (Atlassian) 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": "5 declared authoritative home(s) counted (of 6 declared): x.com, linkedin.com, facebook.com, instagram.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "pass",
                  "weight": 0.5,
                  "detail": "36 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": 4,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Snowflake",
      "domain": "snowflake.com",
      "ok": true,
      "finalUrl": "https://www.snowflake.com/en/",
      "offDomain": "snowflake.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 44,
        "execution": 62,
        "representation": 13,
        "composite": 40
      },
      "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": "77 of 185 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, 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 1200 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 23 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": "97% of 64 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": "Multiple H1 headings (2)"
            },
            {
              "sev": "warning",
              "label": "2 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, ChatGPT-User 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 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Datadog",
      "domain": "datadoghq.com",
      "ok": true,
      "finalUrl": "https://www.datadoghq.com/",
      "offDomain": "datadoghq.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 45,
        "execution": 65,
        "representation": 13,
        "composite": 41
      },
      "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": 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": "12 of 62 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": 80,
              "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 39 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": "94% of 31 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": 80,
              "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": "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": "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": "2 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Missing meta description"
            },
            {
              "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, ChatGPT-User 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 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": 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "MongoDB",
      "domain": "mongodb.com",
      "ok": true,
      "finalUrl": "https://www.mongodb.com/",
      "offDomain": "mongodb.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 64,
        "execution": 71,
        "representation": 53,
        "composite": 63
      },
      "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": "6 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": "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": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "17 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": "3 H1, 6 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": 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 64 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": "84% of 76 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,094 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 (3)"
            },
            {
              "sev": "warning",
              "label": "12 images missing alt text"
            }
          ],
          "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, ChatGPT-User 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 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": 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": 53,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (MongoDB), 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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 declared authoritative home(s) counted (of 6 declared): linkedin.com, github.com, x.com, facebook.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "19 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": 5,
              "reachable": 4,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "github.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Palantir Technologies",
      "domain": "palantir.com",
      "ok": false,
      "reason": "UNREADABLE (no content / client-side rendered)",
      "wafVendor": ""
    },
    {
      "name": "HubSpot",
      "domain": "hubspot.com",
      "ok": true,
      "finalUrl": "https://www.hubspot.com/",
      "offDomain": "hubspot.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 91,
        "execution": 83,
        "representation": 66,
        "composite": 80
      },
      "detail": {
        "retrieval": {
          "score": 91,
          "band": "Built to be cited",
          "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.",
                  "rec": null
                },
                {
                  "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": "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": "Reviews or ratings are marked up on an eligible type.",
                  "rec": null
                }
              ]
            },
            {
              "key": "schema",
              "label": "Structured Data Depth",
              "weight": 0.2,
              "score": 86,
              "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": "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": "38 of 83 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, 46 H2, 64 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "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 59 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 7 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 91 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 (35,509 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, ChatGPT-User 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": 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 2300 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": "Offerings described but not actionable (no price or Action)"
            }
          ],
          "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 (HubSpot) 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": "5 declared authoritative home(s) counted (of 7 declared): wikidata.org, en.wikipedia.org, linkedin.com, x.com, instagram.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (wikidata.org, en.wikipedia.org) and a declared 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": "16 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": 4,
              "confirmed": 3,
              "dead": 0,
              "links": [
                {
                  "host": "wikidata.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "wikidata.org",
                "en.wikipedia.org",
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "wikidata.org",
                "en.wikipedia.org",
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "DocuSign",
      "domain": "docusign.com",
      "ok": true,
      "finalUrl": "https://www.docusign.com/",
      "offDomain": "docusign.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 59,
        "execution": 63,
        "representation": 46,
        "composite": 56
      },
      "detail": {
        "retrieval": {
          "score": 59,
          "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: 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": "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": "41 of 41 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, 15 H2, 33 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 2000 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 74 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 114 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 86 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": "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, ChatGPT-User 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 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": [
            {
              "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": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Docusign), 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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "4 declared authoritative home(s) counted: linkedin.com, facebook.com, x.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "16 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": 3,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Twilio",
      "domain": "twilio.com",
      "ok": true,
      "finalUrl": "https://www.twilio.com/en-us",
      "offDomain": "twilio.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 69,
        "execution": 85,
        "representation": 46,
        "composite": 67
      },
      "detail": {
        "retrieval": {
          "score": 69,
          "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: Organization.",
                  "rec": null
                },
                {
                  "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": "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": "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": "pass",
                  "weight": 1.5,
                  "detail": "34 of 46 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, 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 4600 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": "partial",
                  "weight": 1,
                  "detail": "Meta description is 183 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 45 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": [
            {
              "sev": "error",
              "label": "1 insecure HTTP resource on a secure page"
            },
            {
              "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": 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, ChatGPT-User 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 4600 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": 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 (Twilio), 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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 declared authoritative home(s) counted (of 7 declared): youtube.com, twitter.com, linkedin.com, facebook.com, instagram.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": 5,
              "reachable": 4,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "twitter.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Okta",
      "domain": "okta.com",
      "ok": true,
      "finalUrl": "https://www.okta.com/",
      "offDomain": "okta.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 68,
        "execution": 66,
        "representation": 66,
        "composite": 67
      },
      "detail": {
        "retrieval": {
          "score": 68,
          "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": "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": "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 66 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, 8 H2, 31 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 1900 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 146 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "29% of 101 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": 100,
              "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": "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)"
            },
            {
              "sev": "warning",
              "label": "72 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, ChatGPT-User 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 1900 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": 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 (Okta) 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 declared authoritative home(s) counted: facebook.com, linkedin.com, en.wikipedia.org.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared 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": 3,
              "reachable": 3,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "en.wikipedia.org"
              ],
              "confirmedHosts": [
                "linkedin.com",
                "en.wikipedia.org"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "CrowdStrike",
      "domain": "crowdstrike.com",
      "ok": true,
      "finalUrl": "https://www.crowdstrike.com/en-us/",
      "offDomain": "crowdstrike.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 80,
        "execution": 91,
        "representation": 46,
        "composite": 72
      },
      "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": "4 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": 100,
              "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": "pass",
                  "weight": 1.5,
                  "detail": "Rich types present: Product.",
                  "rec": null
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "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": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "16 of 45 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, 6 H2, 19 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 3500 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 58 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 147 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "72% of 74 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": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (3,245 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": "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": "21 images missing alt text"
            }
          ],
          "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, ChatGPT-User 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 (priced Offer).",
                  "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 3500 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": 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 (CrowdStrike), 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": "4 declared authoritative home(s) counted: linkedin.com, x.com, instagram.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 4,
              "reachable": 3,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Palo Alto Networks",
      "domain": "paloaltonetworks.com",
      "ok": true,
      "finalUrl": "https://www.paloaltonetworks.com/",
      "offDomain": "paloaltonetworks.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 48,
        "execution": 71,
        "representation": 13,
        "composite": 44
      },
      "detail": {
        "retrieval": {
          "score": 48,
          "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 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, 11 H2, 43 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2000 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 97 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 278 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 152 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 (17,899 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": "Title likely truncated in results (over 65 characters)"
            },
            {
              "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, ChatGPT-User 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 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": "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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "31 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": "Fortinet",
      "domain": "fortinet.com",
      "ok": true,
      "finalUrl": "https://www.fortinet.com/",
      "offDomain": "fortinet.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 64,
        "execution": 89,
        "representation": 46,
        "composite": 66
      },
      "detail": {
        "retrieval": {
          "score": 64,
          "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": "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": "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": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "37 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, 13 H2, 9 H3.",
                  "rec": null
                }
              ]
            },
            {
              "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 64 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 165 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "71% of 68 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": "AI answer crawlers allowed; training or user-initiated crawlers blocked (claudebot, applebot-extended, meta-externalagent, ccbot, cohere-ai, bytespider, diffbot, omgili, imagesiftbot, perplexity-user, oai-adsbot), a legitimate choice.",
                  "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"
            },
            {
              "sev": "warning",
              "label": "20 images missing alt text"
            }
          ],
          "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, ChatGPT-User 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": "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 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": "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 (Fortinet), 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": "5 declared authoritative home(s) counted: facebook.com, twitter.com, linkedin.com, youtube.com, instagram.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "33 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 (claudebot, applebot-extended, meta-externalagent, ccbot).)",
                  "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": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "twitter.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Zscaler",
      "domain": "zscaler.com",
      "ok": true,
      "finalUrl": "https://www.zscaler.com/",
      "offDomain": "zscaler.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 72,
        "execution": 76,
        "representation": 51,
        "composite": 66
      },
      "detail": {
        "retrieval": {
          "score": 72,
          "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, Person.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "10 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": "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": "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": 32,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "31 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": "23 of 26 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, 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 1400 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 133 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 118 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 (98,467 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": 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, ChatGPT-User 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": 36,
              "checks": [
                {
                  "label": "Machine-readable action",
                  "status": "partial",
                  "weight": 2.5,
                  "detail": "A potentialAction is declared, but its target is not a valid absolute URL, so an agent cannot resolve where to act.",
                  "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": "3 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": "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": "potentialAction target is not a valid absolute URL"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 51,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Jay Chaudhry), 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 \"Jay Chaudhry\" 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": "5 declared authoritative home(s) counted (of 7 declared): facebook.com, x.com, youtube.com, linkedin.com, instagram.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 4,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "x.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "sameas-unverified"
      ]
    },
    {
      "name": "Cloudflare",
      "domain": "cloudflare.com",
      "ok": true,
      "finalUrl": "https://www.cloudflare.com/",
      "offDomain": "cloudflare.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 60,
        "execution": 85,
        "representation": 46,
        "composite": 64
      },
      "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": "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": 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": 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": "2 H1, 4 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": 90,
              "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 35 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 68 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 68 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 (17,168 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)"
            }
          ],
          "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, ChatGPT-User 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": "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 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": [],
          "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 (Cloudflare), 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": "3 declared authoritative home(s) counted: github.com, linkedin.com, x.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "31 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": 2,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "github.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "VMware",
      "domain": "vmware.com",
      "ok": true,
      "finalUrl": "https://www.vmware.com/",
      "offDomain": "vmware.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 28,
        "execution": 34,
        "representation": 8,
        "composite": 23
      },
      "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, 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": 65,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 9 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 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": "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": 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": "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, ChatGPT-User 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 (~9 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": 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": "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": 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Zoom",
      "domain": "zoom.com",
      "ok": true,
      "finalUrl": "https://www.zoom.com/",
      "offDomain": "zoom.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 72,
        "execution": 83,
        "representation": 74,
        "composite": 76
      },
      "detail": {
        "retrieval": {
          "score": 72,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 81,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Corporation, Person.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "9 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": "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": "2 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": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "35 of 56 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, 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 2200 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": "pass",
                  "weight": 1,
                  "detail": "Meta description is 164 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "96% of 113 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": "5 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, ChatGPT-User 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 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": "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": 74,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (Zoom Communications) 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": "5 declared authoritative home(s) counted (of 6 declared): en.wikipedia.org, linkedin.com, x.com, youtube.com, facebook.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared profile source.",
                  "rec": null
                }
              ]
            },
            {
              "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": "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": 4,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org",
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "en.wikipedia.org",
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Dropbox",
      "domain": "dropbox.com",
      "ok": true,
      "finalUrl": "https://www.dropbox.com/",
      "offDomain": "dropbox.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 78,
        "execution": 83,
        "representation": 41,
        "composite": 67
      },
      "detail": {
        "retrieval": {
          "score": 78,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 81,
              "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": "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": "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": 75,
              "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": "pass",
                  "weight": 1.5,
                  "detail": "Rich types present: Softwareapplication, 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": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "22 of 24 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, 27 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 958 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 154 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": 78,
              "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": "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": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 83,
          "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 429); agent results inconclusive. Probed: OAI-SearchBot 429, ChatGPT-User 200, PerplexityBot 200, ClaudeBot 429, GPTBot 429.",
                  "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, ChatGPT-User, 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 (priced Offer).",
                  "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 958 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": 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 (Dropbox), 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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "3 declared authoritative home(s) counted: twitter.com, facebook.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": 2,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "twitter.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": false,
        "consistent": null,
        "note": "browser-ua-unreadable"
      },
      "flags": [
        "sameas-unverified"
      ]
    },
    {
      "name": "monday.com",
      "domain": "monday.com",
      "ok": true,
      "finalUrl": "https://monday.com/",
      "offDomain": "monday.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 72,
        "execution": 66,
        "representation": 46,
        "composite": 61
      },
      "detail": {
        "retrieval": {
          "score": 72,
          "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: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "10 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": "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": "pass",
                  "weight": 1.5,
                  "detail": "Rich types present: Softwareapplication.",
                  "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": "pass",
                  "weight": 1.5,
                  "detail": "47 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": "partial",
                  "weight": 1.5,
                  "detail": "2 H1, 14 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 2400 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 159 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "99% of 391 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 (9,892 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": "warning",
              "label": "5 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, ChatGPT-User 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": "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 2400 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": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (monday.com), 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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 declared authoritative home(s) counted (of 10 declared): twitter.com, facebook.com, linkedin.com, youtube.com, instagram.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "17 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": 3,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "twitter.com",
                "linkedin.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "twitter.com",
                "linkedin.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "GitLab",
      "domain": "gitlab.com",
      "ok": true,
      "finalUrl": "https://about.gitlab.com/",
      "offDomain": "about.gitlab.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 75,
        "execution": 82,
        "representation": 74,
        "composite": 77
      },
      "detail": {
        "retrieval": {
          "score": 75,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 81,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization, Corporation, Person.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "6 distinct external profiles linked via sameAs (15 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": "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": "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": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "35 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, 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 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": "pass",
                  "weight": 1,
                  "detail": "Meta description is 160 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "95% 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": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (10,614 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": "2 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, ChatGPT-User 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": "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": 74,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (GitLab) 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": "4 declared authoritative home(s) counted (of 6 declared): facebook.com, en.wikipedia.org, instagram.com, twitter.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared profile source.",
                  "rec": null
                }
              ]
            },
            {
              "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": "pass",
                  "weight": 0.5,
                  "detail": "30 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": 4,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org",
                "twitter.com"
              ],
              "confirmedHosts": [
                "en.wikipedia.org"
              ],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Elastic",
      "domain": "elastic.co",
      "ok": true,
      "finalUrl": "https://www.elastic.co/",
      "offDomain": "elastic.co",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 59,
        "execution": 62,
        "representation": 13,
        "composite": 45
      },
      "detail": {
        "retrieval": {
          "score": 59,
          "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": 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": "62 of 83 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "21 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 20 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 2500 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 94 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 64 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 36 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": "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, ChatGPT-User 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 2500 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Unity",
      "domain": "unity.com",
      "ok": true,
      "finalUrl": "https://unity.com/",
      "offDomain": "unity.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 67,
        "execution": 55,
        "representation": 53,
        "composite": 58
      },
      "detail": {
        "retrieval": {
          "score": 67,
          "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: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "9 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": "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": "10 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": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 20 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 1600 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": "partial",
                  "weight": 1,
                  "detail": "Meta description is 221 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 23 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 (199,999 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "AI answer crawlers allowed; training or user-initiated crawlers blocked (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": "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": "Title likely truncated in results (over 65 characters)"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            }
          ],
          "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, ChatGPT-User 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, ChatGPT-User, 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 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": "Some AI agents refused at the edge (PerplexityBot)"
            },
            {
              "sev": "warning",
              "label": "No machine-readable action found"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 53,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Unity), 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": 100,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 declared authoritative home(s) counted (of 9 declared): en.wikipedia.org, wikidata.org, linkedin.com, x.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org, wikidata.org) and a declared 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 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. (training/other crawlers blocked (bytespider).)",
                  "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": 3,
              "dead": 0,
              "links": [
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "wikidata.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org",
                "wikidata.org",
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "en.wikipedia.org",
                "wikidata.org",
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "IBM",
      "domain": "ibm.com",
      "ok": false,
      "reason": "UNREADABLE (HTTP 404)",
      "wafVendor": ""
    },
    {
      "name": "Cisco Systems",
      "domain": "cisco.com",
      "ok": true,
      "finalUrl": "https://www.cisco.com/",
      "offDomain": "cisco.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 62,
        "execution": 70,
        "representation": 25,
        "composite": 52
      },
      "detail": {
        "retrieval": {
          "score": 62,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 39,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Corporation.",
                  "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": "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": "24 of 55 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, 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 970 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": "pass",
                  "weight": 1,
                  "detail": "Meta description is 145 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "89% of 36 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 (1,178 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": "4 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 70,
          "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, ChatGPT-User 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, ChatGPT-User, 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": 75,
              "checks": [
                {
                  "label": "Form / task operability",
                  "status": "partial",
                  "weight": 2,
                  "detail": "5 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 970 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": "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": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Cisco - Global Home Page), 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": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": false,
        "consistent": null,
        "note": "browser-ua-unreadable"
      },
      "flags": []
    },
    {
      "name": "HP Inc.",
      "domain": "hp.com",
      "ok": true,
      "finalUrl": "https://www.hp.com/us-en/home.html",
      "offDomain": "hp.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 54,
        "execution": 62,
        "representation": 10,
        "composite": 42
      },
      "detail": {
        "retrieval": {
          "score": 54,
          "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": "12 of 51 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, 13 H2, 27 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 984 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 73 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 95 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": 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": "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, ChatGPT-User 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 984 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Hewlett Packard Enterprise",
      "domain": "hpe.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Dell Technologies",
      "domain": "dell.com",
      "ok": true,
      "finalUrl": "https://www.dell.com/en-us",
      "offDomain": "dell.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 70,
        "execution": 65,
        "representation": 53,
        "composite": 63
      },
      "detail": {
        "retrieval": {
          "score": 70,
          "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: 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": "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": 57,
              "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: 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": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 of 15 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, 20 H2, 24 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 3600 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 154 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": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (90,245 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": 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, ChatGPT-User 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 3600 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": 53,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Computers, Monitors &amp; Technology Solutions | Dell USA), 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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "4 declared authoritative home(s) counted: x.com, linkedin.com, instagram.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": 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": 0,
              "dead": 0,
              "links": [
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "x.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "sameas-unverified"
      ]
    },
    {
      "name": "Lenovo",
      "domain": "lenovo.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Akamai"
    },
    {
      "name": "Samsung Electronics",
      "domain": "samsung.com",
      "ok": true,
      "finalUrl": "https://www.samsung.com/us/",
      "offDomain": "samsung.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 72,
        "execution": 69,
        "representation": 41,
        "composite": 61
      },
      "detail": {
        "retrieval": {
          "score": 72,
          "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, Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "6 distinct external profiles linked via sameAs (36 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": "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": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "8 of 55 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, 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 74 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 168 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "99% of 207 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 (4,596 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": "2 insecure HTTP resources on a secure page"
            },
            {
              "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": 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, ChatGPT-User 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": "7 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": "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": 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 (Samsung Electronics (America)), 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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "3 declared authoritative home(s) counted (of 6 declared): youtube.com, instagram.com, facebook.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": 0,
              "dead": 0,
              "links": [
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "facebook.com",
                  "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": "Sony",
      "domain": "sony.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": ""
    },
    {
      "name": "Hitachi",
      "domain": "hitachi.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Fujitsu",
      "domain": "fujitsu.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Juniper Networks",
      "domain": "juniper.net",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": "",
      "escalatedFrom": {
        "name": "Juniper Networks",
        "domain": "juniper.net",
        "from": 70,
        "since": "2026-10-01",
        "outcome": "UNREACHABLE (no response)",
        "wafVendor": ""
      }
    },
    {
      "name": "Arista Networks",
      "domain": "arista.com",
      "ok": true,
      "finalUrl": "https://www.arista.com/en/",
      "offDomain": "arista.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 21,
        "execution": 34,
        "representation": 15,
        "composite": 23
      },
      "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 1 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": 45,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 48 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 16 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 1 images have alt text.",
                  "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": 74,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (3,035 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": "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": 63,
              "checks": [
                {
                  "label": "AI user-agent treatment at the edge",
                  "status": "partial",
                  "weight": 3,
                  "detail": "Could not establish a browser baseline (control returned 406); agent results inconclusive. Probed: OAI-SearchBot 200, ChatGPT-User 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, ChatGPT-User, 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": 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 (~48 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": "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": "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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Seagate Technology",
      "domain": "seagate.com",
      "ok": true,
      "finalUrl": "https://www.seagate.com/",
      "offDomain": "seagate.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 64,
        "execution": 62,
        "representation": 46,
        "composite": 57
      },
      "detail": {
        "retrieval": {
          "score": 64,
          "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: 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": "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": "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": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "34 of 56 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, 6 H2, 8 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 2400 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": "partial",
                  "weight": 1,
                  "detail": "Meta description is 305 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": "98% 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": 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)"
            },
            {
              "sev": "error",
              "label": "2 insecure HTTP resources on a secure page"
            },
            {
              "sev": "warning",
              "label": "1 image 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, ChatGPT-User 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 2400 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": 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 (Seagate ), 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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 declared authoritative home(s) counted: facebook.com, youtube.com, instagram.com, linkedin.com, twitter.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "43 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": 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": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "twitter.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Western Digital",
      "domain": "westerndigital.com",
      "ok": true,
      "finalUrl": "https://www.westerndigital.com/",
      "offDomain": "westerndigital.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 67,
        "execution": 65,
        "representation": 66,
        "composite": 66
      },
      "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": "7 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": "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": "24 of 130 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, 19 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 70,
              "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 78 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 160 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "56% of 54 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": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (23,068 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": "24 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, ChatGPT-User 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": "5 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 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": 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 (Western Digital Corporation) 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": "4 declared authoritative home(s) counted (of 7 declared): wikidata.org, en.wikipedia.org, linkedin.com, x.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (wikidata.org, en.wikipedia.org) and a declared 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": "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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 3,
              "confirmed": 1,
              "dead": 1,
              "links": [
                {
                  "host": "wikidata.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 404,
                  "state": "dead"
                }
              ],
              "scoringHosts": [
                "wikidata.org",
                "x.com"
              ],
              "confirmedHosts": [
                "wikidata.org"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "NetApp",
      "domain": "netapp.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": ""
    },
    {
      "name": "Pure Storage",
      "domain": "purestorage.com",
      "ok": true,
      "finalUrl": "https://www.everpuredata.com/",
      "offDomain": "everpuredata.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 70,
        "execution": 83,
        "representation": 70,
        "composite": 74
      },
      "detail": {
        "retrieval": {
          "score": 70,
          "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": "9 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": "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": "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 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": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 4 H2, 2 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 70 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 101 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": 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": "6 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 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, ChatGPT-User 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 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": [],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "representation": {
          "score": 70,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 100,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (Everpure) with a description and descriptive depth.",
                  "rec": null
                },
                {
                  "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": 100,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 declared authoritative home(s) counted (of 9 declared): facebook.com, en.wikipedia.org, x.com, linkedin.com, wikidata.org.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org, wikidata.org) and a declared 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": "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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 4,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "wikidata.org",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org",
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "en.wikipedia.org",
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Super Micro Computer",
      "domain": "supermicro.com",
      "ok": true,
      "finalUrl": "https://www.supermicro.com/en/",
      "offDomain": "supermicro.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 41,
        "execution": 59,
        "representation": 15,
        "composite": 38
      },
      "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": "pass",
                  "weight": 1.5,
                  "detail": "12 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": "partial",
                  "weight": 1.5,
                  "detail": "6 H1, 9 H2, 48 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 2000 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 156 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "90% 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": 78,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (190,953 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": "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 (6)"
            },
            {
              "sev": "warning",
              "label": "4 images missing alt text"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 59,
          "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, ChatGPT-User 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, ChatGPT-User, 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 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": "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 (PerplexityBot, ClaudeBot)"
            },
            {
              "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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Nokia",
      "domain": "nokia.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Akamai"
    },
    {
      "name": "Ericsson",
      "domain": "ericsson.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Xiaomi",
      "domain": "mi.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Akamai"
    },
    {
      "name": "Accenture",
      "domain": "accenture.com",
      "ok": true,
      "finalUrl": "https://www.accenture.com/en",
      "offDomain": "accenture.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 63,
        "execution": 63,
        "representation": 46,
        "composite": 57
      },
      "detail": {
        "retrieval": {
          "score": 63,
          "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 (6 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": "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": "15 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, 2 H2, 12 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 80,
              "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 25 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 155 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "8% of 12 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": "11 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, ChatGPT-User 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 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": "No machine-readable action found"
            }
          ],
          "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 (Reinvented with Accenture), 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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 declared authoritative home(s) counted: linkedin.com, twitter.com, facebook.com, instagram.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "16 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": 4,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "twitter.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "sameas-unverified"
      ]
    },
    {
      "name": "Infosys",
      "domain": "infosys.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": ""
    },
    {
      "name": "Tata Consultancy Services",
      "domain": "tcs.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Akamai"
    },
    {
      "name": "Wipro",
      "domain": "wipro.com",
      "ok": true,
      "finalUrl": "https://www.wipro.com/",
      "offDomain": "wipro.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 40,
        "execution": 62,
        "representation": 10,
        "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": 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": "10 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": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 7 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": 70,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 814 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 82 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 177 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "43% of 105 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": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "60 images missing alt text"
            },
            {
              "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, ChatGPT-User 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 814 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "HCLTech",
      "domain": "hcltech.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Capgemini",
      "domain": "capgemini.com",
      "ok": true,
      "finalUrl": "https://www.capgemini.com/",
      "offDomain": "capgemini.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 83,
        "execution": 85,
        "representation": 54,
        "composite": 74
      },
      "detail": {
        "retrieval": {
          "score": 83,
          "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.",
                  "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": "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": "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": 79,
              "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": "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: Article.",
                  "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": "22 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": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 5 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 1500 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 168 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 149 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 (11,733 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": 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, ChatGPT-User 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 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": 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": 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 (Capgemini) 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": "4 declared authoritative home(s) counted: facebook.com, linkedin.com, instagram.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 4,
              "reachable": 4,
              "confirmed": 1,
              "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": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Cognizant",
      "domain": "cognizant.com",
      "ok": true,
      "finalUrl": "https://www.cognizant.com/us/en",
      "offDomain": "cognizant.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 57,
        "execution": 65,
        "representation": 54,
        "composite": 59
      },
      "detail": {
        "retrieval": {
          "score": 57,
          "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": "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": "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": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 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": "0 H1, 0 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": 85,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 437 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 58 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 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": 89,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (88,629 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": "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": "Heading levels skip from H1 to H3"
            }
          ],
          "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, ChatGPT-User 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 437 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 (Cognizant) 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": "5 declared authoritative home(s) counted: facebook.com, twitter.com, instagram.com, youtube.com, linkedin.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 4,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "twitter.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "DXC Technology",
      "domain": "dxc.com",
      "ok": true,
      "finalUrl": "https://dxc.com/",
      "offDomain": "dxc.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 68,
        "execution": 69,
        "representation": 73,
        "composite": 70
      },
      "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": "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": "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": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "28 of 40 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, 9 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 2200 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 88 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 162 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "43% 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": 91,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (1,339 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": "27 images 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, ChatGPT-User 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 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": 73,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 100,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (DXC Technology ) with a description and descriptive depth.",
                  "rec": null
                },
                {
                  "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": 100,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 declared authoritative home(s) counted: linkedin.com, en.wikipedia.org, instagram.com, tiktok.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared 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": "22 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": "tiktok.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": "Spotify",
      "domain": "spotify.com",
      "ok": true,
      "finalUrl": "https://open.spotify.com/",
      "offDomain": "open.spotify.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 27,
        "execution": 34,
        "representation": 8,
        "composite": 23
      },
      "detail": {
        "retrieval": {
          "score": 27,
          "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": 65,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 11 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 70 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": "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": 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": "AI answer crawlers allowed; training or user-initiated crawlers blocked (gptbot, claudebot, google-extended, applebot-extended, meta-externalagent, ccbot, cohere-ai, 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": "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": "Title likely truncated in results (over 65 characters)"
            },
            {
              "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, ChatGPT-User 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 (~11 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Reddit",
      "domain": "reddit.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": ""
    },
    {
      "name": "Roblox",
      "domain": "roblox.com",
      "ok": false,
      "reason": "UNREADABLE (no content / client-side rendered)",
      "wafVendor": "",
      "escalatedFrom": {
        "name": "Roblox",
        "domain": "roblox.com",
        "from": 39,
        "since": "2026-10-01",
        "outcome": "UNREADABLE (no content / client-side rendered)",
        "wafVendor": ""
      }
    },
    {
      "name": "Electronic Arts",
      "domain": "ea.com",
      "ok": true,
      "finalUrl": "https://www.ea.com/",
      "offDomain": "ea.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 40,
        "execution": 65,
        "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": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "24 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": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 5 H2, 29 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 44 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 118 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": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (12,380 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "AI answer crawlers allowed; training or user-initiated crawlers blocked (meta-externalagent, cohere-ai, 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": "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"
            }
          ],
          "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, ChatGPT-User 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": 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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. (training/other crawlers blocked (meta-externalagent, cohere-ai, bytespider).)",
                  "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": "Shopify",
      "domain": "shopify.com",
      "ok": true,
      "finalUrl": "https://www.shopify.com/",
      "offDomain": "shopify.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 50,
        "execution": 65,
        "representation": 13,
        "composite": 43
      },
      "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": "16 of 59 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, 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 1100 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 142 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 57 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 (12,516 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": "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, ChatGPT-User 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": 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "15 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": "Sage Group",
      "domain": "sage.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Darktrace",
      "domain": "darktrace.com",
      "ok": true,
      "finalUrl": "https://www.darktrace.com/",
      "offDomain": "darktrace.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 64,
        "execution": 65,
        "representation": 54,
        "composite": 61
      },
      "detail": {
        "retrieval": {
          "score": 64,
          "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: 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": "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": "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": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "27 of 118 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, 4 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 2900 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 51 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 162 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 252 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 (12,918 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 (7)"
            }
          ],
          "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, ChatGPT-User 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 2900 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 (Darktrace) 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": "4 declared authoritative home(s) counted: linkedin.com, youtube.com, x.com, facebook.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": 3,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Sophos",
      "domain": "sophos.com",
      "ok": true,
      "finalUrl": "https://www.sophos.com/en-us",
      "offDomain": "sophos.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 73,
        "execution": 53,
        "representation": 37,
        "composite": 54
      },
      "detail": {
        "retrieval": {
          "score": 73,
          "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": "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": "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": "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": "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: 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": "23 of 46 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": 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 153 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 107 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 (28,993 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": 53,
          "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": "Could not establish a browser baseline (control returned timeout); agent results inconclusive. Probed: OAI-SearchBot 200, ChatGPT-User 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, ChatGPT-User, 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 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": 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": 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 (Sophos), 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 declared authoritative home(s) counted: en.wikipedia.org.",
                  "rec": "Declare at least two authoritative homes in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "A registry is declared, but no distinct profile source corroborates it.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "15 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": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org"
              ],
              "confirmedHosts": [
                "en.wikipedia.org"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": false,
        "consistent": null,
        "note": "browser-ua-unreadable"
      },
      "flags": []
    },
    {
      "name": "Softcat",
      "domain": "softcat.com",
      "ok": true,
      "finalUrl": "https://softcat.com/",
      "offDomain": "softcat.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 61,
        "execution": 68,
        "representation": 43,
        "composite": 57
      },
      "detail": {
        "retrieval": {
          "score": 61,
          "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": "4 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": 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": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "9 of 30 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, 25 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 794 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 135 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% 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": 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": "error",
              "label": "1 insecure HTTP resource on a secure page"
            }
          ],
          "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, ChatGPT-User 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 794 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": 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 (Softcat), 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": "4 declared authoritative home(s) counted: twitter.com, youtube.com, instagram.com, linkedin.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": 3,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "twitter.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Computacenter",
      "domain": "computacenter.com",
      "ok": true,
      "finalUrl": "https://www.computacenter.com/",
      "offDomain": "computacenter.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 78,
        "execution": 30,
        "representation": 43,
        "composite": 50
      },
      "detail": {
        "retrieval": {
          "score": 78,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 72,
              "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": "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": 86,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "25 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: Service, 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": "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": "26 of 66 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, 26 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "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 51 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 279 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": "89% of 36 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": "4 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": 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, ChatGPT-User 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, ChatGPT-User, 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": 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 2300 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": "error",
              "label": "AI agents are refused at the edge (CDN/WAF), not just in robots.txt"
            },
            {
              "sev": "warning",
              "label": "Interactive CAPTCHA present; autonomous agents cannot complete it"
            }
          ],
          "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 (Computacenter), 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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "3 declared authoritative home(s) counted: linkedin.com, youtube.com, x.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 3,
              "reachable": 2,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Kainos",
      "domain": "kainos.com",
      "ok": true,
      "finalUrl": "https://www.kainos.com/",
      "offDomain": "kainos.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 43,
        "execution": 71,
        "representation": 15,
        "composite": 43
      },
      "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": "partial",
                  "weight": 1.5,
                  "detail": "4 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, 20 H2, 9 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 252 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 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": 91,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (78,560 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": "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": "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, ChatGPT-User 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": 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Endava",
      "domain": "endava.com",
      "ok": true,
      "finalUrl": "https://www.endava.com/",
      "offDomain": "endava.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 68,
        "execution": 62,
        "representation": 52,
        "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: 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": "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": "20 of 28 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, 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 650 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 136 characters.",
                  "rec": null
                },
                {
                  "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": 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, ChatGPT-User 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 650 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": 52,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (Endava) 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": "3 declared authoritative home(s) counted (of 5 declared): facebook.com, x.com, instagram.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": 5,
              "reachable": 4,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "x.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "sameas-unverified"
      ]
    },
    {
      "name": "AVEVA",
      "domain": "aveva.com",
      "ok": true,
      "finalUrl": "https://www.aveva.com/",
      "offDomain": "aveva.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 63,
        "execution": 65,
        "representation": 43,
        "composite": 57
      },
      "detail": {
        "retrieval": {
          "score": 63,
          "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": "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": "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": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "10 of 24 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, 2 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 44 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 154 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "94% of 49 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 (17,937 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": "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"
            }
          ],
          "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, ChatGPT-User 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 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": 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": 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 (AVEVA), 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": "5 declared authoritative home(s) counted (of 6 declared): facebook.com, x.com, youtube.com, linkedin.com, instagram.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 4,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Auto Trader",
      "domain": "autotrader.co.uk",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Rightmove",
      "domain": "rightmove.co.uk",
      "ok": true,
      "finalUrl": "https://www.rightmove.co.uk/",
      "offDomain": "rightmove.co.uk",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 44,
        "execution": 65,
        "representation": 15,
        "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": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "9 of 10 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, 6 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 616 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Title is 85 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 73 characters.",
                  "rec": null
                },
                {
                  "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": 78,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (158,502 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "AI answer crawlers allowed; training or user-initiated crawlers blocked (gptbot, ccbot), 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": "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": "Title likely truncated in results (over 65 characters)"
            },
            {
              "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, ChatGPT-User 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 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": "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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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. (training/other crawlers blocked (gptbot, ccbot).)",
                  "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": "Raspberry Pi",
      "domain": "raspberrypi.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Synopsys",
      "domain": "synopsys.com",
      "ok": true,
      "finalUrl": "https://www.synopsys.com/",
      "offDomain": "synopsys.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": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "10 of 26 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, 13 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 1300 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": "pass",
                  "weight": 1,
                  "detail": "Meta description is 143 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "70% of 74 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": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (5,643 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": "22 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, ChatGPT-User 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 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": 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": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Cadence Design Systems",
      "domain": "cadence.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Keysight Technologies",
      "domain": "keysight.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Skyworks Solutions",
      "domain": "skyworksinc.com",
      "ok": true,
      "finalUrl": "https://www.skyworksinc.com/",
      "offDomain": "skyworksinc.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 39,
        "execution": 63,
        "representation": 8,
        "composite": 37
      },
      "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": "7 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": "5 H1, 71 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 3000 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": "partial",
                  "weight": 1,
                  "detail": "Meta description is 61 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 23 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": "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": "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 (5)"
            },
            {
              "sev": "error",
              "label": "15 insecure HTTP resources on a secure page"
            },
            {
              "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, ChatGPT-User 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 3000 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Synaptics",
      "domain": "synaptics.com",
      "ok": true,
      "finalUrl": "https://www.synaptics.com/",
      "offDomain": "synaptics.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 39,
        "execution": 71,
        "representation": 13,
        "composite": 41
      },
      "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": "16 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": "partial",
                  "weight": 1.5,
                  "detail": "4 H1, 8 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": 60,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 902 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": "fail",
                  "weight": 1,
                  "detail": "No meta description found.",
                  "rec": "Add a clear meta description."
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "24% of 38 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 (8,242 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 (4)"
            },
            {
              "sev": "warning",
              "label": "29 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Missing meta description"
            }
          ],
          "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, ChatGPT-User 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 902 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Zebra Technologies",
      "domain": "zebra.com",
      "ok": false,
      "reason": "UNREADABLE (HTTP 406)",
      "wafVendor": "",
      "escalatedFrom": {
        "name": "Zebra Technologies",
        "domain": "zebra.com",
        "from": 69,
        "since": "2026-10-01",
        "outcome": "UNREADABLE (HTTP 406)",
        "wafVendor": ""
      }
    },
    {
      "name": "Motorola Solutions",
      "domain": "motorolasolutions.com",
      "ok": true,
      "finalUrl": "https://www.motorolasolutions.com/en_us.html?geo=redirect",
      "offDomain": "motorolasolutions.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 59,
        "execution": 83,
        "representation": 58,
        "composite": 67
      },
      "detail": {
        "retrieval": {
          "score": 59,
          "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.",
                  "rec": null
                },
                {
                  "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": "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": "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": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "87 of 118 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, 41 H2, 47 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 5000 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": "pass",
                  "weight": 1,
                  "detail": "Meta description is 148 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "98% 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": 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": "7 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, ChatGPT-User 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 5000 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": 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 (Motorola Solutions), 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": "5 declared authoritative home(s) counted (of 6 declared): en.wikipedia.org, youtube.com, instagram.com, linkedin.com, facebook.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared 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": "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 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": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org",
                "linkedin.com"
              ],
              "confirmedHosts": [
                "en.wikipedia.org",
                "linkedin.com"
              ],
              "unverifiedHosts": []
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Logitech",
      "domain": "logitech.com",
      "ok": true,
      "finalUrl": "https://www.logitech.com/en-us",
      "offDomain": "logitech.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 59,
        "execution": 62,
        "representation": 28,
        "composite": 50
      },
      "detail": {
        "retrieval": {
          "score": 59,
          "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": "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": 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": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "18 of 38 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, 31 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 750 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": "pass",
                  "weight": 1,
                  "detail": "Meta description is 154 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": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (5,843 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": "7 insecure HTTP resources on a secure page"
            }
          ],
          "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, ChatGPT-User 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 750 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": 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 (Logitech), 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "19 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": "Garmin",
      "domain": "garmin.com",
      "ok": true,
      "finalUrl": "https://www.garmin.com/en-US/",
      "offDomain": "garmin.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 28,
        "execution": 54,
        "representation": 8,
        "composite": 30
      },
      "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": 17,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "3 of 12 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, 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 573 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 152 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": 57,
              "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": "fail",
                  "weight": 1.5,
                  "detail": "robots.txt blocks AI answer crawlers: perplexitybot.",
                  "rec": "Allow the crawlers that surface you in AI answers (OAI-SearchBot for ChatGPT search, ChatGPT-User for pages a ChatGPT user opens, PerplexityBot, Claude-SearchBot), or you are opting out of much AI visibility. Blocking training crawlers (GPTBot, ClaudeBot, Google-Extended) is a separate, legitimate choice that does not affect being cited in AI answers."
                },
                {
                  "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": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "Heading levels skip from H1 to H3"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 54,
          "band": "Major friction",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 75,
              "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, ChatGPT-User 200, PerplexityBot 200, ClaudeBot 200, GPTBot 200).",
                  "rec": null
                },
                {
                  "label": "Robots policy for retrieval agents",
                  "status": "fail",
                  "weight": 1,
                  "detail": "robots.txt disallows retrieval agents: perplexitybot.",
                  "rec": "Allow the retrieval crawlers that feed AI answers (OAI-SearchBot, ChatGPT-User, PerplexityBot, Claude-SearchBot) in robots.txt. Blocking training crawlers is a separate, legitimate choice."
                }
              ]
            },
            {
              "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 573 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": "robots.txt disallows retrieval agents"
            },
            {
              "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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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 (omgili).)",
                  "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": "Akamai Technologies",
      "domain": "akamai.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": ""
    },
    {
      "name": "Ansys",
      "domain": "ansys.com",
      "ok": true,
      "finalUrl": "https://ansys.synopsys.com/",
      "offDomain": "ansys.synopsys.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 61,
        "execution": 55,
        "representation": 25,
        "composite": 47
      },
      "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": 46,
              "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": "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": "38 of 57 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, 8 H2, 17 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 39 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 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": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (33,535 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"
            }
          ],
          "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, ChatGPT-User 200, PerplexityBot 200, 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, ChatGPT-User, 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 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": 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 (ClaudeBot, GPTBot)"
            },
            {
              "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 (Ansys Inc), 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "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": "Dassault Systèmes",
      "domain": "3ds.com",
      "ok": true,
      "finalUrl": "https://www.3ds.com/",
      "offDomain": "3ds.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 74,
        "execution": 93,
        "representation": 23,
        "composite": 63
      },
      "detail": {
        "retrieval": {
          "score": 74,
          "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": 71,
              "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": "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: Service.",
                  "rec": null
                },
                {
                  "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": "pass",
                  "weight": 1.5,
                  "detail": "Products or services are described in structured data.",
                  "rec": null
                }
              ]
            },
            {
              "key": "answer",
              "label": "Answerability",
              "weight": 0.26,
              "score": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "28 of 46 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, 6 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 1100 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 140 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": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (12,156 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": 93,
          "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, ChatGPT-User 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": 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": 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 (3ds), 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 \"3ds\" 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "PTC",
      "domain": "ptc.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": ""
    },
    {
      "name": "Amdocs",
      "domain": "amdocs.com",
      "ok": true,
      "finalUrl": "https://www.amdocs.com/",
      "offDomain": "amdocs.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 14,
        "execution": 34,
        "representation": 15,
        "composite": 21
      },
      "detail": {
        "retrieval": {
          "score": 14,
          "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": 50,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (11,030 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": "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, ChatGPT-User 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": 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Open Text",
      "domain": "opentext.com",
      "ok": true,
      "finalUrl": "https://www.opentext.com/",
      "offDomain": "opentext.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 71,
        "execution": 55,
        "representation": 54,
        "composite": 60
      },
      "detail": {
        "retrieval": {
          "score": 71,
          "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, Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "8 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": "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": "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": "113 of 144 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, 12 H2, 71 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 47 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 74 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 (16,494 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "AI answer crawlers allowed; training or user-initiated crawlers blocked (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": "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": [],
          "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 444); agent results inconclusive. Probed: OAI-SearchBot 200, ChatGPT-User 200, PerplexityBot 444, 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, ChatGPT-User, 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": "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 3800 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 (PerplexityBot)"
            },
            {
              "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 (OpenText) 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": "5 declared authoritative home(s) counted (of 8 declared): twitter.com, youtube.com, linkedin.com, x.com, instagram.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": 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. (training/other crawlers blocked (ccbot, bytespider).)",
                  "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": 3,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "twitter.com",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "twitter.com",
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": false,
        "consistent": null,
        "note": "browser-ua-unreadable"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "NICE",
      "domain": "nice.com",
      "ok": true,
      "finalUrl": "https://www.nice.com/",
      "offDomain": "nice.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 75,
        "execution": 90,
        "representation": 43,
        "composite": 69
      },
      "detail": {
        "retrieval": {
          "score": 75,
          "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": "4 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": "73 of 240 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, 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 70 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 136 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 23 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 (9,263 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": "Title likely truncated in results (over 65 characters)"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 90,
          "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, ChatGPT-User 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 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": [],
          "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 (NiCE), 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": "4 declared authoritative home(s) counted: facebook.com, x.com, linkedin.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": 3,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Pegasystems",
      "domain": "pega.com",
      "ok": true,
      "finalUrl": "https://www.pega.com/",
      "offDomain": "pega.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 54,
        "execution": 71,
        "representation": 13,
        "composite": 46
      },
      "detail": {
        "retrieval": {
          "score": 54,
          "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": "21 of 51 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, 12 H2, 30 H3.",
                  "rec": null
                }
              ]
            },
            {
              "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 68 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": "83% of 42 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 (4,681 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": "1 insecure HTTP resource on a secure page"
            },
            {
              "sev": "warning",
              "label": "7 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 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, ChatGPT-User 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 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": 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Guidewire Software",
      "domain": "guidewire.com",
      "ok": true,
      "finalUrl": "https://www.guidewire.com/",
      "offDomain": "guidewire.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 76,
        "execution": 86,
        "representation": 65,
        "composite": 76
      },
      "detail": {
        "retrieval": {
          "score": 76,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 72,
              "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": "15 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": "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": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "23 of 47 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, 18 H2, 19 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 55 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": "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": 91,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (45,882 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": 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, ChatGPT-User 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 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": 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": 65,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Guidewire), 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": 100,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 declared authoritative home(s) counted (of 6 declared): linkedin.com, x.com, youtube.com, facebook.com, en.wikipedia.org.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared profile source.",
                  "rec": null
                }
              ]
            },
            {
              "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": "pass",
                  "weight": 0.5,
                  "detail": "19 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": 4,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "en.wikipedia.org",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com",
                "en.wikipedia.org"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Tyler Technologies",
      "domain": "tylertech.com",
      "ok": true,
      "finalUrl": "https://www.tylertech.com/",
      "offDomain": "tylertech.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 40,
        "execution": 30,
        "representation": 13,
        "composite": 28
      },
      "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": "30 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": "3 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": 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 62 characters.",
                  "rec": null
                },
                {
                  "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": "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": 70,
              "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": "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": "Multiple H1 headings (3)"
            },
            {
              "sev": "warning",
              "label": "No sitemap discoverable"
            }
          ],
          "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, ChatGPT-User 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, ChatGPT-User, 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": 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 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": 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": "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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "26 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": "Manhattan Associates",
      "domain": "manh.com",
      "ok": true,
      "finalUrl": "https://www.manh.com/",
      "offDomain": "manh.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 69,
        "execution": 85,
        "representation": 28,
        "composite": 61
      },
      "detail": {
        "retrieval": {
          "score": 69,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 39,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Corporation, 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": "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": 57,
              "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": "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": "40 of 50 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, 9 H2, 44 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 60,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 2000 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": "partial",
                  "weight": 1,
                  "detail": "Meta description is 38 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": "52% 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": 100,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (4,337 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": "21 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 characters)"
            }
          ],
          "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, ChatGPT-User 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 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": "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": 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 (Manhattan Associates), 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": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Fair Isaac (FICO)",
      "domain": "fico.com",
      "ok": true,
      "finalUrl": "https://www.fico.com/",
      "offDomain": "fico.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, ChatGPT-User 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Nutanix",
      "domain": "nutanix.com",
      "ok": true,
      "finalUrl": "https://www.nutanix.com/",
      "offDomain": "nutanix.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 59,
        "execution": 68,
        "representation": 28,
        "composite": 52
      },
      "detail": {
        "retrieval": {
          "score": 59,
          "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": 68,
              "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": "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": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "19 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": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 13 H2, 5 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 992 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 144 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "fail",
                  "weight": 1,
                  "detail": "4% of 24 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": "23 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, ChatGPT-User 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 992 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 (Nutanix), 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "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": "Dynatrace",
      "domain": "dynatrace.com",
      "ok": true,
      "finalUrl": "https://www.dynatrace.com/",
      "offDomain": "dynatrace.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 89,
        "execution": 94,
        "representation": 81,
        "composite": 88
      },
      "detail": {
        "retrieval": {
          "score": 89,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 94,
              "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": "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": "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": 100,
              "checks": [
                {
                  "label": "Valid structured data (JSON-LD)",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "6 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: Videoobject, Softwareapplication.",
                  "rec": null
                },
                {
                  "label": "Freshness signals (dates)",
                  "status": "pass",
                  "weight": 1,
                  "detail": "datePublished / dateModified present in structured data.",
                  "rec": null
                },
                {
                  "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": "17 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, 9 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 644 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 155 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 52 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 (182,043 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": 94,
          "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, ChatGPT-User 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 (priced Offer).",
                  "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 644 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": 81,
          "band": "Well defined",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (Dynatrace) 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": "5 declared authoritative home(s) counted (of 7 declared): twitter.com, facebook.com, en.wikipedia.org, linkedin.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared profile source.",
                  "rec": null
                }
              ]
            },
            {
              "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": "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": 100,
              "checks": [
                {
                  "label": "Representation & usage rights",
                  "status": "pass",
                  "weight": 1,
                  "detail": "You actively govern representation: copyrightHolder. (no training opt-out declared.)",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 4,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org",
                "linkedin.com",
                "twitter.com"
              ],
              "confirmedHosts": [
                "en.wikipedia.org",
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Teradata",
      "domain": "teradata.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Cloudera",
      "domain": "cloudera.com",
      "ok": true,
      "finalUrl": "https://www.cloudera.com/",
      "offDomain": "cloudera.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 62,
        "execution": 63,
        "representation": 46,
        "composite": 57
      },
      "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": "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": 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": "23 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, 5 H2, 8 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 48 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 134 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "partial",
                  "weight": 1,
                  "detail": "74% of 50 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": "13 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, ChatGPT-User 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": 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 (Cloudera), 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": "5 declared authoritative home(s) counted: facebook.com, instagram.com, x.com, youtube.com, linkedin.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 4,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Informatica",
      "domain": "informatica.com",
      "ok": true,
      "finalUrl": "https://www.informatica.com/",
      "offDomain": "informatica.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 78,
        "execution": 66,
        "representation": 65,
        "composite": 70
      },
      "detail": {
        "retrieval": {
          "score": 78,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 67,
              "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": "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": "3 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": "28 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": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 4 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 1200 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 116 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "99% of 67 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 (199,961 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": "1 invalid structured-data block"
            },
            {
              "sev": "warning",
              "label": "1 image 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, ChatGPT-User 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": 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": 65,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Informatica from Salesforce), 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": "5 declared authoritative home(s) counted: facebook.com, twitter.com, youtube.com, linkedin.com, en.wikipedia.org.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared 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": 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": 5,
              "reachable": 3,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 429,
                  "state": "unverified"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "twitter.com",
                "linkedin.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "twitter.com",
                "linkedin.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Qlik",
      "domain": "qlik.com",
      "ok": true,
      "finalUrl": "https://www.qlik.com/us",
      "offDomain": "qlik.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 64,
        "execution": 86,
        "representation": 58,
        "composite": 69
      },
      "detail": {
        "retrieval": {
          "score": 64,
          "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: 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": "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": "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": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "31 of 144 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, 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 60 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": "93% of 83 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 (12,595 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": "pass",
                  "weight": 0.75,
                  "detail": "HTTPS, responsive viewport, lang set.",
                  "rec": null
                }
              ]
            }
          ],
          "issues": [
            {
              "sev": "warning",
              "label": "Multiple H1 headings (2)"
            },
            {
              "sev": "warning",
              "label": "6 images missing alt text"
            },
            {
              "sev": "warning",
              "label": "No canonical URL declared"
            }
          ],
          "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, ChatGPT-User 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 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": [],
          "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 (Qlik), 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": "5 declared authoritative home(s) counted (of 7 declared): twitter.com, youtube.com, linkedin.com, facebook.com, en.wikipedia.org.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared 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 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": 2,
              "dead": 0,
              "links": [
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "en.wikipedia.org",
                "twitter.com"
              ],
              "confirmedHosts": [
                "linkedin.com",
                "en.wikipedia.org"
              ],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "UiPath",
      "domain": "uipath.com",
      "ok": true,
      "finalUrl": "https://www.uipath.com/",
      "offDomain": "uipath.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 67,
        "execution": 59,
        "representation": 57,
        "composite": 61
      },
      "detail": {
        "retrieval": {
          "score": 67,
          "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": "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": "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": "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": 83,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "33 of 81 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, 9 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 65,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 283 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 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": "partial",
                  "weight": 1,
                  "detail": "Meta description is 187 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": "90% 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": "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": "2 images missing alt text"
            },
            {
              "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": 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, ChatGPT-User 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": "partial",
                  "weight": 1.5,
                  "detail": "Only about 283 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": 57,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (UiPath) 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 declared authoritative home(s) counted: linkedin.com, twitter.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "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": "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": 1,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "twitter.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Confluent",
      "domain": "confluent.io",
      "ok": true,
      "finalUrl": "https://www.confluent.io/",
      "offDomain": "confluent.io",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 76,
        "execution": 63,
        "representation": 58,
        "composite": 66
      },
      "detail": {
        "retrieval": {
          "score": 76,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 67,
              "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": "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": "2 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": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "116 of 202 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, 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 3300 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 39 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": "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": 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, ChatGPT-User 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": "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 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": 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 (Confluent), 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": 100,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 declared authoritative home(s) counted (of 6 declared): wikidata.org, en.wikipedia.org, crunchbase.com, linkedin.com, github.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (wikidata.org, en.wikipedia.org) and a declared 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": "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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 4,
              "confirmed": 3,
              "dead": 0,
              "links": [
                {
                  "host": "wikidata.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "crunchbase.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "github.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "wikidata.org",
                "en.wikipedia.org",
                "linkedin.com",
                "crunchbase.com"
              ],
              "confirmedHosts": [
                "wikidata.org",
                "en.wikipedia.org",
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "crunchbase.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Asana",
      "domain": "asana.com",
      "ok": true,
      "finalUrl": "https://asana.com/",
      "offDomain": "asana.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 74,
        "execution": 66,
        "representation": 59,
        "composite": 66
      },
      "detail": {
        "retrieval": {
          "score": 74,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 92,
              "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": "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": "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": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "56 of 76 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, 12 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": 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 59 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 106 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 273 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,691 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": 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, ChatGPT-User 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 1700 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": 59,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (Asana) 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": "5 declared authoritative home(s) counted: twitter.com, facebook.com, linkedin.com, instagram.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 4,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "twitter.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Box",
      "domain": "box.com",
      "ok": true,
      "finalUrl": "https://www.box.com/",
      "offDomain": "box.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 62,
        "execution": 63,
        "representation": 46,
        "composite": 57
      },
      "detail": {
        "retrieval": {
          "score": 62,
          "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: 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": "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": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "24 of 57 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, 4 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": 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 65 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 100 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, 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"
            }
          ],
          "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, ChatGPT-User 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 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": 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 (Box, Inc.), 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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "4 declared authoritative home(s) counted: linkedin.com, twitter.com, facebook.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 4,
              "reachable": 3,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "twitter.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "sameas-unverified"
      ]
    },
    {
      "name": "Smartsheet",
      "domain": "smartsheet.com",
      "ok": true,
      "finalUrl": "https://www.smartsheet.com/",
      "offDomain": "smartsheet.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 67,
        "execution": 69,
        "representation": 46,
        "composite": 61
      },
      "detail": {
        "retrieval": {
          "score": 67,
          "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": "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": "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": "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": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 9 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 1100 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 113 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 104 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 (15,230 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": "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": [],
          "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, ChatGPT-User 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": 90,
              "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 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": "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": 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": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Smartsheet), 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": "4 declared authoritative home(s) counted: twitter.com, facebook.com, linkedin.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": 3,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "twitter.com"
              ],
              "confirmedHosts": [
                "linkedin.com"
              ],
              "unverifiedHosts": [
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Freshworks",
      "domain": "freshworks.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Klaviyo",
      "domain": "klaviyo.com",
      "ok": true,
      "finalUrl": "https://www.klaviyo.com/",
      "offDomain": "klaviyo.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 84,
        "execution": 83,
        "representation": 53,
        "composite": 73
      },
      "detail": {
        "retrieval": {
          "score": 84,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 72,
              "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": "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": "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": 71,
              "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": "pass",
                  "weight": 1.5,
                  "detail": "Rich types present: Itemlist, Faqpage.",
                  "rec": null
                },
                {
                  "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": "25 of 89 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "14 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 6 H2, 33 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 47 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 201 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 193 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 (20,228 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 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": "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, ChatGPT-User 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": "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 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": "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": 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": 53,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Klaviyo, Inc.), 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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 declared authoritative home(s) counted: linkedin.com, twitter.com, facebook.com, instagram.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "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": 5,
              "reachable": 3,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 429,
                  "state": "unverified"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "twitter.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "linkedin.com",
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Braze",
      "domain": "braze.com",
      "ok": true,
      "finalUrl": "https://www.braze.com/",
      "offDomain": "braze.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 50,
        "execution": 65,
        "representation": 13,
        "composite": 43
      },
      "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": 50,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "15 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": "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 1100 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 78 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 65 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 (97,329 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)"
            }
          ],
          "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, ChatGPT-User 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": 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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 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": "Procore Technologies",
      "domain": "procore.com",
      "ok": true,
      "finalUrl": "https://www.procore.com/",
      "offDomain": "procore.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 79,
        "execution": 63,
        "representation": 58,
        "composite": 67
      },
      "detail": {
        "retrieval": {
          "score": 79,
          "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": 54,
              "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: 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": 100,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "74 of 140 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "10 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 28 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 2600 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 175 characters.",
                  "rec": null
                },
                {
                  "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": 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": 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, ChatGPT-User 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 2600 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": 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 (Procore), 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 declared authoritative home(s) counted: linkedin.com, twitter.com, en.wikipedia.org.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared 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": "35 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": 1,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 429,
                  "state": "unverified"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org",
                "linkedin.com",
                "twitter.com"
              ],
              "confirmedHosts": [
                "en.wikipedia.org"
              ],
              "unverifiedHosts": [
                "linkedin.com",
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Wix",
      "domain": "wix.com",
      "ok": true,
      "finalUrl": "https://www.wix.com/",
      "offDomain": "wix.com",
      "truncated": true,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 76,
        "execution": 66,
        "representation": 41,
        "composite": 61
      },
      "detail": {
        "retrieval": {
          "score": 76,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 67,
              "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": "9 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": "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": "pass",
                  "weight": 1.5,
                  "detail": "5 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: Howto, Videoobject, Faqpage.",
                  "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": "9 of 38 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, 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 418 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 144 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 13 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 (37,904 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, ChatGPT-User 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 418 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": 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 (Wix.com), 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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 declared authoritative home(s) counted (of 8 declared): facebook.com, twitter.com, instagram.com, youtube.com, linkedin.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": 3,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 429,
                  "state": "unverified"
                }
              ],
              "scoringHosts": [
                "twitter.com",
                "linkedin.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "twitter.com",
                "linkedin.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Squarespace",
      "domain": "squarespace.com",
      "ok": true,
      "finalUrl": "https://www.squarespace.com/",
      "offDomain": "squarespace.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 79,
        "execution": 71,
        "representation": 37,
        "composite": 62
      },
      "detail": {
        "retrieval": {
          "score": 79,
          "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, Localbusiness.",
                  "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": "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": 54,
              "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": "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: Howto, 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": 100,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "114 of 230 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, 11 H2, 48 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 100,
              "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 68 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": "99% of 77 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,408 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": "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": "1 image missing alt text"
            },
            {
              "sev": "warning",
              "label": "Title likely truncated in results (over 65 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, ChatGPT-User 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 3900 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": 37,
          "band": "Ambiguous identity",
          "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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 declared authoritative home(s) counted: facebook.com, instagram.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 2,
              "reachable": 2,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.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": "GoDaddy",
      "domain": "godaddy.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Akamai"
    },
    {
      "name": "ZoomInfo",
      "domain": "zoominfo.com",
      "ok": true,
      "finalUrl": "https://www.zoominfo.com/",
      "offDomain": "zoominfo.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 81,
        "execution": 84,
        "representation": 46,
        "composite": 70
      },
      "detail": {
        "retrieval": {
          "score": 81,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 67,
              "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": "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": 86,
              "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": "pass",
                  "weight": 1.5,
                  "detail": "Rich types present: Softwareapplication.",
                  "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": "25 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": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 10 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 1700 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": "pass",
                  "weight": 1,
                  "detail": "Meta description is 160 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 94 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,440 characters); read today by coding and agent tools.",
                  "rec": null
                },
                {
                  "label": "AI crawler access",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "AI answer crawlers allowed; training or user-initiated crawlers blocked (meta-externalagent, ccbot, bytespider, diffbot, omgili), a legitimate choice.",
                  "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": 84,
          "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, ChatGPT-User 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": "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 1700 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": "Offerings described but not actionable (no price or Action)"
            }
          ],
          "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 (ZoomInfo Inc), 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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "4 declared authoritative home(s) counted: linkedin.com, instagram.com, facebook.com, youtube.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "52 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. (training/other crawlers blocked (meta-externalagent, ccbot, bytespider, diffbot).)",
                  "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": 3,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 429,
                  "state": "unverified"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "linkedin.com"
              ]
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "sameas-unverified",
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "BILL (Bill.com)",
      "domain": "bill.com",
      "ok": true,
      "finalUrl": "https://www.bill.com/",
      "offDomain": "bill.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 50,
        "execution": 65,
        "representation": 13,
        "composite": 43
      },
      "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": "22 of 38 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, 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 1900 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 167 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 58 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 (10,918 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": 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, ChatGPT-User 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 1900 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "16 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": "Paycom",
      "domain": "paycom.com",
      "ok": true,
      "finalUrl": "https://www.paycom.com/",
      "offDomain": "paycom.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 81,
        "execution": 86,
        "representation": 74,
        "composite": 80
      },
      "detail": {
        "retrieval": {
          "score": 81,
          "band": "Well positioned",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 94,
              "checks": [
                {
                  "label": "Organisation / entity schema",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity type declared: Organization, Corporation, Person.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "22 distinct external profiles linked via sameAs (27 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": "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": "pass",
                  "weight": 1.5,
                  "detail": "Your entity carries some descriptive depth.",
                  "rec": null
                },
                {
                  "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": "2 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: Softwareapplication, 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": "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 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": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 13 H2, 9 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 39 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 211 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": "96% of 23 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 (20,102 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": "1 image missing alt text"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 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, ChatGPT-User 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": "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 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": 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": 74,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (Paycom) 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": "5 declared authoritative home(s) counted (of 9 declared): en.wikipedia.org, wikidata.org, facebook.com, crunchbase.com, x.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org, wikidata.org) and a declared profile source.",
                  "rec": null
                }
              ]
            },
            {
              "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": "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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 3,
              "confirmed": 2,
              "dead": 0,
              "links": [
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "wikidata.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "crunchbase.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org",
                "wikidata.org",
                "crunchbase.com",
                "x.com"
              ],
              "confirmedHosts": [
                "en.wikipedia.org",
                "wikidata.org"
              ],
              "unverifiedHosts": [
                "crunchbase.com",
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Paychex",
      "domain": "paychex.com",
      "ok": true,
      "finalUrl": "https://www.paychex.com/",
      "offDomain": "paychex.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 82,
        "execution": 72,
        "representation": 58,
        "composite": 71
      },
      "detail": {
        "retrieval": {
          "score": 82,
          "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: Corporation.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "6 distinct external profiles linked via sameAs (12 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": "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": 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: Softwareapplication, 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": "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": "56 of 252 paragraphs are concise, substantive answers a model can lift directly.",
                  "rec": null
                },
                {
                  "label": "Question-led content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "14 question-led heading(s) or Q&A found.",
                  "rec": null
                },
                {
                  "label": "Heading structure",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 13 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 3400 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 137 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 63 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 (8,357 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": "2 insecure HTTP resources on a secure page"
            }
          ],
          "renderDependent": false,
          "robotsUnmeasured": false
        },
        "execution": {
          "score": 72,
          "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, ChatGPT-User 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 3400 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 (Paychex, Inc.), 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": "5 declared authoritative home(s) counted (of 6 declared): facebook.com, twitter.com, youtube.com, linkedin.com, en.wikipedia.org.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared 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": "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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 3,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 429,
                  "state": "unverified"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org",
                "twitter.com",
                "linkedin.com"
              ],
              "confirmedHosts": [
                "en.wikipedia.org"
              ],
              "unverifiedHosts": [
                "twitter.com",
                "linkedin.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Bentley Systems",
      "domain": "bentley.com",
      "ok": true,
      "finalUrl": "https://www.bentley.com/",
      "offDomain": "bentley.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 63,
        "execution": 68,
        "representation": 28,
        "composite": 53
      },
      "detail": {
        "retrieval": {
          "score": 63,
          "band": "Partly legible",
          "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": 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": "24 of 62 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, 8 H2, 27 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 53 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 154 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "82% of 57 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, 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": "10 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, ChatGPT-User 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 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": 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 (Bentley Systems), 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": 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": "AppLovin",
      "domain": "applovin.com",
      "ok": true,
      "finalUrl": "https://applovin.com/en",
      "offDomain": "applovin.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 70,
        "execution": 85,
        "representation": 48,
        "composite": 68
      },
      "detail": {
        "retrieval": {
          "score": 70,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 72,
              "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 (6 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": "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": 79,
              "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": "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: Softwareapplication.",
                  "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": 33,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "10 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, 10 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": 85,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 481 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 49 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 102 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": [
            {
              "sev": "error",
              "label": "No H1 heading on the 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, ChatGPT-User 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 481 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": 48,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Applovin), 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": 60,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "2 declared authoritative home(s) counted (of 3 declared): x.com, linkedin.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 3,
              "reachable": 0,
              "confirmed": 0,
              "dead": 1,
              "links": [
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "linkedin.com",
                  "status": 429,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 404,
                  "state": "dead"
                }
              ],
              "scoringHosts": [
                "x.com",
                "linkedin.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "x.com",
                "linkedin.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Gen Digital",
      "domain": "gendigital.com",
      "ok": true,
      "finalUrl": "https://www.gendigital.com/us/en/",
      "offDomain": "gendigital.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 70,
        "execution": 69,
        "representation": 59,
        "composite": 66
      },
      "detail": {
        "retrieval": {
          "score": 70,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 81,
              "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": "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": "49 of 71 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, 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 1400 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": "pass",
                  "weight": 1,
                  "detail": "Meta description is 168 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "96% 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": 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": "3 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, ChatGPT-User 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 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": 59,
          "band": "Partly resolved",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (Gen) 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": "4 declared authoritative home(s) counted: linkedin.com, x.com, twitter.com, facebook.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 4,
              "reachable": 1,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 429,
                  "state": "unverified"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "x.com",
                "twitter.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "linkedin.com",
                "x.com",
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Check Point Software Technologies",
      "domain": "checkpoint.com",
      "ok": true,
      "finalUrl": "https://www.checkpoint.com/",
      "offDomain": "checkpoint.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 74,
        "execution": 66,
        "representation": 81,
        "composite": 74
      },
      "detail": {
        "retrieval": {
          "score": 74,
          "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": "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": "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": "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": "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": "17 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, 6 H2, 19 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 56 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 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": 87,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (12,477 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 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": 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 202; OAI-SearchBot 202, ChatGPT-User 202, PerplexityBot 202, ClaudeBot 202, GPTBot 202).",
                  "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": "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 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": 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": 81,
          "band": "Well defined",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 79,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "pass",
                  "weight": 2,
                  "detail": "Entity declared (Check Point Software Technologies Ltd.) 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": "5 declared authoritative home(s) counted (of 6 declared): facebook.com, x.com, linkedin.com, youtube.com, en.wikipedia.org.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared profile source.",
                  "rec": null
                }
              ]
            },
            {
              "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": "17 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": 3,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "linkedin.com",
                  "status": 429,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "x.com",
                "linkedin.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "x.com",
                "linkedin.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": false,
        "note": "inconsistent-serving"
      },
      "flags": []
    },
    {
      "name": "SolarWinds",
      "domain": "solarwinds.com",
      "ok": true,
      "finalUrl": "https://www.solarwinds.com/",
      "offDomain": "solarwinds.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 68,
        "execution": 71,
        "representation": 58,
        "composite": 66
      },
      "detail": {
        "retrieval": {
          "score": 68,
          "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: Organization.",
                  "rec": null
                },
                {
                  "label": "Entity disambiguation (sameAs)",
                  "status": "pass",
                  "weight": 2,
                  "detail": "6 distinct external profiles linked via sameAs (12 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": 64,
              "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": "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: Softwareapplication.",
                  "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": "pass",
                  "weight": 1.5,
                  "detail": "45 of 137 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, 20 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 2400 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 142 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 141 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": "Multiple H1 headings (2)"
            }
          ],
          "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": "Some AI agents are refused at the edge while a browser gets 200 (OAI-SearchBot 200, ChatGPT-User 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, ChatGPT-User, 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": "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 2400 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": 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 (SolarWinds), 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": 100,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "5 declared authoritative home(s) counted (of 6 declared): en.wikipedia.org, linkedin.com, youtube.com, x.com, facebook.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared 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": "28 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": 3,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "linkedin.com",
                  "status": 429,
                  "state": "unverified"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org",
                "linkedin.com",
                "x.com"
              ],
              "confirmedHosts": [
                "en.wikipedia.org"
              ],
              "unverifiedHosts": [
                "linkedin.com",
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Uber Technologies",
      "domain": "uber.com",
      "ok": true,
      "finalUrl": "https://www.uber.com/",
      "offDomain": "uber.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 49,
        "execution": 50,
        "representation": 10,
        "composite": 36
      },
      "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": "18 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": "partial",
                  "weight": 1.5,
                  "detail": "3 H1, 32 H2, 19 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 911 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 129 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": 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": 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": "Could not establish a browser baseline (control returned 406); agent results inconclusive. Probed: OAI-SearchBot 200, ChatGPT-User 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, ChatGPT-User, 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 911 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "DoorDash",
      "domain": "doordash.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Pinterest",
      "domain": "pinterest.com",
      "ok": true,
      "finalUrl": "https://www.pinterest.com/",
      "offDomain": "pinterest.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 30,
        "execution": 61,
        "representation": 15,
        "composite": 35
      },
      "detail": {
        "retrieval": {
          "score": 30,
          "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": 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": 17,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "0 of 1 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": "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": 75,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 269 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": "pass",
                  "weight": 1,
                  "detail": "Meta description is 71 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": 70,
              "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": "fail",
                  "weight": 1.5,
                  "detail": "robots.txt blocks AI answer crawlers: oai-searchbot, perplexitybot, claude-searchbot.",
                  "rec": "Allow the crawlers that surface you in AI answers (OAI-SearchBot for ChatGPT search, ChatGPT-User for pages a ChatGPT user opens, PerplexityBot, Claude-SearchBot), or you are opting out of much AI visibility. Blocking training crawlers (GPTBot, ClaudeBot, Google-Extended) is a separate, legitimate choice that does not affect being cited in AI answers."
                },
                {
                  "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": 61,
          "band": "Partly operable",
          "categories": [
            {
              "key": "access",
              "label": "Agent Access",
              "weight": 0.32,
              "score": 38,
              "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 403, ChatGPT-User 403, PerplexityBot 403, 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, ChatGPT-User, 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": "fail",
                  "weight": 1,
                  "detail": "robots.txt disallows retrieval agents: oai-searchbot, perplexitybot, claude-searchbot.",
                  "rec": "Allow the retrieval crawlers that feed AI answers (OAI-SearchBot, ChatGPT-User, PerplexityBot, Claude-SearchBot) in robots.txt. Blocking training crawlers is a separate, legitimate choice."
                }
              ]
            },
            {
              "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": "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": "partial",
                  "weight": 1.5,
                  "detail": "Only about 269 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": "Some AI agents refused at the edge (OAI-SearchBot, ChatGPT-User, PerplexityBot, GPTBot)"
            },
            {
              "sev": "warning",
              "label": "robots.txt disallows retrieval agents"
            }
          ],
          "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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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. (training/other crawlers blocked (gptbot, claudebot, google-extended, meta-externalagent).)",
                  "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": "Snap",
      "domain": "snap.com",
      "ok": true,
      "finalUrl": "https://www.snap.com/",
      "offDomain": "snap.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 31,
        "execution": 34,
        "representation": 8,
        "composite": 24
      },
      "detail": {
        "retrieval": {
          "score": 31,
          "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": "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": 70,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "fail",
                  "weight": 1.5,
                  "detail": "About 80 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 16 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 103 characters.",
                  "rec": null
                },
                {
                  "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": 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": "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, ChatGPT-User 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 (~80 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Match Group",
      "domain": "mtch.com",
      "ok": true,
      "finalUrl": "https://mtch.com/",
      "offDomain": "mtch.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 76,
        "execution": 87,
        "representation": 47,
        "composite": 70
      },
      "detail": {
        "retrieval": {
          "score": 76,
          "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, Person.",
                  "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": "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": 79,
              "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": "pass",
                  "weight": 1.5,
                  "detail": "Rich types present: Article.",
                  "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": "9 of 10 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, 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 606 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 144 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 246 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"
            }
          ],
          "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, ChatGPT-User 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 606 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": 47,
          "band": "Ambiguous identity",
          "categories": [
            {
              "key": "identity",
              "label": "Identity",
              "weight": 0.3,
              "score": 50,
              "checks": [
                {
                  "label": "Entity definition",
                  "status": "partial",
                  "weight": 2,
                  "detail": "Entity declared (Match 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": 30,
              "checks": [
                {
                  "label": "Authoritative profiles linked",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "1 declared authoritative home(s) counted: linkedin.com.",
                  "rec": "Declare at least two authoritative homes in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 1,
              "reachable": 0,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "linkedin.com",
                  "status": 429,
                  "state": "unverified"
                }
              ],
              "scoringHosts": [
                "linkedin.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "linkedin.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Roku",
      "domain": "roku.com",
      "ok": true,
      "finalUrl": "https://www.roku.com/",
      "offDomain": "roku.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 56,
        "execution": 59,
        "representation": 41,
        "composite": 52
      },
      "detail": {
        "retrieval": {
          "score": 56,
          "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": "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": 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": 33,
              "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": "fail",
                  "weight": 1.5,
                  "detail": "0 H1, 0 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": 75,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 288 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 134 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": 96,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (15,673 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": "error",
              "label": "No H1 heading on the page"
            },
            {
              "sev": "warning",
              "label": "Heading levels skip from H1 to H3"
            }
          ],
          "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, ChatGPT-User 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 288 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": "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": 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 (Roku), 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": "5 declared authoritative home(s) counted (of 6 declared): youtube.com, linkedin.com, facebook.com, twitter.com, instagram.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "fail",
                  "weight": 1,
                  "detail": "Profile links are declared, but no authoritative registry (Wikidata, Companies House, OpenCorporates) anchors them.",
                  "rec": "Link both a registry (Wikidata, Companies House, OpenCorporates, SEC, ORCID) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 3,
              "confirmed": 0,
              "dead": 0,
              "links": [
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "linkedin.com",
                  "status": 429,
                  "state": "unverified"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "twitter.com",
                  "status": 403,
                  "state": "unverified"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                }
              ],
              "scoringHosts": [
                "linkedin.com",
                "twitter.com"
              ],
              "confirmedHosts": [],
              "unverifiedHosts": [
                "linkedin.com",
                "twitter.com"
              ]
            }
          },
          "tdmUnmeasured": true
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": [
        "tdmrep-unmeasured"
      ]
    },
    {
      "name": "Take-Two Interactive",
      "domain": "take2games.com",
      "ok": true,
      "finalUrl": "https://www.take2games.com/",
      "offDomain": "take2games.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 64,
        "execution": 62,
        "representation": 28,
        "composite": 51
      },
      "detail": {
        "retrieval": {
          "score": 64,
          "band": "Partly legible",
          "categories": [
            {
              "key": "entity",
              "label": "Entity & Trust",
              "weight": 0.22,
              "score": 39,
              "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": "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": "7 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": "pass",
                  "weight": 1.5,
                  "detail": "1 H1, 5 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 60 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 63 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"
            }
          ],
          "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, ChatGPT-User 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": 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 (Take-Two Interactive Software), 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": "No sameAs links to anchor your identity.",
                  "rec": "Declare at least two authoritative homes in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "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": "Ubisoft",
      "domain": "ubisoft.com",
      "ok": true,
      "finalUrl": "https://www.ubisoft.com/en-us",
      "offDomain": "ubisoft.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 48,
        "execution": 65,
        "representation": 13,
        "composite": 42
      },
      "detail": {
        "retrieval": {
          "score": 48,
          "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 24 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, 13 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "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 49 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 218 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 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": "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": "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": 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, ChatGPT-User 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 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": 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Nintendo",
      "domain": "nintendo.com",
      "ok": true,
      "finalUrl": "https://www.nintendo.com/us/",
      "offDomain": "nintendo.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 73,
        "execution": 89,
        "representation": 66,
        "composite": 76
      },
      "detail": {
        "retrieval": {
          "score": 73,
          "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": "pass",
                  "weight": 2,
                  "detail": "6 distinct external profiles linked via sameAs (7 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": 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": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "7 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, 17 H2, 96 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 57 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 170 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "94% of 143 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": "AI answer crawlers allowed; training or user-initiated crawlers blocked (gptbot, claudebot, google-extended, applebot-extended, meta-externalagent, ccbot, cohere-ai, bytespider, diffbot, omgili), a legitimate choice.",
                  "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": "9 images missing alt text"
            }
          ],
          "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, ChatGPT-User 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 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": [],
          "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 (Nintendo) 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": "5 declared authoritative home(s) counted: en.wikipedia.org, youtube.com, instagram.com, facebook.com, x.com.",
                  "rec": null
                },
                {
                  "label": "Spans registry and profile",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Identity spans a declared registry (en.wikipedia.org) and a declared 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": "85 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": [],
          "enrichment": {
            "sameAs": {
              "ran": true,
              "declared": 5,
              "reachable": 4,
              "confirmed": 1,
              "dead": 0,
              "links": [
                {
                  "host": "en.wikipedia.org",
                  "status": 200,
                  "state": "confirmed"
                },
                {
                  "host": "youtube.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "instagram.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "facebook.com",
                  "status": 200,
                  "state": "reachable"
                },
                {
                  "host": "x.com",
                  "status": 403,
                  "state": "unverified"
                }
              ],
              "scoringHosts": [
                "en.wikipedia.org",
                "x.com"
              ],
              "confirmedHosts": [
                "en.wikipedia.org"
              ],
              "unverifiedHosts": [
                "x.com"
              ]
            }
          },
          "tdmUnmeasured": false
        }
      },
      "serving": {
        "checked": true,
        "consistent": true,
        "note": "consistent"
      },
      "flags": []
    },
    {
      "name": "Bytes Technology Group",
      "domain": "bytes.co.uk",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Trustpilot",
      "domain": "trustpilot.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "AWS CloudFront or AWS WAF"
    },
    {
      "name": "Ocado Group",
      "domain": "ocadogroup.com",
      "ok": true,
      "finalUrl": "https://www.ocadogroup.com/",
      "offDomain": "ocadogroup.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 65,
        "execution": 68,
        "representation": 25,
        "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": 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": "35 of 135 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, 3 H2, 5 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": "pass",
                  "weight": 1,
                  "detail": "Title is 70 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "partial",
                  "weight": 1,
                  "detail": "Meta description is 324 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": "97% of 60 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": "2 images missing alt text"
            },
            {
              "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, ChatGPT-User 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 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 (Ocado 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": 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "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": "Playtech",
      "domain": "playtech.com",
      "ok": true,
      "finalUrl": "https://www.playtech.com/",
      "offDomain": "playtech.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 68,
        "execution": 82,
        "representation": 25,
        "composite": 58
      },
      "detail": {
        "retrieval": {
          "score": 68,
          "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": 67,
              "checks": [
                {
                  "label": "Concise, extractable answers",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "23 of 30 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, 8 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 806 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 133 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "83% of 52 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": "9 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, ChatGPT-User 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": "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 806 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": 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 (Playtech), 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "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": "Tencent",
      "domain": "tencent.com",
      "ok": false,
      "reason": "UNREACHABLE (no response)",
      "wafVendor": ""
    },
    {
      "name": "Alibaba Group",
      "domain": "alibabagroup.com",
      "ok": true,
      "finalUrl": "https://www.alibabagroup.com/en-US/",
      "offDomain": "alibabagroup.com",
      "truncated": true,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 33,
        "execution": 65,
        "representation": 20,
        "composite": 39
      },
      "detail": {
        "retrieval": {
          "score": 33,
          "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": "pass",
                  "weight": 1.5,
                  "detail": "1702 of 2079 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, 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": 90,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "pass",
                  "weight": 1.5,
                  "detail": "About 73800 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 408 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 74 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": 67,
              "checks": [
                {
                  "label": "llms.txt (forward-looking)",
                  "status": "pass",
                  "weight": 0.5,
                  "detail": "llms.txt present (58,276 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": "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": "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": "Heading levels skip from H1 to H3"
            },
            {
              "sev": "warning",
              "label": "Meta description over 180 characters"
            },
            {
              "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, ChatGPT-User 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 73800 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "4825 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": "ByteDance",
      "domain": "bytedance.com",
      "ok": true,
      "finalUrl": "https://www.bytedance.com/",
      "offDomain": "bytedance.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 32,
        "execution": 58,
        "representation": 8,
        "composite": 33
      },
      "detail": {
        "retrieval": {
          "score": 32,
          "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 1 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, 12 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 230 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 43 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 112 characters.",
                  "rec": null
                },
                {
                  "label": "Image alt coverage",
                  "status": "pass",
                  "weight": 1,
                  "detail": "100% of 3 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": 72,
              "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": "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": "No canonical URL declared"
            },
            {
              "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, ChatGPT-User 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 230 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "Alphabet",
      "domain": "abc.xyz",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "OpenAI",
      "domain": "openai.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    },
    {
      "name": "Anthropic",
      "domain": "anthropic.com",
      "ok": true,
      "finalUrl": "https://www.anthropic.com/",
      "offDomain": "anthropic.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 47,
        "execution": 62,
        "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": "5 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, 2 H2, 18 H3.",
                  "rec": null
                }
              ]
            },
            {
              "key": "read",
              "label": "Machine Readability",
              "weight": 0.12,
              "score": 85,
              "checks": [
                {
                  "label": "Substantive content",
                  "status": "partial",
                  "weight": 1.5,
                  "detail": "About 336 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 16 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 126 characters.",
                  "rec": null
                },
                {
                  "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": 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, ChatGPT-User 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 336 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "15 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": "Lyft",
      "domain": "lyft.com",
      "ok": true,
      "finalUrl": "https://www.lyft.com/",
      "offDomain": "lyft.com",
      "truncated": false,
      "pagesScanned": 1,
      "scores": {
        "retrieval": 59,
        "execution": 50,
        "representation": 28,
        "composite": 46
      },
      "detail": {
        "retrieval": {
          "score": 59,
          "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": 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": "15 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, 16 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 690 words of readable text.",
                  "rec": null
                },
                {
                  "label": "Title quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Title is 23 characters.",
                  "rec": null
                },
                {
                  "label": "Meta description quality",
                  "status": "pass",
                  "weight": 1,
                  "detail": "Meta description is 103 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": 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": 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": "AI agent reachability was inconclusive on this scan (no agent completed and no definite refusal; the probes returned: OAI-SearchBot 429, ChatGPT-User 429, PerplexityBot 429, ClaudeBot 429, GPTBot 429); not scored as a block. A refusal that persists across scans would be flagged.",
                  "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, ChatGPT-User, 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 690 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 (Lyft), 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 in your structured data, such as a LinkedIn page and a Wikidata or Companies House entry, and keep each link live: a link whose page answers not found is not counted."
                },
                {
                  "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) and a profile (LinkedIn, Crunchbase, a verified social) in your structured data, and keep each link live. 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": "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": "Turo",
      "domain": "turo.com",
      "ok": false,
      "reason": "BLOCKED (HTTP 403)",
      "wafVendor": "Cloudflare"
    }
  ]
}