{
  "id": "2026-09-28-pilot",
  "date": "2026-09-28",
  "scoringModelVersion": "1.2.1",
  "collectorVersion": "1.2.0",
  "reviewer": "Codex, internal review using separately collected Chromium observations. Not an independent company or second human reviewer.",
  "referenceFreeze": {
    "frozenAt": "2026-09-28T01:32:21.271Z",
    "hashes": {
      "scripts/benchmark/2026-09-28/protocol.json": "c575b0817ae03ca0674cfea59fd40bde19a16f18fb3ab441106c34b2efae6319",
      "scripts/benchmark/2026-09-28/reference-labels.json": "278288189a6ff8933cf8cc0f707b99278755ee8af0af5eef44fddfa59de631fe",
      "output/benchmark-2026-09-28/reference/observations.json": "3ae4560aa6525fbc5fe957cbb2ae456d4ea9a7dea584271eae45d25b939e4db2",
      "output/benchmark-2026-09-28/reference/followup.json": "c83c0becc50da768d8c11588c9c95e76340710925aa9981b2f50fc6041c973c6"
    }
  },
  "sourceComparison": "Production checkout 53500bf scanner and scoring directories byte-compared with benchmark source; no differences. Rules not tuned during this run.",
  "protocol": {
    "id": "2026-09-28-pilot",
    "design": "Internal, separately collected browser-reference pilot; not external certification. Reference labels are frozen before scanner predictions are generated.",
    "sample": "Eight convenience-sampled non-customer websites, one per industry. No replacements for blocked sites. No population or industry accuracy claim.",
    "reference": "Chromium rendered homepage plus up to three homepage-linked contact/privacy/terms pages. No scanner imports. Manual adjudication of saved observations. Presence claims require direct evidence; missing sitewide features are inconclusive unless bounded reference pages support the rubric. No forms submitted.",
    "rubric": {
      "ai_readiness.title_tag": "Homepage title: 15–70 characters, not just domain. This is Aureviq's editorial convention, not a Google requirement.",
      "ai_readiness.meta_description": "Homepage description: 50–160 characters, distinct from title. Editorial convention, not a ranking requirement.",
      "ai_readiness.single_h1": "Exactly one homepage H1 in rendered DOM. Editorial convention, not a ranking requirement.",
      "ai_readiness.mobile_viewport": "Homepage has viewport meta element. Does not prove mobile usability.",
      "ai_readiness.schema_present": "At least one parseable JSON-LD object/array in a reviewed page. Does not prove schema validity or business truth.",
      "digital_trust.privacy_policy": "A linked, accessible page actually explains privacy/data handling.",
      "digital_trust.terms_conditions": "A linked, accessible page actually states service/purchase/use terms.",
      "digital_trust.contact_page": "Accessible contact page or clear contact section with a usable contact route.",
      "digital_trust.phone_number": "Business phone or WhatsApp contact is visible or linked on a reviewed page. No call is made.",
      "digital_trust.email_found": "Business contact email is visible or linked on a reviewed page. No email is sent."
    },
    "prediction": "Unmodified production collector/check modules, eight pages, depth two, 40-second crawl budget; local execution, not hosted job/queue validation. All signals saved but only predeclared checks evaluated.",
    "metrics": "Positive=issue. failed/partial=issue; passed=clear. not_checked/error/not_applicable or inconclusive reference excluded and counted. TP=issue correctly flagged; FP=false alarm; FN=missed issue; TN=correct clear. Precision=TP/(TP+FP); recall=TP/(TP+FN); false-alarm rate=FP/(FP+TN); miss rate=FN/(TP+FN). Zero denominators are null, never 100%.",
    "sites": [
      {
        "id": "cakebar",
        "url": "https://cakebar.com.sg/",
        "industry": "Bakery and food"
      },
      {
        "id": "noble-whiskers",
        "url": "https://www.noble-whiskers.com/",
        "industry": "Pet services"
      },
      {
        "id": "learning-lab",
        "url": "https://www.thelearninglab.com.sg/",
        "industry": "Education"
      },
      {
        "id": "raffles",
        "url": "https://www.rafflesmedicalgroup.com/",
        "industry": "Healthcare"
      },
      {
        "id": "osome",
        "url": "https://osome.com/sg/",
        "industry": "Professional services"
      },
      {
        "id": "livspace",
        "url": "https://www.livspace.com/sg",
        "industry": "Interiors"
      },
      {
        "id": "love-bonito",
        "url": "https://www.lovebonito.com/sg",
        "industry": "Retail"
      },
      {
        "id": "gym-pod",
        "url": "https://www.thegympod.com/",
        "industry": "Fitness"
      }
    ]
  },
  "metrics": {
    "total": 80,
    "evaluated": 76,
    "excluded": 4,
    "referenceUnknown": 4,
    "predictionUnknown": 0,
    "tp": 8,
    "fp": 9,
    "fn": 0,
    "tn": 59,
    "precision": 0.47058823529411764,
    "recall": 1,
    "falseAlarmRate": 0.1323529411764706,
    "missRate": 0,
    "coverage": 0.95
  },
  "byRule": [
    {
      "ruleId": "ai_readiness.title_tag",
      "total": 8,
      "evaluated": 8,
      "excluded": 0,
      "referenceUnknown": 0,
      "predictionUnknown": 0,
      "tp": 2,
      "fp": 0,
      "fn": 0,
      "tn": 6,
      "precision": 1,
      "recall": 1,
      "falseAlarmRate": 0,
      "missRate": 0,
      "coverage": 1
    },
    {
      "ruleId": "ai_readiness.meta_description",
      "total": 8,
      "evaluated": 8,
      "excluded": 0,
      "referenceUnknown": 0,
      "predictionUnknown": 0,
      "tp": 3,
      "fp": 0,
      "fn": 0,
      "tn": 5,
      "precision": 1,
      "recall": 1,
      "falseAlarmRate": 0,
      "missRate": 0,
      "coverage": 1
    },
    {
      "ruleId": "ai_readiness.single_h1",
      "total": 8,
      "evaluated": 8,
      "excluded": 0,
      "referenceUnknown": 0,
      "predictionUnknown": 0,
      "tp": 3,
      "fp": 0,
      "fn": 0,
      "tn": 5,
      "precision": 1,
      "recall": 1,
      "falseAlarmRate": 0,
      "missRate": 0,
      "coverage": 1
    },
    {
      "ruleId": "ai_readiness.mobile_viewport",
      "total": 8,
      "evaluated": 8,
      "excluded": 0,
      "referenceUnknown": 0,
      "predictionUnknown": 0,
      "tp": 0,
      "fp": 0,
      "fn": 0,
      "tn": 8,
      "precision": null,
      "recall": null,
      "falseAlarmRate": 0,
      "missRate": null,
      "coverage": 1
    },
    {
      "ruleId": "ai_readiness.schema_present",
      "total": 8,
      "evaluated": 8,
      "excluded": 0,
      "referenceUnknown": 0,
      "predictionUnknown": 0,
      "tp": 0,
      "fp": 0,
      "fn": 0,
      "tn": 8,
      "precision": null,
      "recall": null,
      "falseAlarmRate": 0,
      "missRate": null,
      "coverage": 1
    },
    {
      "ruleId": "digital_trust.privacy_policy",
      "total": 8,
      "evaluated": 7,
      "excluded": 1,
      "referenceUnknown": 1,
      "predictionUnknown": 0,
      "tp": 0,
      "fp": 2,
      "fn": 0,
      "tn": 5,
      "precision": 0,
      "recall": null,
      "falseAlarmRate": 0.2857142857142857,
      "missRate": null,
      "coverage": 0.875
    },
    {
      "ruleId": "digital_trust.terms_conditions",
      "total": 8,
      "evaluated": 7,
      "excluded": 1,
      "referenceUnknown": 1,
      "predictionUnknown": 0,
      "tp": 0,
      "fp": 4,
      "fn": 0,
      "tn": 3,
      "precision": 0,
      "recall": null,
      "falseAlarmRate": 0.5714285714285714,
      "missRate": null,
      "coverage": 0.875
    },
    {
      "ruleId": "digital_trust.contact_page",
      "total": 8,
      "evaluated": 8,
      "excluded": 0,
      "referenceUnknown": 0,
      "predictionUnknown": 0,
      "tp": 0,
      "fp": 2,
      "fn": 0,
      "tn": 6,
      "precision": 0,
      "recall": null,
      "falseAlarmRate": 0.25,
      "missRate": null,
      "coverage": 1
    },
    {
      "ruleId": "digital_trust.phone_number",
      "total": 8,
      "evaluated": 6,
      "excluded": 2,
      "referenceUnknown": 2,
      "predictionUnknown": 0,
      "tp": 0,
      "fp": 0,
      "fn": 0,
      "tn": 6,
      "precision": null,
      "recall": null,
      "falseAlarmRate": 0,
      "missRate": null,
      "coverage": 0.75
    },
    {
      "ruleId": "digital_trust.email_found",
      "total": 8,
      "evaluated": 8,
      "excluded": 0,
      "referenceUnknown": 0,
      "predictionUnknown": 0,
      "tp": 0,
      "fp": 1,
      "fn": 0,
      "tn": 7,
      "precision": 0,
      "recall": null,
      "falseAlarmRate": 0.125,
      "missRate": null,
      "coverage": 1
    }
  ],
  "sites": [
    {
      "id": "cakebar",
      "url": "https://cakebar.com.sg/",
      "industry": "Bakery and food",
      "observedUrl": "https://cakebar.com.sg/",
      "startedAt": "2026-09-28T01:32:22.613Z",
      "finishedAt": "2026-09-28T01:32:25.220Z",
      "scannerPages": 7,
      "scannerStatus": "partial",
      "stoppedReason": "page_budget",
      "referencePages": 4,
      "predictionSha256": "e6a83bd5f8fa3a6b9542e8c67a2d94bf90e23f0d259bdd51c5d5968092091d05",
      "metrics": {
        "total": 10,
        "evaluated": 10,
        "excluded": 0,
        "referenceUnknown": 0,
        "predictionUnknown": 0,
        "tp": 2,
        "fp": 1,
        "fn": 0,
        "tn": 7,
        "precision": 0.6666666666666666,
        "recall": 1,
        "falseAlarmRate": 0.125,
        "missRate": 0,
        "coverage": 1
      },
      "rows": [
        {
          "ruleId": "ai_readiness.title_tag",
          "reference": "issue",
          "prediction": "partial",
          "referenceNote": "Homepage title has 72 characters.",
          "referenceUrl": "https://cakebar.com.sg/",
          "scannerNote": "Title tag is present but 73 characters falls outside the recommended 15–70 range."
        },
        {
          "ruleId": "ai_readiness.meta_description",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Homepage description has 145 characters and differs from title.",
          "referenceUrl": "https://cakebar.com.sg/",
          "scannerNote": "Meta description is present and well-formed (145 characters)."
        },
        {
          "ruleId": "ai_readiness.single_h1",
          "reference": "issue",
          "prediction": "partial",
          "referenceNote": "Two H1 elements; one has empty text.",
          "referenceUrl": "https://cakebar.com.sg/",
          "scannerNote": "2 H1 headings found; a page should have exactly one."
        },
        {
          "ruleId": "ai_readiness.mobile_viewport",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Viewport meta present.",
          "referenceUrl": "https://cakebar.com.sg/",
          "scannerNote": "A mobile viewport meta tag is present."
        },
        {
          "ruleId": "ai_readiness.schema_present",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Five parseable JSON-LD blocks.",
          "referenceUrl": "https://cakebar.com.sg/",
          "scannerNote": "Schema.org JSON-LD found on 7 page(s)."
        },
        {
          "ruleId": "digital_trust.privacy_policy",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Privacy page describes personal-information collection.",
          "referenceUrl": "https://cakebar.com.sg/pages/privacy-policy",
          "scannerNote": "A Privacy Policy page was found."
        },
        {
          "ruleId": "digital_trust.terms_conditions",
          "reference": "clear",
          "prediction": "failed",
          "referenceNote": "Terms page describes orders, cancellation and collection.",
          "referenceUrl": "https://cakebar.com.sg/pages/terms-and-condition",
          "scannerNote": "No Terms & Conditions page was found."
        },
        {
          "ruleId": "digital_trust.contact_page",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Store/contact page and footer have labelled contact routes.",
          "referenceUrl": "https://cakebar.com.sg/pages/store-contact",
          "scannerNote": "A dedicated Contact page was found."
        },
        {
          "ruleId": "digital_trust.phone_number",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "WhatsApp number linked in footer.",
          "referenceUrl": "https://cakebar.com.sg/",
          "scannerNote": "A phone number was found in the page text."
        },
        {
          "ruleId": "digital_trust.email_found",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Business enquiry email visible and linked.",
          "referenceUrl": "https://cakebar.com.sg/",
          "scannerNote": "An email address was found (mailto: link)."
        }
      ]
    },
    {
      "id": "noble-whiskers",
      "url": "https://www.noble-whiskers.com/",
      "industry": "Pet services",
      "observedUrl": "https://www.noble-whiskers.com/",
      "startedAt": "2026-09-28T01:32:25.221Z",
      "finishedAt": "2026-09-28T01:32:47.800Z",
      "scannerPages": 8,
      "scannerStatus": "partial",
      "stoppedReason": "page_budget",
      "referencePages": 1,
      "predictionSha256": "7b26ee850dd3c24a5e16164bf0ce43dfa48a421de0468f00003050c9f711b865",
      "metrics": {
        "total": 10,
        "evaluated": 8,
        "excluded": 2,
        "referenceUnknown": 2,
        "predictionUnknown": 0,
        "tp": 0,
        "fp": 1,
        "fn": 0,
        "tn": 7,
        "precision": 0,
        "recall": null,
        "falseAlarmRate": 0.125,
        "missRate": null,
        "coverage": 0.8
      },
      "rows": [
        {
          "ruleId": "ai_readiness.title_tag",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Homepage title has 66 characters.",
          "referenceUrl": "https://www.noble-whiskers.com/",
          "scannerNote": "Title tag is present and well-formed (66 characters)."
        },
        {
          "ruleId": "ai_readiness.meta_description",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Description has 91 characters and differs from title.",
          "referenceUrl": "https://www.noble-whiskers.com/",
          "scannerNote": "Meta description is present and well-formed (91 characters)."
        },
        {
          "ruleId": "ai_readiness.single_h1",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "One H1 element.",
          "referenceUrl": "https://www.noble-whiskers.com/",
          "scannerNote": "Exactly one H1 heading found."
        },
        {
          "ruleId": "ai_readiness.mobile_viewport",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Viewport meta present.",
          "referenceUrl": "https://www.noble-whiskers.com/",
          "scannerNote": "A mobile viewport meta tag is present."
        },
        {
          "ruleId": "ai_readiness.schema_present",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Two parseable JSON-LD blocks.",
          "referenceUrl": "https://www.noble-whiskers.com/",
          "scannerNote": "Schema.org JSON-LD found on 2 page(s)."
        },
        {
          "ruleId": "digital_trust.privacy_policy",
          "reference": "unknown",
          "prediction": "failed",
          "referenceNote": "No privacy link in reviewed homepage; sitewide absence not established.",
          "referenceUrl": "https://www.noble-whiskers.com/",
          "scannerNote": "No Privacy Policy page was found."
        },
        {
          "ruleId": "digital_trust.terms_conditions",
          "reference": "unknown",
          "prediction": "failed",
          "referenceNote": "No terms link in reviewed homepage; sitewide absence not established.",
          "referenceUrl": "https://www.noble-whiskers.com/",
          "scannerNote": "No Terms & Conditions page was found."
        },
        {
          "ruleId": "digital_trust.contact_page",
          "reference": "clear",
          "prediction": "failed",
          "referenceNote": "Footer explicitly labels a contact area with email and WhatsApp.",
          "referenceUrl": "https://www.noble-whiskers.com/",
          "scannerNote": "No clear contact page or labelled contact section was found."
        },
        {
          "ruleId": "digital_trust.phone_number",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "WhatsApp number linked and displayed.",
          "referenceUrl": "https://www.noble-whiskers.com/",
          "scannerNote": "A phone number was found in the page text."
        },
        {
          "ruleId": "digital_trust.email_found",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Business email displayed in footer.",
          "referenceUrl": "https://www.noble-whiskers.com/",
          "scannerNote": "An email address was found in the page text."
        }
      ]
    },
    {
      "id": "learning-lab",
      "url": "https://www.thelearninglab.com.sg/",
      "industry": "Education",
      "observedUrl": "https://www.thelearninglab.com.sg/",
      "startedAt": "2026-09-28T01:32:47.801Z",
      "finishedAt": "2026-09-28T01:32:49.854Z",
      "scannerPages": 8,
      "scannerStatus": "partial",
      "stoppedReason": "page_budget",
      "referencePages": 4,
      "predictionSha256": "fd2a7e8c037c3cdfb99c0dba22a32d56511bde4adae1868c46b2d597ccc17474",
      "metrics": {
        "total": 10,
        "evaluated": 10,
        "excluded": 0,
        "referenceUnknown": 0,
        "predictionUnknown": 0,
        "tp": 1,
        "fp": 0,
        "fn": 0,
        "tn": 9,
        "precision": 1,
        "recall": 1,
        "falseAlarmRate": 0,
        "missRate": 0,
        "coverage": 1
      },
      "rows": [
        {
          "ruleId": "ai_readiness.title_tag",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Homepage title has 67 characters.",
          "referenceUrl": "https://www.thelearninglab.com.sg/",
          "scannerNote": "Title tag is present and well-formed (67 characters)."
        },
        {
          "ruleId": "ai_readiness.meta_description",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Description has 155 characters and differs from title.",
          "referenceUrl": "https://www.thelearninglab.com.sg/",
          "scannerNote": "Meta description is present and well-formed (155 characters)."
        },
        {
          "ruleId": "ai_readiness.single_h1",
          "reference": "issue",
          "prediction": "partial",
          "referenceNote": "Two H1 elements, with near-identical wording.",
          "referenceUrl": "https://www.thelearninglab.com.sg/",
          "scannerNote": "2 H1 headings found; a page should have exactly one."
        },
        {
          "ruleId": "ai_readiness.mobile_viewport",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Viewport meta present.",
          "referenceUrl": "https://www.thelearninglab.com.sg/",
          "scannerNote": "A mobile viewport meta tag is present."
        },
        {
          "ruleId": "ai_readiness.schema_present",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Three parseable JSON-LD blocks.",
          "referenceUrl": "https://www.thelearninglab.com.sg/",
          "scannerNote": "Schema.org JSON-LD found on 1 page(s)."
        },
        {
          "ruleId": "digital_trust.privacy_policy",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Privacy page discusses collection and disclosure of personal data.",
          "referenceUrl": "https://www.thelearninglab.com.sg/privacy-policy",
          "scannerNote": "A Privacy Policy page was found."
        },
        {
          "ruleId": "digital_trust.terms_conditions",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Terms-of-use page states agreement and obligations.",
          "referenceUrl": "https://www.thelearninglab.com.sg/info/terms-of-use/",
          "scannerNote": "A Terms & Conditions page was found."
        },
        {
          "ruleId": "digital_trust.contact_page",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Contact page offers enquiries, phone, WhatsApp and email.",
          "referenceUrl": "https://www.thelearninglab.com.sg/contact-us/",
          "scannerNote": "A dedicated Contact page was found."
        },
        {
          "ruleId": "digital_trust.phone_number",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Hotline and WhatsApp routes present.",
          "referenceUrl": "https://www.thelearninglab.com.sg/contact-us/",
          "scannerNote": "A phone number was found (tel: link)."
        },
        {
          "ruleId": "digital_trust.email_found",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Enquiry email linked.",
          "referenceUrl": "https://www.thelearninglab.com.sg/contact-us/",
          "scannerNote": "An email address was found (mailto: link)."
        }
      ]
    },
    {
      "id": "raffles",
      "url": "https://www.rafflesmedicalgroup.com/",
      "industry": "Healthcare",
      "observedUrl": "https://www.rafflesmedicalgroup.com/",
      "startedAt": "2026-09-28T01:32:49.856Z",
      "finishedAt": "2026-09-28T01:32:52.017Z",
      "scannerPages": 8,
      "scannerStatus": "partial",
      "stoppedReason": "page_budget",
      "referencePages": 3,
      "predictionSha256": "810e25c7aa485a0ca88d70d76b0adac6de3a3f2104971ccbe97873008bb0ec98",
      "metrics": {
        "total": 10,
        "evaluated": 10,
        "excluded": 0,
        "referenceUnknown": 0,
        "predictionUnknown": 0,
        "tp": 0,
        "fp": 2,
        "fn": 0,
        "tn": 8,
        "precision": 0,
        "recall": null,
        "falseAlarmRate": 0.2,
        "missRate": null,
        "coverage": 1
      },
      "rows": [
        {
          "ruleId": "ai_readiness.title_tag",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Homepage title has 57 characters.",
          "referenceUrl": "https://www.rafflesmedicalgroup.com/",
          "scannerNote": "Title tag is present and well-formed (57 characters)."
        },
        {
          "ruleId": "ai_readiness.meta_description",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Description has 138 characters and differs from title.",
          "referenceUrl": "https://www.rafflesmedicalgroup.com/",
          "scannerNote": "Meta description is present and well-formed (138 characters)."
        },
        {
          "ruleId": "ai_readiness.single_h1",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "One H1 element.",
          "referenceUrl": "https://www.rafflesmedicalgroup.com/",
          "scannerNote": "Exactly one H1 heading found."
        },
        {
          "ruleId": "ai_readiness.mobile_viewport",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Viewport meta present.",
          "referenceUrl": "https://www.rafflesmedicalgroup.com/",
          "scannerNote": "A mobile viewport meta tag is present."
        },
        {
          "ruleId": "ai_readiness.schema_present",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Three parseable JSON-LD blocks.",
          "referenceUrl": "https://www.rafflesmedicalgroup.com/",
          "scannerNote": "Schema.org JSON-LD found on 8 page(s)."
        },
        {
          "ruleId": "digital_trust.privacy_policy",
          "reference": "clear",
          "prediction": "failed",
          "referenceNote": "Privacy content is an accordion within the terms page, opened separately.",
          "referenceUrl": "https://www.rafflesmedicalgroup.com/terms-conditions/",
          "scannerNote": "No Privacy Policy page was found."
        },
        {
          "ruleId": "digital_trust.terms_conditions",
          "reference": "clear",
          "prediction": "failed",
          "referenceNote": "Terms and disclaimer content present in the terms page DOM.",
          "referenceUrl": "https://www.rafflesmedicalgroup.com/terms-conditions/",
          "scannerNote": "No Terms & Conditions page was found."
        },
        {
          "ruleId": "digital_trust.contact_page",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Follow-up visit to actual contact URL confirms appointment/enquiry routes.",
          "referenceUrl": "https://www.rafflesmedicalgroup.com/our-group/contact-us/",
          "scannerNote": "A dedicated Contact page was found."
        },
        {
          "ruleId": "digital_trust.phone_number",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Homepage has a telephone link.",
          "referenceUrl": "https://www.rafflesmedicalgroup.com/",
          "scannerNote": "A phone number was found (tel: link)."
        },
        {
          "ruleId": "digital_trust.email_found",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Feedback email link present in terms page DOM.",
          "referenceUrl": "https://www.rafflesmedicalgroup.com/terms-conditions/",
          "scannerNote": "An email address was found (mailto: link)."
        }
      ]
    },
    {
      "id": "osome",
      "url": "https://osome.com/sg/",
      "industry": "Professional services",
      "observedUrl": "https://osome.com/sg/",
      "startedAt": "2026-09-28T01:32:52.017Z",
      "finishedAt": "2026-09-28T01:32:54.867Z",
      "scannerPages": 8,
      "scannerStatus": "partial",
      "stoppedReason": "page_budget",
      "referencePages": 4,
      "predictionSha256": "ec72937b7d982c8b9189c4b28f0821b8efa3ec5e06d6cdb89e9416db70cfa88c",
      "metrics": {
        "total": 10,
        "evaluated": 10,
        "excluded": 0,
        "referenceUnknown": 0,
        "predictionUnknown": 0,
        "tp": 2,
        "fp": 0,
        "fn": 0,
        "tn": 8,
        "precision": 1,
        "recall": 1,
        "falseAlarmRate": 0,
        "missRate": 0,
        "coverage": 1
      },
      "rows": [
        {
          "ruleId": "ai_readiness.title_tag",
          "reference": "issue",
          "prediction": "partial",
          "referenceNote": "Homepage title has 72 characters.",
          "referenceUrl": "https://osome.com/sg/",
          "scannerNote": "Title tag is present but 72 characters falls outside the recommended 15–70 range."
        },
        {
          "ruleId": "ai_readiness.meta_description",
          "reference": "issue",
          "prediction": "partial",
          "referenceNote": "Homepage description has 178 characters.",
          "referenceUrl": "https://osome.com/sg/",
          "scannerNote": "Meta description is present but 178 characters falls outside the recommended 50–160 range."
        },
        {
          "ruleId": "ai_readiness.single_h1",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "One H1 element.",
          "referenceUrl": "https://osome.com/sg/",
          "scannerNote": "Exactly one H1 heading found."
        },
        {
          "ruleId": "ai_readiness.mobile_viewport",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Viewport meta present.",
          "referenceUrl": "https://osome.com/sg/",
          "scannerNote": "A mobile viewport meta tag is present."
        },
        {
          "ruleId": "ai_readiness.schema_present",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "One parseable JSON-LD block.",
          "referenceUrl": "https://osome.com/sg/",
          "scannerNote": "Schema.org JSON-LD found on 8 page(s)."
        },
        {
          "ruleId": "digital_trust.privacy_policy",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Privacy page states data processing and officer contact.",
          "referenceUrl": "https://osome.com/sg/privacy/",
          "scannerNote": "A Privacy Policy page was found."
        },
        {
          "ruleId": "digital_trust.terms_conditions",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Terms page states use terms and dispute jurisdiction.",
          "referenceUrl": "https://osome.com/sg/terms/",
          "scannerNote": "A Terms & Conditions page was found."
        },
        {
          "ruleId": "digital_trust.contact_page",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Contact page gives phone, email and enquiry form.",
          "referenceUrl": "https://osome.com/sg/contact-us/",
          "scannerNote": "A dedicated Contact page was found."
        },
        {
          "ruleId": "digital_trust.phone_number",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Business phone linked.",
          "referenceUrl": "https://osome.com/sg/contact-us/",
          "scannerNote": "A phone number was found (tel: link)."
        },
        {
          "ruleId": "digital_trust.email_found",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Business email linked.",
          "referenceUrl": "https://osome.com/sg/contact-us/",
          "scannerNote": "An email address was found (mailto: link)."
        }
      ]
    },
    {
      "id": "livspace",
      "url": "https://www.livspace.com/sg",
      "industry": "Interiors",
      "observedUrl": "https://www.livspace.com/in",
      "startedAt": "2026-09-28T01:32:54.867Z",
      "finishedAt": "2026-09-28T01:33:07.251Z",
      "scannerPages": 8,
      "scannerStatus": "partial",
      "stoppedReason": "page_budget",
      "referencePages": 4,
      "predictionSha256": "71a2b25402a49690a62690f16352ccfbacd326587a67500859a2651ab1780a25",
      "metrics": {
        "total": 10,
        "evaluated": 10,
        "excluded": 0,
        "referenceUnknown": 0,
        "predictionUnknown": 0,
        "tp": 1,
        "fp": 1,
        "fn": 0,
        "tn": 8,
        "precision": 0.5,
        "recall": 1,
        "falseAlarmRate": 0.1111111111111111,
        "missRate": 0,
        "coverage": 1
      },
      "rows": [
        {
          "ruleId": "ai_readiness.title_tag",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Requested Singapore URL redirects to India; observed title has 51 characters.",
          "referenceUrl": "https://www.livspace.com/in",
          "scannerNote": "Title tag is present and well-formed (51 characters)."
        },
        {
          "ruleId": "ai_readiness.meta_description",
          "reference": "issue",
          "prediction": "partial",
          "referenceNote": "Observed India page description has 294 characters.",
          "referenceUrl": "https://www.livspace.com/in",
          "scannerNote": "Meta description is present but 294 characters falls outside the recommended 50–160 range."
        },
        {
          "ruleId": "ai_readiness.single_h1",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "One H1 element on observed India page.",
          "referenceUrl": "https://www.livspace.com/in",
          "scannerNote": "Exactly one H1 heading found."
        },
        {
          "ruleId": "ai_readiness.mobile_viewport",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Viewport meta present.",
          "referenceUrl": "https://www.livspace.com/in",
          "scannerNote": "A mobile viewport meta tag is present."
        },
        {
          "ruleId": "ai_readiness.schema_present",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Two parseable JSON-LD blocks.",
          "referenceUrl": "https://www.livspace.com/in",
          "scannerNote": "Schema.org JSON-LD found on 7 page(s)."
        },
        {
          "ruleId": "digital_trust.privacy_policy",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Linked India privacy policy describes collection and processing.",
          "referenceUrl": "https://www.livspace.com/in/interiors/privacy",
          "scannerNote": "A Privacy Policy page was found."
        },
        {
          "ruleId": "digital_trust.terms_conditions",
          "reference": "clear",
          "prediction": "failed",
          "referenceNote": "Linked policies page includes terms of use, eligibility and payments.",
          "referenceUrl": "https://www.livspace.com/in/interiors/service",
          "scannerNote": "No Terms & Conditions page was found."
        },
        {
          "ruleId": "digital_trust.contact_page",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Contact page gives support routes.",
          "referenceUrl": "https://www.livspace.com/in/contact-us",
          "scannerNote": "A dedicated Contact page was found."
        },
        {
          "ruleId": "digital_trust.phone_number",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Business phone linked.",
          "referenceUrl": "https://www.livspace.com/in/contact-us",
          "scannerNote": "A phone number was found (tel: link)."
        },
        {
          "ruleId": "digital_trust.email_found",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Customer-care email linked.",
          "referenceUrl": "https://www.livspace.com/in/contact-us",
          "scannerNote": "An email address was found (mailto: link)."
        }
      ]
    },
    {
      "id": "love-bonito",
      "url": "https://www.lovebonito.com/sg",
      "industry": "Retail",
      "observedUrl": "https://www.lovebonito.com/sg",
      "startedAt": "2026-09-28T01:33:07.252Z",
      "finishedAt": "2026-09-28T01:33:09.345Z",
      "scannerPages": 8,
      "scannerStatus": "partial",
      "stoppedReason": "page_budget",
      "referencePages": 4,
      "predictionSha256": "0a9309829a62c3a2b016eab64f0b5c29ed3c82b233bc610b7ed234ae932ff895",
      "metrics": {
        "total": 10,
        "evaluated": 9,
        "excluded": 1,
        "referenceUnknown": 1,
        "predictionUnknown": 0,
        "tp": 0,
        "fp": 0,
        "fn": 0,
        "tn": 9,
        "precision": null,
        "recall": null,
        "falseAlarmRate": 0,
        "missRate": null,
        "coverage": 0.9
      },
      "rows": [
        {
          "ruleId": "ai_readiness.title_tag",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Homepage title has 52 characters.",
          "referenceUrl": "https://www.lovebonito.com/sg",
          "scannerNote": "Title tag is present and well-formed (52 characters)."
        },
        {
          "ruleId": "ai_readiness.meta_description",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Description has 147 characters and differs from title.",
          "referenceUrl": "https://www.lovebonito.com/sg",
          "scannerNote": "Meta description is present and well-formed (147 characters)."
        },
        {
          "ruleId": "ai_readiness.single_h1",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "One H1 element.",
          "referenceUrl": "https://www.lovebonito.com/sg",
          "scannerNote": "Exactly one H1 heading found."
        },
        {
          "ruleId": "ai_readiness.mobile_viewport",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Viewport meta present.",
          "referenceUrl": "https://www.lovebonito.com/sg",
          "scannerNote": "A mobile viewport meta tag is present."
        },
        {
          "ruleId": "ai_readiness.schema_present",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "One parseable JSON-LD block.",
          "referenceUrl": "https://www.lovebonito.com/sg",
          "scannerNote": "Schema.org JSON-LD found on 6 page(s)."
        },
        {
          "ruleId": "digital_trust.privacy_policy",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Privacy page describes personal-data handling.",
          "referenceUrl": "https://www.lovebonito.com/sg/pages/privacy-policy",
          "scannerNote": "A Privacy Policy page was found."
        },
        {
          "ruleId": "digital_trust.terms_conditions",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Terms page states supply and use obligations.",
          "referenceUrl": "https://www.lovebonito.com/sg/pages/terms-and-conditions",
          "scannerNote": "A Terms & Conditions page was found."
        },
        {
          "ruleId": "digital_trust.contact_page",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Rendered contact page offers an enquiry form; submission not tested.",
          "referenceUrl": "https://www.lovebonito.com/sg/contact-us",
          "scannerNote": "A dedicated Contact page was found."
        },
        {
          "ruleId": "digital_trust.phone_number",
          "reference": "unknown",
          "prediction": "passed",
          "referenceNote": "No business phone found in four reviewed pages; sitewide absence not established.",
          "referenceUrl": "https://www.lovebonito.com/sg/contact-us",
          "scannerNote": "A phone number was found in the page text."
        },
        {
          "ruleId": "digital_trust.email_found",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Customer-service email appears in terms text.",
          "referenceUrl": "https://www.lovebonito.com/sg/pages/terms-and-conditions",
          "scannerNote": "An email address was found in the page text."
        }
      ]
    },
    {
      "id": "gym-pod",
      "url": "https://www.thegympod.com/",
      "industry": "Fitness",
      "observedUrl": "https://www.thegympod.com/",
      "startedAt": "2026-09-28T01:33:09.346Z",
      "finishedAt": "2026-09-28T01:33:16.669Z",
      "scannerPages": 8,
      "scannerStatus": "partial",
      "stoppedReason": "page_budget",
      "referencePages": 2,
      "predictionSha256": "b001dd56afd11a8a249be6d31420e2ee8405523a4667d359cb0bb25f2559bcc6",
      "metrics": {
        "total": 10,
        "evaluated": 9,
        "excluded": 1,
        "referenceUnknown": 1,
        "predictionUnknown": 0,
        "tp": 2,
        "fp": 4,
        "fn": 0,
        "tn": 3,
        "precision": 0.3333333333333333,
        "recall": 1,
        "falseAlarmRate": 0.5714285714285714,
        "missRate": 0,
        "coverage": 0.9
      },
      "rows": [
        {
          "ruleId": "ai_readiness.title_tag",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Homepage title has 69 characters.",
          "referenceUrl": "https://www.thegympod.com/",
          "scannerNote": "Title tag is present and well-formed (69 characters)."
        },
        {
          "ruleId": "ai_readiness.meta_description",
          "reference": "issue",
          "prediction": "partial",
          "referenceNote": "Description has 326 characters.",
          "referenceUrl": "https://www.thegympod.com/",
          "scannerNote": "Meta description is present but 326 characters falls outside the recommended 50–160 range."
        },
        {
          "ruleId": "ai_readiness.single_h1",
          "reference": "issue",
          "prediction": "partial",
          "referenceNote": "Three H1 elements, all with empty text.",
          "referenceUrl": "https://www.thegympod.com/",
          "scannerNote": "3 H1 headings found; a page should have exactly one."
        },
        {
          "ruleId": "ai_readiness.mobile_viewport",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Viewport meta present.",
          "referenceUrl": "https://www.thegympod.com/",
          "scannerNote": "A mobile viewport meta tag is present."
        },
        {
          "ruleId": "ai_readiness.schema_present",
          "reference": "clear",
          "prediction": "passed",
          "referenceNote": "Two parseable JSON-LD blocks.",
          "referenceUrl": "https://www.thegympod.com/",
          "scannerNote": "Schema.org JSON-LD found on 8 page(s)."
        },
        {
          "ruleId": "digital_trust.privacy_policy",
          "reference": "clear",
          "prediction": "failed",
          "referenceNote": "Privacy statement describes collection, retention and contact.",
          "referenceUrl": "https://thegympod.com/privacy-statement/",
          "scannerNote": "No Privacy Policy page was found."
        },
        {
          "ruleId": "digital_trust.terms_conditions",
          "reference": "clear",
          "prediction": "failed",
          "referenceNote": "Separate follow-up to linked Service Agreement confirms terms.",
          "referenceUrl": "https://thegympod.com/service-agreement/",
          "scannerNote": "No Terms & Conditions page was found."
        },
        {
          "ruleId": "digital_trust.contact_page",
          "reference": "clear",
          "prediction": "failed",
          "referenceNote": "Privacy statement has a Contact Us section with support email.",
          "referenceUrl": "https://thegympod.com/privacy-statement/",
          "scannerNote": "No clear contact page or labelled contact section was found."
        },
        {
          "ruleId": "digital_trust.phone_number",
          "reference": "unknown",
          "prediction": "passed",
          "referenceNote": "No business phone found in reviewed pages; sitewide absence not established.",
          "referenceUrl": "https://thegympod.com/privacy-statement/",
          "scannerNote": "A phone number was found in the page text."
        },
        {
          "ruleId": "digital_trust.email_found",
          "reference": "clear",
          "prediction": "failed",
          "referenceNote": "Support email visible in privacy statement.",
          "referenceUrl": "https://thegympod.com/privacy-statement/",
          "scannerNote": "No email address was found on any crawled page."
        }
      ]
    }
  ],
  "caveats": [
    "Internal Codex review, not external certification or multi-reviewer agreement.",
    "Eight convenience-sampled websites; no statistical representativeness or industry ranking.",
    "10 of 29 checks evaluated. The other 19 checks and overall score accuracy were not validated.",
    "Known issues in the reference set concern title/description length and H1 conventions, not demonstrated search-performance harm.",
    "Four unknown reference labels are excluded, not silently counted as correct.",
    "All eight crawls were partial. No completely blocked site happened in this sample.",
    "Livspace Singapore URL redirected to India. Results concern the observed India pages.",
    "Local production-code execution does not measure hosted job reliability, authentication or email delivery.",
    "Presence checks do not establish contact correctness, business authenticity, legal compliance, accessibility, security or ranking outcomes.",
    "Labels frozen before predictions, but reviewers knew the rule definitions. This is not fully blinded research.",
    "Reference and scanner visits happened at different times; dynamic content, location and user-agent differences can contribute.",
    "No scoring changes made to improve this baseline. Fixes require a separately reported regression run and fresh held-out sites."
  ]
}
