{
  "ofbExportFormatVersion": "1",
  "kind": "ofb-audit-report",
  "exportedAt": "2026-10-02T19:51:42.192Z",
  "report": {
    "domain": "invoicecraftly.com",
    "auditId": "621e27fb-989c-460d-8a58-4f2708f44a35",
    "checkedAt": "2026-10-02T19:51:42.192Z",
    "testedPath": "/",
    "reportVersion": "ofb-audit-r2.1",
    "legacyReportVersion": "ofb-audit-r1.6",
    "activeCapabilities": [
      "robots_policy",
      "public_html",
      "business_clarity",
      "structured_data",
      "llms_txt",
      "entity_trust"
    ],
    "robots": {
      "status": "available",
      "sourceUrl": "https://invoicecraftly.com/robots.txt",
      "httpStatus": 200,
      "bytesRead": 117,
      "redirects": []
    },
    "page": {
      "status": "available",
      "sourceUrl": "https://invoicecraftly.com/",
      "finalUrl": "https://invoicecraftly.com/",
      "httpStatus": 200,
      "contentType": "text/html; charset=utf-8",
      "redirects": [],
      "bytesRead": 47558,
      "durationMs": 311,
      "initialHtml": {
        "title": "Free Invoice Generator — No Signup, Logo and Payment QR",
        "metaDescription": "Create invoices, quotes, estimates, proforma invoices, receipts and credit notes free in your browser. No signup. Add your logo and export PDF, PNG, SVG or CSV.",
        "canonical": "https://invoicecraftly.com/",
        "language": "en",
        "h1s": [
          "Free invoice generator with logo and payment QR"
        ],
        "openingText": "Skip to main content Invoice Craftly Create Templates Free Tools Use cases Guides About Contact Global Global English · USD ✓ Danmark Dansk · DKK Norge Norsk · NOK Sverige Svenska · SEK Suomi Suomi · EUR Create an invoice → Free to use · No signup Free invoice generator with logo and payment QR Create, review, and export a professional invoice—with free PDF, PNG, SVG, and CSV exports. A focused workspace for invoices, quotes, estimates, proforma invoices, receipts, and credit notes. Create without an account and keep control of your working data. Create an invoice → View finished examples Open",
        "visibleWordCount": 1470,
        "hasMeaningfulInitialContent": true,
        "signals": {
          "titlePresent": true,
          "metaDescriptionPresent": true,
          "canonicalPresent": true,
          "singleH1": true,
          "languagePresent": true
        }
      },
      "clarity": {
        "status": "available",
        "summary": {
          "clear": 4,
          "limited": 2,
          "missing": 0,
          "notDetermined": 0
        },
        "findings": [
          {
            "id": "identity",
            "status": "limited_signal",
            "title": "Identity signal is not explicit",
            "summary": "The hostname brand token was not found in the inspected title, H1, or opening copy. This can be legitimate when the domain differs from the public brand.",
            "evidence": "heuristic",
            "observedValue": "invoicecraftly",
            "recommendation": "Make the public business or product name explicit in a prominent field and verify it manually.",
            "doesNotProve": "This wording check does not establish how any search or AI system interprets, ranks, cites, or recommends the page."
          },
          {
            "id": "offer",
            "status": "clear_signal",
            "title": "Offer/category language found",
            "summary": "The public copy includes an explicit product, service, or category term.",
            "evidence": "heuristic",
            "observedValue": "Generator",
            "recommendation": "Keep the category term close to the business name and primary value proposition.",
            "doesNotProve": "This wording check does not establish how any search or AI system interprets, ranks, cites, or recommends the page."
          },
          {
            "id": "audience",
            "status": "limited_signal",
            "title": "Audience language was not explicit",
            "summary": "No common explicit audience phrase was detected in the inspected fields.",
            "evidence": "heuristic",
            "observedValue": "Free Invoice Generator — No Signup, Logo and Payment QR Create invoices, quotes, estimates, proforma invoices, receipts and credit notes free in your browser. No signup. Add your logo and export PDF, PNG, SVG or CSV. Free invoice generator ",
            "recommendation": "Name the primary user, customer, or organization type when it improves clarity.",
            "doesNotProve": "This wording check does not establish how any search or AI system interprets, ranks, cites, or recommends the page."
          },
          {
            "id": "outcome",
            "status": "clear_signal",
            "title": "Practical outcome language found",
            "summary": "The public copy includes an action or outcome term describing what a visitor can do.",
            "evidence": "heuristic",
            "observedValue": "Create",
            "recommendation": "Connect the action to a concrete result or problem solved.",
            "doesNotProve": "This wording check does not establish how any search or AI system interprets, ranks, cites, or recommends the page."
          },
          {
            "id": "title-h1-consistency",
            "status": "clear_signal",
            "title": "Title and H1 reinforce related terms",
            "summary": "The title and primary H1 share meaningful terminology.",
            "evidence": "observed",
            "observedValue": "free, invoice, generator, logo, payment",
            "recommendation": "Keep them aligned without making them identical.",
            "doesNotProve": "This wording check does not establish how any search or AI system interprets, ranks, cites, or recommends the page."
          },
          {
            "id": "opening-copy",
            "status": "clear_signal",
            "title": "Descriptive opening copy is available",
            "summary": "The initial HTML exposes enough opening text for a visitor or retrieval system to inspect.",
            "evidence": "observed",
            "observedValue": "Skip to main content Invoice Craftly Create Templates Free Tools Use cases Guides About Contact Global Global English · USD ✓ Danmark Dansk · DKK Norge Norsk · NOK Sverige Svenska · SEK Suomi Suomi · EUR Create an invoice → Free to use · No signup Free invoice generator with logo and payment QR Crea",
            "recommendation": "Keep the first paragraph specific and supported by the rest of the page.",
            "doesNotProve": "This wording check does not establish how any search or AI system interprets, ranks, cites, or recommends the page."
          }
        ]
      },
      "structuredData": {
        "status": "available",
        "rulesVersion": "ofb-jsonld-r1.1-2026-10-02",
        "summary": {
          "blocks": 2,
          "validBlocks": 2,
          "malformedBlocks": 0,
          "entities": 6,
          "supportedEntities": 4,
          "pass": 4,
          "warning": 0,
          "fail": 0,
          "info": 5
        },
        "blocks": [
          {
            "index": 0,
            "status": "valid",
            "bytes": 3797,
            "entityCount": 5
          },
          {
            "index": 1,
            "status": "valid",
            "bytes": 3434,
            "entityCount": 1
          }
        ],
        "entities": [
          {
            "index": 0,
            "blockIndex": 0,
            "path": "root.@graph[0]",
            "id": "https://invoicecraftly.com/#organization",
            "name": "InvoiceCraftly",
            "types": [
              "Organization"
            ],
            "primaryType": "Organization",
            "supported": true,
            "contextValid": true,
            "missingRequired": [],
            "missingRecommended": [],
            "properties": {
              "@type": "Organization",
              "@id": "https://invoicecraftly.com/#organization",
              "name": "InvoiceCraftly",
              "url": "https://invoicecraftly.com/",
              "logo": {
                "@id": "https://invoicecraftly.com/#primaryimage"
              },
              "sameAs": [
                "https://www.linkedin.com/company/invoicecraftly",
                "https://www.youtube.com/@InvoiceCraftly"
              ]
            }
          },
          {
            "index": 1,
            "blockIndex": 0,
            "path": "root.@graph[1]",
            "id": "https://invoicecraftly.com/#website",
            "name": "InvoiceCraftly",
            "types": [
              "WebSite"
            ],
            "primaryType": "WebSite",
            "supported": true,
            "contextValid": true,
            "missingRequired": [],
            "missingRecommended": [],
            "properties": {
              "@type": "WebSite",
              "@id": "https://invoicecraftly.com/#website",
              "url": "https://invoicecraftly.com/",
              "name": "InvoiceCraftly",
              "publisher": {
                "@id": "https://invoicecraftly.com/#organization"
              },
              "inLanguage": [
                "en",
                "da-DK",
                "nb-NO",
                "sv-SE",
                "fi-FI"
              ]
            }
          },
          {
            "index": 2,
            "blockIndex": 0,
            "path": "root.@graph[2]",
            "id": "https://invoicecraftly.com/#software",
            "name": "InvoiceCraftly free invoice generator",
            "types": [
              "WebApplication"
            ],
            "primaryType": "WebApplication",
            "supported": false,
            "contextValid": true,
            "missingRequired": [],
            "missingRecommended": [],
            "properties": {
              "@type": "WebApplication",
              "@id": "https://invoicecraftly.com/#software",
              "url": "https://invoicecraftly.com/",
              "name": "InvoiceCraftly free invoice generator",
              "description": "A focused invoice and business-document editor for creating invoices, quotes, estimates, proforma invoices, receipts, and credit notes with custom branding, optional reviewed payment QR codes, and downloadable exports.",
              "applicationCategory": "BusinessApplication",
              "operatingSystem": "Any",
              "browserRequirements": "Requires JavaScript",
              "isAccessibleForFree": true,
              "inLanguage": "en",
              "provider": {
                "@id": "https://invoicecraftly.com/#organization"
              },
              "author": {
                "@type": "Person",
                "@id": "https://invoicecraftly.com/about#founder",
                "name": "Abaid Ur Rehman",
                "jobTitle": "Founder and Product Owner",
                "url": "https://invoicecraftly.com/about",
                "sameAs": [
                  "https://x.com/abaidurrehman1"
                ]
              },
              "offers": {
                "@type": "Offer",
                "price": "0",
                "priceCurrency": "USD"
              },
              "featureList": [
                "Invoices, quotes, estimates, proforma invoices, receipts, and credit notes",
                "Custom logo and brand colour",
                "Payment-link and EPC/SEPA transfer QR codes",
                "PDF, PNG, SVG, and structured CSV exports",
                "CSV line-item import",
                "Multiple editable documents and workspace backups",
                "Professional invoice wording assistance",
                "No account required"
              ]
            }
          },
          {
            "index": 3,
            "blockIndex": 0,
            "path": "root.@graph[3]",
            "id": "https://invoicecraftly.com/#webpage",
            "name": "Free Invoice Generator — No Signup, Logo and Payment QR",
            "types": [
              "WebPage"
            ],
            "primaryType": "WebPage",
            "supported": true,
            "contextValid": true,
            "missingRequired": [],
            "missingRecommended": [],
            "properties": {
              "@type": "WebPage",
              "@id": "https://invoicecraftly.com/#webpage",
              "url": "https://invoicecraftly.com/",
              "name": "Free Invoice Generator — No Signup, Logo and Payment QR",
              "description": "Create invoices, quotes, estimates, proforma invoices, receipts and credit notes free in your browser. No signup. Add your logo and export PDF, PNG, SVG or CSV.",
              "isPartOf": {
                "@id": "https://invoicecraftly.com/#website"
              },
              "about": {
                "@id": "https://invoicecraftly.com/#software"
              },
              "mainEntity": {
                "@id": "https://invoicecraftly.com/#software"
              },
              "primaryImageOfPage": {
                "@id": "https://invoicecraftly.com/#primaryimage"
              },
              "inLanguage": "en"
            }
          },
          {
            "index": 4,
            "blockIndex": 0,
            "path": "root.@graph[4]",
            "id": "https://invoicecraftly.com/#primaryimage",
            "name": null,
            "types": [
              "ImageObject"
            ],
            "primaryType": "ImageObject",
            "supported": false,
            "contextValid": true,
            "missingRequired": [],
            "missingRecommended": [],
            "properties": {
              "@type": "ImageObject",
              "@id": "https://invoicecraftly.com/#primaryimage",
              "url": "https://invoicecraftly.com/assets/social/homepage-invoice-generator-1200x630.png",
              "contentUrl": "https://invoicecraftly.com/assets/social/homepage-invoice-generator-1200x630.png",
              "width": 1200,
              "height": 630,
              "caption": "InvoiceCraftly free invoice generator with logo and payment QR"
            }
          },
          {
            "index": 5,
            "blockIndex": 1,
            "path": "root",
            "id": null,
            "name": null,
            "types": [
              "FAQPage"
            ],
            "primaryType": "FAQPage",
            "supported": true,
            "contextValid": true,
            "missingRequired": [],
            "missingRecommended": [],
            "properties": {
              "@context": "https://schema.org",
              "@type": "FAQPage",
              "mainEntity": [
                {
                  "@type": "Question",
                  "name": "Is InvoiceCraftly free to use?",
                  "acceptedAnswer": {
                    "@type": "Answer",
                    "text": "Yes. The editor and PDF, PNG, SVG, and CSV exports are free to use without an account. Exports include a small linked InvoiceCraftly credit in the footer."
                  }
                },
                {
                  "@type": "Question",
                  "name": "Do I need an account?",
                  "acceptedAnswer": {
                    "@type": "Answer",
                    "text": "No. You can create and export documents without signing up."
                  }
                },
                {
                  "@type": "Question",
                  "name": "Where is my document stored?",
                  "acceptedAnswer": {
                    "@type": "Answer",
                    "text": "By default, your working documents are saved on this device. You can export a workspace backup, and optional storage features are separate choices. See Privacy for the current storage options."
                  }
                },
                {
                  "@type": "Question",
                  "name": "Can I add my logo and a payment QR?",
                  "acceptedAnswer": {
                    "@type": "Answer",
                    "text": "Yes. Upload your business logo, choose a brand accent colour, and optionally add a payment-link or EPC/SEPA transfer QR code. A contact-card QR shares seller contact details instead of payment instructions. Before sending, scan the QR once and confirm the payment details shown by the receiving app. "
                  }
                },
                {
                  "@type": "Question",
                  "name": "Can I create an invoice by describing it instead of filling out a form?",
                  "acceptedAnswer": {
                    "@type": "Answer",
                    "text": "Yes. Describe the work in plain language and InvoiceCraftly extracts the details into an editable draft. Review and adjust every field before you create the document."
                  }
                },
                {
                  "@type": "Question",
                  "name": "Which export formats are available?",
                  "acceptedAnswer": {
                    "@type": "Answer",
                    "text": "You can export PDF, PNG, SVG, and CSV files directly from the editor."
                  }
                },
                {
                  "@type": "Question",
                  "name": "What document types can I create?",
                  "acceptedAnswer": {
                    "@type": "Answer",
                    "text": "The same editor creates invoices, quotes, estimates, proforma invoices, receipts, and credit notes."
                  }
                },
                {
                  "@type": "Question",
                  "name": "Can I create invoice line items from a CSV?",
                  "acceptedAnswer": {
                    "@type": "Answer",
                    "text": "Yes. Choose Import from CSV beside the line-item controls, then upload a CSV or paste rows copied from a spreadsheet. InvoiceCraftly matches descriptions, quantities, units, prices, and tax fields. Review the rows and confirm once to add every ready item. Follow the CSV line-item import guide. CSV i"
                  }
                },
                {
                  "@type": "Question",
                  "name": "Can I work on more than one invoice?",
                  "acceptedAnswer": {
                    "@type": "Answer",
                    "text": "Yes. History lets you reopen multiple documents saved on this device, duplicate one, create the next invoice, and use Undo or Redo during the current editing session."
                  }
                }
              ]
            }
          }
        ],
        "findings": [
          {
            "id": "jsonld-entity-0-valid",
            "status": "pass",
            "title": "Organization core shape is present",
            "summary": "The focused core properties for this entity type were observed.",
            "evidence": {
              "type": "observed",
              "blockIndex": 0,
              "path": "root.@graph[0]"
            },
            "recommendation": "Keep the entity synchronized with visible content and official documentation.",
            "doesNotProve": "Valid structured data does not guarantee rich results, rankings, citations, retrieval, or use by an AI provider."
          },
          {
            "id": "jsonld-entity-1-valid",
            "status": "pass",
            "title": "WebSite core shape is present",
            "summary": "The focused core properties for this entity type were observed.",
            "evidence": {
              "type": "observed",
              "blockIndex": 0,
              "path": "root.@graph[1]"
            },
            "recommendation": "Keep the entity synchronized with visible content and official documentation.",
            "doesNotProve": "Valid structured data does not guarantee rich results, rankings, citations, retrieval, or use by an AI provider."
          },
          {
            "id": "jsonld-entity-2-unsupported",
            "status": "info",
            "title": "Schema type is outside the focused validator",
            "summary": "The entity declares WebApplication, which is preserved but not property-validated in this release.",
            "evidence": {
              "type": "observed",
              "blockIndex": 0,
              "path": "root.@graph[2]",
              "observedValue": [
                "WebApplication"
              ]
            },
            "recommendation": "Review the type against Schema.org and applicable first-party search documentation.",
            "doesNotProve": "Valid structured data does not guarantee rich results, rankings, citations, retrieval, or use by an AI provider."
          },
          {
            "id": "jsonld-entity-3-valid",
            "status": "pass",
            "title": "WebPage core shape is present",
            "summary": "The focused core properties for this entity type were observed.",
            "evidence": {
              "type": "observed",
              "blockIndex": 0,
              "path": "root.@graph[3]"
            },
            "recommendation": "Keep the entity synchronized with visible content and official documentation.",
            "doesNotProve": "Valid structured data does not guarantee rich results, rankings, citations, retrieval, or use by an AI provider."
          },
          {
            "id": "jsonld-entity-4-unsupported",
            "status": "info",
            "title": "Schema type is outside the focused validator",
            "summary": "The entity declares ImageObject, which is preserved but not property-validated in this release.",
            "evidence": {
              "type": "observed",
              "blockIndex": 0,
              "path": "root.@graph[4]",
              "observedValue": [
                "ImageObject"
              ]
            },
            "recommendation": "Review the type against Schema.org and applicable first-party search documentation.",
            "doesNotProve": "Valid structured data does not guarantee rich results, rankings, citations, retrieval, or use by an AI provider."
          },
          {
            "id": "jsonld-entity-5-valid",
            "status": "pass",
            "title": "FAQPage core shape is present",
            "summary": "The focused core properties for this entity type were observed.",
            "evidence": {
              "type": "observed",
              "blockIndex": 1,
              "path": "root"
            },
            "recommendation": "Keep the entity synchronized with visible content and official documentation.",
            "doesNotProve": "Valid structured data does not guarantee rich results, rankings, citations, retrieval, or use by an AI provider."
          },
          {
            "id": "jsonld-visible-0",
            "status": "info",
            "title": "Entity name needs visible-content review",
            "summary": "The entity name “InvoiceCraftly” was not found verbatim in the inspected title, H1, or opening text.",
            "evidence": {
              "type": "heuristic",
              "observedValue": "InvoiceCraftly"
            },
            "recommendation": "Confirm that the markup describes the visible page and that naming differences are intentional.",
            "doesNotProve": "Valid structured data does not guarantee rich results, rankings, citations, retrieval, or use by an AI provider."
          },
          {
            "id": "jsonld-visible-1",
            "status": "info",
            "title": "Entity name needs visible-content review",
            "summary": "The entity name “InvoiceCraftly” was not found verbatim in the inspected title, H1, or opening text.",
            "evidence": {
              "type": "heuristic",
              "observedValue": "InvoiceCraftly"
            },
            "recommendation": "Confirm that the markup describes the visible page and that naming differences are intentional.",
            "doesNotProve": "Valid structured data does not guarantee rich results, rankings, citations, retrieval, or use by an AI provider."
          },
          {
            "id": "jsonld-visible-2",
            "status": "info",
            "title": "Entity name needs visible-content review",
            "summary": "The entity name “InvoiceCraftly free invoice generator” was not found verbatim in the inspected title, H1, or opening text.",
            "evidence": {
              "type": "heuristic",
              "observedValue": "InvoiceCraftly free invoice generator"
            },
            "recommendation": "Confirm that the markup describes the visible page and that naming differences are intentional.",
            "doesNotProve": "Valid structured data does not guarantee rich results, rankings, citations, retrieval, or use by an AI provider."
          }
        ],
        "limitation": "This release validates JSON syntax and a focused property model. It is not a complete Schema.org or search rich-result eligibility validator."
      },
      "entitySignals": {
        "status": "available",
        "rulesVersion": "ofb-entity-r1-2026-08-02",
        "summary": {
          "primaryEntities": 2,
          "stableIds": 2,
          "logos": 1,
          "sameAsLinks": 2,
          "trustPages": 4,
          "relationships": 2,
          "warnings": 1,
          "opportunities": 0
        },
        "identity": {
          "visibleName": "Free Invoice Generator — No Signup, Logo and Payment QR",
          "structuredNames": [
            "InvoiceCraftly"
          ],
          "primaryTypes": [
            "Organization",
            "WebSite"
          ],
          "sameAs": [
            "https://www.linkedin.com/company/invoicecraftly",
            "https://www.youtube.com/@InvoiceCraftly"
          ],
          "malformedSameAs": [],
          "trustLinks": [
            {
              "kind": "about",
              "url": "https://invoicecraftly.com/about",
              "text": "About"
            },
            {
              "kind": "contact",
              "url": "https://invoicecraftly.com/contact",
              "text": "Contact"
            },
            {
              "kind": "privacy",
              "url": "https://invoicecraftly.com/privacy",
              "text": "Read Privacy"
            },
            {
              "kind": "legal",
              "url": "https://invoicecraftly.com/privacy",
              "text": "Privacy &amp; legal"
            }
          ]
        },
        "findings": [
          {
            "id": "primary_entities",
            "status": "pass",
            "evidence": "observed",
            "title": "2 primary identity entities found",
            "meaning": "Structured data declares Organization, WebSite.",
            "recommendedAction": null
          },
          {
            "id": "stable_ids",
            "status": "pass",
            "evidence": "observed",
            "title": "Primary entities use stable identifiers",
            "meaning": "2 primary entities expose an @id.",
            "recommendedAction": null
          },
          {
            "id": "logo",
            "status": "pass",
            "evidence": "observed",
            "title": "Structured identity image found",
            "meaning": "1 primary entities expose a logo or image property.",
            "recommendedAction": null
          },
          {
            "id": "same_as",
            "status": "pass",
            "evidence": "observed",
            "title": "2 declared profile links found",
            "meaning": "The page declares external identity relationships through sameAs.",
            "recommendedAction": null
          },
          {
            "id": "name_consistency",
            "status": "warning",
            "evidence": "heuristic",
            "title": "Visible and structured identity names may conflict",
            "meaning": "Visible text and structured names did not share a clear normalized match. Structured names: InvoiceCraftly.",
            "recommendedAction": "Review title, H1 and primary structured-data names for a consistent public identity."
          },
          {
            "id": "trust_pages",
            "status": "pass",
            "evidence": "observed",
            "title": "4 trust-page links found",
            "meaning": "Homepage links expose: about, contact, privacy, legal.",
            "recommendedAction": null
          },
          {
            "id": "relationships",
            "status": "pass",
            "evidence": "observed",
            "title": "Publisher or author relationships found",
            "meaning": "2 structured entities expose publisher or author properties.",
            "recommendedAction": null
          }
        ],
        "limitation": "These are public identity and consistency signals only. They do not prove external entity recognition, profile ownership, knowledge-graph inclusion, trust, ranking, citation or recommendation."
      }
    },
    "llmsTxt": {
      "status": "available",
      "sourceUrl": "https://invoicecraftly.com/llms.txt",
      "httpStatus": 200,
      "redirects": [],
      "bytesRead": 15746,
      "contentType": "text/plain; charset=utf-8",
      "rulesVersion": "ofb-llms-r1-2026-08-02",
      "summary": {
        "titlePresent": true,
        "introPresent": true,
        "sections": 12,
        "links": 76,
        "sameSiteLinks": 73,
        "externalLinks": 3,
        "duplicateLinks": 2,
        "malformedLinks": 0,
        "insecureLinks": 0,
        "llmsFullLinks": 0,
        "warnings": 0,
        "opportunities": 1
      },
      "document": {
        "title": "InvoiceCraftly",
        "introduction": "> InvoiceCraftly is a free invoicing product for creating professional invoices, quotes, estimates, proforma invoices, receipts, and credit notes. Core document creation and export work without an account, with custom branding, payment QR options, reusable workspace features, and PDF, PNG, SVG, and CSV exports.",
        "sections": [
          "Start here",
          "Developer API",
          "Nordic invoicing",
          "Company lookup for invoicing",
          "Tools",
          "Invoice and e-invoicing guidance",
          "Document types",
          "Profession templates",
          "Browser extensions",
          "Workspace and storage",
          "Key product limits",
          "Trust and contact"
        ],
        "links": [
          {
            "label": "InvoiceCraftly homepage",
            "rawUrl": "https://invoicecraftly.com/",
            "url": "https://invoicecraftly.com/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 7
          },
          {
            "label": "Create an invoice",
            "rawUrl": "https://invoicecraftly.com/editor/",
            "url": "https://invoicecraftly.com/editor/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 8
          },
          {
            "label": "Smart Start",
            "rawUrl": "https://invoicecraftly.com/start/?mode=describe",
            "url": "https://invoicecraftly.com/start/?mode=describe",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 9
          },
          {
            "label": "Complete invoice guide",
            "rawUrl": "https://invoicecraftly.com/guide",
            "url": "https://invoicecraftly.com/guide",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 10
          },
          {
            "label": "Templates and finished examples",
            "rawUrl": "https://invoicecraftly.com/templates/",
            "url": "https://invoicecraftly.com/templates/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 11
          },
          {
            "label": "Free invoice tools",
            "rawUrl": "https://invoicecraftly.com/tools/",
            "url": "https://invoicecraftly.com/tools/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 12
          },
          {
            "label": "Invoicing glossary",
            "rawUrl": "https://invoicecraftly.com/glossary/",
            "url": "https://invoicecraftly.com/glossary/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 13
          },
          {
            "label": "Product changelog",
            "rawUrl": "https://invoicecraftly.com/changelog",
            "url": "https://invoicecraftly.com/changelog",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 14
          },
          {
            "label": "Developer Document API",
            "rawUrl": "https://invoicecraftly.com/developers/",
            "url": "https://invoicecraftly.com/developers/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 18
          },
          {
            "label": "OpenAPI 3.1 specification",
            "rawUrl": "https://invoicecraftly.com/developers/openapi.json",
            "url": "https://invoicecraftly.com/developers/openapi.json",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 19
          },
          {
            "label": "APIs.json descriptor",
            "rawUrl": "https://invoicecraftly.com/apis.json",
            "url": "https://invoicecraftly.com/apis.json",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 20
          },
          {
            "label": "Published Postman documentation",
            "rawUrl": "https://documenter.getpostman.com/view/2986090/2sBYB1PoQR",
            "url": "https://documenter.getpostman.com/view/2986090/2sBYB1PoQR",
            "hostname": "documenter.getpostman.com",
            "sameSite": false,
            "secure": true,
            "line": 21
          },
          {
            "label": "TypeScript SDK",
            "rawUrl": "https://www.npmjs.com/package/@invoicecraftly/client",
            "url": "https://www.npmjs.com/package/@invoicecraftly/client",
            "hostname": "www.npmjs.com",
            "sameSite": false,
            "secure": true,
            "line": 22
          },
          {
            "label": "Python SDK",
            "rawUrl": "https://pypi.org/project/invoicecraftly/",
            "url": "https://pypi.org/project/invoicecraftly/",
            "hostname": "pypi.org",
            "sameSite": false,
            "secure": true,
            "line": 23
          },
          {
            "label": "Norway invoice generator",
            "rawUrl": "https://invoicecraftly.com/no/",
            "url": "https://invoicecraftly.com/no/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 31
          },
          {
            "label": "Finland invoice generator",
            "rawUrl": "https://invoicecraftly.com/fi/",
            "url": "https://invoicecraftly.com/fi/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 32
          },
          {
            "label": "Denmark invoice generator",
            "rawUrl": "https://invoicecraftly.com/dk/",
            "url": "https://invoicecraftly.com/dk/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 33
          },
          {
            "label": "Danish invoice requirements",
            "rawUrl": "https://invoicecraftly.com/dk/krav-til-faktura/",
            "url": "https://invoicecraftly.com/dk/krav-til-faktura/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 34
          },
          {
            "label": "Sweden invoice generator",
            "rawUrl": "https://invoicecraftly.com/se/",
            "url": "https://invoicecraftly.com/se/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 35
          },
          {
            "label": "Company Lookup",
            "rawUrl": "https://invoicecraftly.com/tools/company-lookup/",
            "url": "https://invoicecraftly.com/tools/company-lookup/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 39
          },
          {
            "label": "Bedriftssøk Norge",
            "rawUrl": "https://invoicecraftly.com/no/verktoy/bedriftssok/",
            "url": "https://invoicecraftly.com/no/verktoy/bedriftssok/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 40
          },
          {
            "label": "Yrityshaku Suomi",
            "rawUrl": "https://invoicecraftly.com/fi/tyokalut/yrityshaku/",
            "url": "https://invoicecraftly.com/fi/tyokalut/yrityshaku/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 41
          },
          {
            "label": "CVR-opslag Danmark",
            "rawUrl": "https://invoicecraftly.com/dk/vaerktojer/cvr-opslag/",
            "url": "https://invoicecraftly.com/dk/vaerktojer/cvr-opslag/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 42
          },
          {
            "label": "Företagssök Sverige",
            "rawUrl": "https://invoicecraftly.com/se/verktyg/foretagssok/",
            "url": "https://invoicecraftly.com/se/verktyg/foretagssok/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 43
          },
          {
            "label": "SEPA payment QR code generator",
            "rawUrl": "https://invoicecraftly.com/tools/sepa-payment-qr-generator",
            "url": "https://invoicecraftly.com/tools/sepa-payment-qr-generator",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 49
          },
          {
            "label": "IBAN validator",
            "rawUrl": "https://invoicecraftly.com/tools/iban-validator",
            "url": "https://invoicecraftly.com/tools/iban-validator",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 50
          },
          {
            "label": "Static QR code generator",
            "rawUrl": "https://invoicecraftly.com/tools/qr-code-generator",
            "url": "https://invoicecraftly.com/tools/qr-code-generator",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 51
          },
          {
            "label": "Invoice readiness checklist generator",
            "rawUrl": "https://invoicecraftly.com/tools/invoice-readiness-checklist",
            "url": "https://invoicecraftly.com/tools/invoice-readiness-checklist",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 52
          },
          {
            "label": "Invoice due date calculator",
            "rawUrl": "https://invoicecraftly.com/tools/invoice-due-date-calculator",
            "url": "https://invoicecraftly.com/tools/invoice-due-date-calculator",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 53
          },
          {
            "label": "Invoice number generator and format planner",
            "rawUrl": "https://invoicecraftly.com/tools/invoice-number-generator",
            "url": "https://invoicecraftly.com/tools/invoice-number-generator",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 54
          },
          {
            "label": "EU VAT number checker (VIES)",
            "rawUrl": "https://invoicecraftly.com/tools/vat-number-checker",
            "url": "https://invoicecraftly.com/tools/vat-number-checker",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 55
          },
          {
            "label": "VAT calculator",
            "rawUrl": "https://invoicecraftly.com/tools/vat-calculator",
            "url": "https://invoicecraftly.com/tools/vat-calculator",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 56
          },
          {
            "label": "Invoice calculator",
            "rawUrl": "https://invoicecraftly.com/tools/invoice-calculator",
            "url": "https://invoicecraftly.com/tools/invoice-calculator",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 57
          },
          {
            "label": "Hourly invoice calculator",
            "rawUrl": "https://invoicecraftly.com/tools/hourly-invoice-calculator",
            "url": "https://invoicecraftly.com/tools/hourly-invoice-calculator",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 58
          },
          {
            "label": "Retainer invoice calculator",
            "rawUrl": "https://invoicecraftly.com/tools/retainer-invoice-calculator",
            "url": "https://invoicecraftly.com/tools/retainer-invoice-calculator",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 59
          },
          {
            "label": "Days past due calculator",
            "rawUrl": "https://invoicecraftly.com/tools/days-past-due-calculator",
            "url": "https://invoicecraftly.com/tools/days-past-due-calculator",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 60
          },
          {
            "label": "Late payment interest calculator",
            "rawUrl": "https://invoicecraftly.com/tools/late-payment-interest-calculator",
            "url": "https://invoicecraftly.com/tools/late-payment-interest-calculator",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 61
          },
          {
            "label": "Payment reminder generator",
            "rawUrl": "https://invoicecraftly.com/tools/payment-reminder-generator",
            "url": "https://invoicecraftly.com/tools/payment-reminder-generator",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 62
          },
          {
            "label": "E-invoice XML viewer & checker",
            "rawUrl": "https://invoicecraftly.com/tools/e-invoice-xml-viewer",
            "url": "https://invoicecraftly.com/tools/e-invoice-xml-viewer",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 63
          },
          {
            "label": "Invoice and freelancer guides",
            "rawUrl": "https://invoicecraftly.com/guides/",
            "url": "https://invoicecraftly.com/guides/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 67
          },
          {
            "label": "Norway invoice requirements",
            "rawUrl": "https://invoicecraftly.com/guides/norway-invoice-requirements",
            "url": "https://invoicecraftly.com/guides/norway-invoice-requirements",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 68
          },
          {
            "label": "Norway EHF and e-invoice 2027 checker",
            "rawUrl": "https://invoicecraftly.com/no/verktoy/ehf-faktura-sjekk/",
            "url": "https://invoicecraftly.com/no/verktoy/ehf-faktura-sjekk/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 69
          },
          {
            "label": "Krav til faktura i Norge",
            "rawUrl": "https://invoicecraftly.com/guides/krav-til-faktura-norge",
            "url": "https://invoicecraftly.com/guides/krav-til-faktura-norge",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 70
          },
          {
            "label": "Finn organisasjonsnummer til faktura",
            "rawUrl": "https://invoicecraftly.com/guides/finne-organisasjonsnummer-for-faktura",
            "url": "https://invoicecraftly.com/guides/finne-organisasjonsnummer-for-faktura",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 71
          },
          {
            "label": "Bedriftssøk til faktura",
            "rawUrl": "https://invoicecraftly.com/guides/bedriftssok-til-faktura",
            "url": "https://invoicecraftly.com/guides/bedriftssok-til-faktura",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 72
          },
          {
            "label": "Sweden invoice requirements",
            "rawUrl": "https://invoicecraftly.com/guides/sweden-invoice-requirements",
            "url": "https://invoicecraftly.com/guides/sweden-invoice-requirements",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 73
          },
          {
            "label": "Krav på faktura i Sverige",
            "rawUrl": "https://invoicecraftly.com/guides/krav-pa-faktura-sverige",
            "url": "https://invoicecraftly.com/guides/krav-pa-faktura-sverige",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 74
          },
          {
            "label": "Invoice generator without signup",
            "rawUrl": "https://invoicecraftly.com/guides/invoice-generator-without-signup",
            "url": "https://invoicecraftly.com/guides/invoice-generator-without-signup",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 75
          },
          {
            "label": "Invoice",
            "rawUrl": "https://invoicecraftly.com/editor/?type=invoice",
            "url": "https://invoicecraftly.com/editor/?type=invoice",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 83
          },
          {
            "label": "Quote",
            "rawUrl": "https://invoicecraftly.com/document-types/quote",
            "url": "https://invoicecraftly.com/document-types/quote",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 84
          },
          {
            "label": "Estimate",
            "rawUrl": "https://invoicecraftly.com/document-types/estimate",
            "url": "https://invoicecraftly.com/document-types/estimate",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 85
          },
          {
            "label": "Proforma invoice",
            "rawUrl": "https://invoicecraftly.com/document-types/proforma-invoice",
            "url": "https://invoicecraftly.com/document-types/proforma-invoice",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 86
          },
          {
            "label": "Receipt",
            "rawUrl": "https://invoicecraftly.com/document-types/receipt",
            "url": "https://invoicecraftly.com/document-types/receipt",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 87
          },
          {
            "label": "Credit note",
            "rawUrl": "https://invoicecraftly.com/document-types/credit-note",
            "url": "https://invoicecraftly.com/document-types/credit-note",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 88
          },
          {
            "label": "Contractor invoice template",
            "rawUrl": "https://invoicecraftly.com/templates/contractor",
            "url": "https://invoicecraftly.com/templates/contractor",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 92
          },
          {
            "label": "Freelancer invoice template",
            "rawUrl": "https://invoicecraftly.com/templates/freelancer",
            "url": "https://invoicecraftly.com/templates/freelancer",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 93
          },
          {
            "label": "Consultant invoice template",
            "rawUrl": "https://invoicecraftly.com/templates/consultant",
            "url": "https://invoicecraftly.com/templates/consultant",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 94
          },
          {
            "label": "Photographer invoice template",
            "rawUrl": "https://invoicecraftly.com/templates/photographer",
            "url": "https://invoicecraftly.com/templates/photographer",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 95
          },
          {
            "label": "Hospitality invoice template",
            "rawUrl": "https://invoicecraftly.com/templates/hospitality",
            "url": "https://invoicecraftly.com/templates/hospitality",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 96
          },
          {
            "label": "Graphic designer invoice template",
            "rawUrl": "https://invoicecraftly.com/templates/graphic-designer",
            "url": "https://invoicecraftly.com/templates/graphic-designer",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 97
          },
          {
            "label": "Web developer invoice template",
            "rawUrl": "https://invoicecraftly.com/templates/web-developer",
            "url": "https://invoicecraftly.com/templates/web-developer",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 98
          },
          {
            "label": "Social media manager invoice template",
            "rawUrl": "https://invoicecraftly.com/templates/social-media-manager",
            "url": "https://invoicecraftly.com/templates/social-media-manager",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 99
          },
          {
            "label": "Marketing agency invoice template",
            "rawUrl": "https://invoicecraftly.com/templates/marketing-agency",
            "url": "https://invoicecraftly.com/templates/marketing-agency",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 100
          },
          {
            "label": "Virtual assistant invoice template",
            "rawUrl": "https://invoicecraftly.com/templates/virtual-assistant",
            "url": "https://invoicecraftly.com/templates/virtual-assistant",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 101
          },
          {
            "label": "Tutor and coach invoice template",
            "rawUrl": "https://invoicecraftly.com/templates/tutor-coach",
            "url": "https://invoicecraftly.com/templates/tutor-coach",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 102
          },
          {
            "label": "Boutique retail invoice template",
            "rawUrl": "https://invoicecraftly.com/templates/boutique-retail",
            "url": "https://invoicecraftly.com/templates/boutique-retail",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 103
          },
          {
            "label": "Invoice Capture for Chrome",
            "rawUrl": "https://invoicecraftly.com/chrome-extension",
            "url": "https://invoicecraftly.com/chrome-extension",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 107
          },
          {
            "label": "Invoice Capture for Microsoft Edge",
            "rawUrl": "https://invoicecraftly.com/edge-extension",
            "url": "https://invoicecraftly.com/edge-extension",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 108
          },
          {
            "label": "Account",
            "rawUrl": "https://invoicecraftly.com/account/",
            "url": "https://invoicecraftly.com/account/",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 114
          },
          {
            "label": "Privacy",
            "rawUrl": "https://invoicecraftly.com/privacy",
            "url": "https://invoicecraftly.com/privacy",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 115
          },
          {
            "label": "Security",
            "rawUrl": "https://invoicecraftly.com/security",
            "url": "https://invoicecraftly.com/security",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 116
          },
          {
            "label": "About",
            "rawUrl": "https://invoicecraftly.com/about",
            "url": "https://invoicecraftly.com/about",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 128
          },
          {
            "label": "Privacy",
            "rawUrl": "https://invoicecraftly.com/privacy",
            "url": "https://invoicecraftly.com/privacy",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 129
          },
          {
            "label": "Security",
            "rawUrl": "https://invoicecraftly.com/security",
            "url": "https://invoicecraftly.com/security",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 130
          },
          {
            "label": "Contact",
            "rawUrl": "https://invoicecraftly.com/contact",
            "url": "https://invoicecraftly.com/contact",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 131
          },
          {
            "label": "Partnerships",
            "rawUrl": "https://invoicecraftly.com/partnerships",
            "url": "https://invoicecraftly.com/partnerships",
            "hostname": "invoicecraftly.com",
            "sameSite": true,
            "secure": true,
            "line": 132
          }
        ],
        "malformedLinks": [],
        "duplicateLinks": [
          {
            "url": "https://invoicecraftly.com/privacy",
            "count": 2
          },
          {
            "url": "https://invoicecraftly.com/security",
            "count": 2
          }
        ],
        "llmsFullLinks": []
      },
      "findings": [
        {
          "id": "title",
          "status": "pass",
          "evidence": "observed",
          "title": "Document title found",
          "meaning": "The file identifies itself as “InvoiceCraftly”.",
          "recommendedAction": null
        },
        {
          "id": "introduction",
          "status": "pass",
          "evidence": "observed",
          "title": "Introductory context found",
          "meaning": "The file provides context before its resource sections.",
          "recommendedAction": null
        },
        {
          "id": "links",
          "status": "pass",
          "evidence": "observed",
          "title": "76 linked resources found",
          "meaning": "Markdown links were extracted and resolved against the file location.",
          "recommendedAction": null
        },
        {
          "id": "duplicate_links",
          "status": "opportunity",
          "evidence": "observed",
          "title": "2 duplicate destinations",
          "meaning": "One or more resources are listed more than once.",
          "recommendedAction": "Remove unintentional duplicates to keep the file concise."
        }
      ],
      "limitation": "llms.txt is an emerging convention. Its presence or validity does not prove provider support, crawling, indexing, retrieval, ranking, citation, recommendation, or model use."
    },
    "deliveryDiagnostics": {
      "rulesVersion": "ofb-delivery-diagnostics-r1-2026-08-07",
      "status": "not_requested",
      "requestProfiles": [],
      "paths": [],
      "invalidPaths": [],
      "limitations": []
    },
    "policyGoalAlignment": {
      "rulesVersion": "ofb-policy-alignment-r1-2026-08-07",
      "status": "available",
      "profiles": [
        {
          "id": "maximum_visibility",
          "label": "Maximum visibility",
          "summary": "Allow search discovery, general search, user-triggered retrieval, and model training or data-use crawlers."
        },
        {
          "id": "search_visibility_balanced",
          "label": "Search visibility, training opt-out",
          "summary": "Allow search discovery, general search, and user-triggered retrieval while blocking model-training and data-use crawlers."
        },
        {
          "id": "training_opt_out",
          "label": "Training and data-use opt-out",
          "summary": "Block model-training and data-use crawlers without asserting a preference on search or user-triggered retrieval."
        },
        {
          "id": "user_triggered_retrieval_only",
          "label": "User-triggered retrieval only",
          "summary": "Allow retrieval initiated by a user's own request in an assistant, without asserting a preference on background discovery or training."
        },
        {
          "id": "conventional_search_preserved",
          "label": "Conventional search preserved",
          "summary": "Keep conventional general-search crawling allowed without asserting a preference on AI-specific discovery, retrieval, or training crawlers."
        },
        {
          "id": "review_only",
          "label": "Review only",
          "summary": "Record the current crawler policy without recommending a change to any purpose category."
        }
      ],
      "byProfile": {
        "maximum_visibility": {
          "profileId": "maximum_visibility",
          "summary": {
            "total": 12,
            "aligned": 12,
            "conflicting": 0,
            "intentionally_restricted": 0,
            "undocumented": 0,
            "not_determined": 0
          },
          "crawlers": [
            {
              "crawlerSlug": "applebot-extended",
              "displayName": "Applebot-Extended",
              "provider": "Apple",
              "purpose": [
                "data_use_control"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Applebot-Extended",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "applebot",
              "displayName": "Applebot",
              "provider": "Apple",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Applebot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "chatgpt-user",
              "displayName": "ChatGPT-User",
              "provider": "OpenAI",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "ChatGPT-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "claude-searchbot",
              "displayName": "Claude-SearchBot",
              "provider": "Anthropic",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Claude-SearchBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "claude-user",
              "displayName": "Claude-User",
              "provider": "Anthropic",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Claude-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "claudebot",
              "displayName": "ClaudeBot",
              "provider": "Anthropic",
              "purpose": [
                "model_training"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "ClaudeBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "google-extended",
              "displayName": "Google-Extended",
              "provider": "Google",
              "purpose": [
                "data_use_control"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Google-Extended",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "googlebot",
              "displayName": "Googlebot",
              "provider": "Google",
              "purpose": [
                "general_search"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Googlebot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "gptbot",
              "displayName": "GPTBot",
              "provider": "OpenAI",
              "purpose": [
                "model_training"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "GPTBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "oai-searchbot",
              "displayName": "OAI-SearchBot",
              "provider": "OpenAI",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "OAI-SearchBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "perplexity-user",
              "displayName": "Perplexity-User",
              "provider": "Perplexity",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Perplexity-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "perplexitybot",
              "displayName": "PerplexityBot",
              "provider": "Perplexity",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "PerplexityBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            }
          ]
        },
        "search_visibility_balanced": {
          "profileId": "search_visibility_balanced",
          "summary": {
            "total": 12,
            "aligned": 8,
            "conflicting": 4,
            "intentionally_restricted": 0,
            "undocumented": 0,
            "not_determined": 0
          },
          "crawlers": [
            {
              "crawlerSlug": "applebot-extended",
              "displayName": "Applebot-Extended",
              "provider": "Apple",
              "purpose": [
                "data_use_control"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Applebot-Extended",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "conflicting",
              "reasonCode": "target_block_observed_allowed",
              "reason": "The declared goal wants this purpose blocked, but the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "applebot",
              "displayName": "Applebot",
              "provider": "Apple",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Applebot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "chatgpt-user",
              "displayName": "ChatGPT-User",
              "provider": "OpenAI",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "ChatGPT-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "claude-searchbot",
              "displayName": "Claude-SearchBot",
              "provider": "Anthropic",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Claude-SearchBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "claude-user",
              "displayName": "Claude-User",
              "provider": "Anthropic",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Claude-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "claudebot",
              "displayName": "ClaudeBot",
              "provider": "Anthropic",
              "purpose": [
                "model_training"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "ClaudeBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "conflicting",
              "reasonCode": "target_block_observed_allowed",
              "reason": "The declared goal wants this purpose blocked, but the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "google-extended",
              "displayName": "Google-Extended",
              "provider": "Google",
              "purpose": [
                "data_use_control"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Google-Extended",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "conflicting",
              "reasonCode": "target_block_observed_allowed",
              "reason": "The declared goal wants this purpose blocked, but the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "googlebot",
              "displayName": "Googlebot",
              "provider": "Google",
              "purpose": [
                "general_search"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Googlebot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "gptbot",
              "displayName": "GPTBot",
              "provider": "OpenAI",
              "purpose": [
                "model_training"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "GPTBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "conflicting",
              "reasonCode": "target_block_observed_allowed",
              "reason": "The declared goal wants this purpose blocked, but the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "oai-searchbot",
              "displayName": "OAI-SearchBot",
              "provider": "OpenAI",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "OAI-SearchBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "perplexity-user",
              "displayName": "Perplexity-User",
              "provider": "Perplexity",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Perplexity-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "perplexitybot",
              "displayName": "PerplexityBot",
              "provider": "Perplexity",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "PerplexityBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            }
          ]
        },
        "training_opt_out": {
          "profileId": "training_opt_out",
          "summary": {
            "total": 12,
            "aligned": 8,
            "conflicting": 4,
            "intentionally_restricted": 0,
            "undocumented": 0,
            "not_determined": 0
          },
          "crawlers": [
            {
              "crawlerSlug": "applebot-extended",
              "displayName": "Applebot-Extended",
              "provider": "Apple",
              "purpose": [
                "data_use_control"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Applebot-Extended",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "conflicting",
              "reasonCode": "target_block_observed_allowed",
              "reason": "The declared goal wants this purpose blocked, but the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "applebot",
              "displayName": "Applebot",
              "provider": "Apple",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Applebot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "chatgpt-user",
              "displayName": "ChatGPT-User",
              "provider": "OpenAI",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "ChatGPT-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "claude-searchbot",
              "displayName": "Claude-SearchBot",
              "provider": "Anthropic",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Claude-SearchBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "claude-user",
              "displayName": "Claude-User",
              "provider": "Anthropic",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Claude-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "claudebot",
              "displayName": "ClaudeBot",
              "provider": "Anthropic",
              "purpose": [
                "model_training"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "ClaudeBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "conflicting",
              "reasonCode": "target_block_observed_allowed",
              "reason": "The declared goal wants this purpose blocked, but the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "google-extended",
              "displayName": "Google-Extended",
              "provider": "Google",
              "purpose": [
                "data_use_control"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Google-Extended",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "conflicting",
              "reasonCode": "target_block_observed_allowed",
              "reason": "The declared goal wants this purpose blocked, but the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "googlebot",
              "displayName": "Googlebot",
              "provider": "Google",
              "purpose": [
                "general_search"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Googlebot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "gptbot",
              "displayName": "GPTBot",
              "provider": "OpenAI",
              "purpose": [
                "model_training"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "GPTBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "conflicting",
              "reasonCode": "target_block_observed_allowed",
              "reason": "The declared goal wants this purpose blocked, but the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "oai-searchbot",
              "displayName": "OAI-SearchBot",
              "provider": "OpenAI",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "OAI-SearchBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "perplexity-user",
              "displayName": "Perplexity-User",
              "provider": "Perplexity",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Perplexity-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "perplexitybot",
              "displayName": "PerplexityBot",
              "provider": "Perplexity",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "PerplexityBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            }
          ]
        },
        "user_triggered_retrieval_only": {
          "profileId": "user_triggered_retrieval_only",
          "summary": {
            "total": 12,
            "aligned": 12,
            "conflicting": 0,
            "intentionally_restricted": 0,
            "undocumented": 0,
            "not_determined": 0
          },
          "crawlers": [
            {
              "crawlerSlug": "applebot-extended",
              "displayName": "Applebot-Extended",
              "provider": "Apple",
              "purpose": [
                "data_use_control"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Applebot-Extended",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "applebot",
              "displayName": "Applebot",
              "provider": "Apple",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Applebot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "chatgpt-user",
              "displayName": "ChatGPT-User",
              "provider": "OpenAI",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "ChatGPT-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "claude-searchbot",
              "displayName": "Claude-SearchBot",
              "provider": "Anthropic",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Claude-SearchBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "claude-user",
              "displayName": "Claude-User",
              "provider": "Anthropic",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Claude-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "claudebot",
              "displayName": "ClaudeBot",
              "provider": "Anthropic",
              "purpose": [
                "model_training"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "ClaudeBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "google-extended",
              "displayName": "Google-Extended",
              "provider": "Google",
              "purpose": [
                "data_use_control"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Google-Extended",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "googlebot",
              "displayName": "Googlebot",
              "provider": "Google",
              "purpose": [
                "general_search"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Googlebot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "gptbot",
              "displayName": "GPTBot",
              "provider": "OpenAI",
              "purpose": [
                "model_training"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "GPTBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "oai-searchbot",
              "displayName": "OAI-SearchBot",
              "provider": "OpenAI",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "OAI-SearchBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "perplexity-user",
              "displayName": "Perplexity-User",
              "provider": "Perplexity",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Perplexity-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "perplexitybot",
              "displayName": "PerplexityBot",
              "provider": "Perplexity",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "PerplexityBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            }
          ]
        },
        "conventional_search_preserved": {
          "profileId": "conventional_search_preserved",
          "summary": {
            "total": 12,
            "aligned": 12,
            "conflicting": 0,
            "intentionally_restricted": 0,
            "undocumented": 0,
            "not_determined": 0
          },
          "crawlers": [
            {
              "crawlerSlug": "applebot-extended",
              "displayName": "Applebot-Extended",
              "provider": "Apple",
              "purpose": [
                "data_use_control"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Applebot-Extended",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "applebot",
              "displayName": "Applebot",
              "provider": "Apple",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Applebot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "chatgpt-user",
              "displayName": "ChatGPT-User",
              "provider": "OpenAI",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "ChatGPT-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "claude-searchbot",
              "displayName": "Claude-SearchBot",
              "provider": "Anthropic",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Claude-SearchBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "claude-user",
              "displayName": "Claude-User",
              "provider": "Anthropic",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Claude-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "claudebot",
              "displayName": "ClaudeBot",
              "provider": "Anthropic",
              "purpose": [
                "model_training"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "ClaudeBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "google-extended",
              "displayName": "Google-Extended",
              "provider": "Google",
              "purpose": [
                "data_use_control"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Google-Extended",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "googlebot",
              "displayName": "Googlebot",
              "provider": "Google",
              "purpose": [
                "general_search"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Googlebot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "target_allow_observed_allowed",
              "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
            },
            {
              "crawlerSlug": "gptbot",
              "displayName": "GPTBot",
              "provider": "OpenAI",
              "purpose": [
                "model_training"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "GPTBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "oai-searchbot",
              "displayName": "OAI-SearchBot",
              "provider": "OpenAI",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "OAI-SearchBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "perplexity-user",
              "displayName": "Perplexity-User",
              "provider": "Perplexity",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Perplexity-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "perplexitybot",
              "displayName": "PerplexityBot",
              "provider": "Perplexity",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "PerplexityBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            }
          ]
        },
        "review_only": {
          "profileId": "review_only",
          "summary": {
            "total": 12,
            "aligned": 12,
            "conflicting": 0,
            "intentionally_restricted": 0,
            "undocumented": 0,
            "not_determined": 0
          },
          "crawlers": [
            {
              "crawlerSlug": "applebot-extended",
              "displayName": "Applebot-Extended",
              "provider": "Apple",
              "purpose": [
                "data_use_control"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Applebot-Extended",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "applebot",
              "displayName": "Applebot",
              "provider": "Apple",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Applebot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "chatgpt-user",
              "displayName": "ChatGPT-User",
              "provider": "OpenAI",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "ChatGPT-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "claude-searchbot",
              "displayName": "Claude-SearchBot",
              "provider": "Anthropic",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Claude-SearchBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "claude-user",
              "displayName": "Claude-User",
              "provider": "Anthropic",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Claude-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "claudebot",
              "displayName": "ClaudeBot",
              "provider": "Anthropic",
              "purpose": [
                "model_training"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "ClaudeBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "google-extended",
              "displayName": "Google-Extended",
              "provider": "Google",
              "purpose": [
                "data_use_control"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Google-Extended",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "googlebot",
              "displayName": "Googlebot",
              "provider": "Google",
              "purpose": [
                "general_search"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Googlebot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "gptbot",
              "displayName": "GPTBot",
              "provider": "OpenAI",
              "purpose": [
                "model_training"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "GPTBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "oai-searchbot",
              "displayName": "OAI-SearchBot",
              "provider": "OpenAI",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "OAI-SearchBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "perplexity-user",
              "displayName": "Perplexity-User",
              "provider": "Perplexity",
              "purpose": [
                "user_triggered_retrieval"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "Perplexity-User",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            },
            {
              "crawlerSlug": "perplexitybot",
              "displayName": "PerplexityBot",
              "provider": "Perplexity",
              "purpose": [
                "search_discovery"
              ],
              "purposeConfidence": "documented",
              "robotsToken": "PerplexityBot",
              "hasDedicatedGroup": false,
              "verdict": "allowed",
              "matchedRule": "Allow: /",
              "alignment": "aligned",
              "reasonCode": "no_preference_observed_open",
              "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
            }
          ]
        }
      }
    },
    "results": [
      {
        "crawlerSlug": "applebot-extended",
        "displayName": "Applebot-Extended",
        "provider": "Apple",
        "robotsToken": "Applebot-Extended",
        "purpose": [
          "data_use_control"
        ],
        "purposeConfidence": "documented",
        "relevantToSearchVisibility": "not_direct",
        "officialDocumentationUrl": "https://support.apple.com/en-us/119829",
        "verdict": "allowed",
        "matchedGroup": "*",
        "matchedRule": "Allow: /",
        "sourceLine": 2,
        "hasDedicatedGroup": false,
        "evidence": "observed",
        "meaning": "The tested root path is explicitly allowed for the Applebot-Extended token by the matched robots.txt rule.",
        "doesNotProve": [
          "That this provider has visited the website",
          "That the page is indexed, retrieved, cited, ranked, recommended, or used for model training"
        ]
      },
      {
        "crawlerSlug": "applebot",
        "displayName": "Applebot",
        "provider": "Apple",
        "robotsToken": "Applebot",
        "purpose": [
          "search_discovery"
        ],
        "purposeConfidence": "documented",
        "relevantToSearchVisibility": "direct",
        "officialDocumentationUrl": "https://support.apple.com/en-us/119829",
        "verdict": "allowed",
        "matchedGroup": "*",
        "matchedRule": "Allow: /",
        "sourceLine": 2,
        "hasDedicatedGroup": false,
        "evidence": "observed",
        "meaning": "The tested root path is explicitly allowed for the Applebot token by the matched robots.txt rule.",
        "doesNotProve": [
          "That this provider has visited the website",
          "That the page is indexed, retrieved, cited, ranked, recommended, or used for model training"
        ]
      },
      {
        "crawlerSlug": "chatgpt-user",
        "displayName": "ChatGPT-User",
        "provider": "OpenAI",
        "robotsToken": "ChatGPT-User",
        "purpose": [
          "user_triggered_retrieval"
        ],
        "purposeConfidence": "documented",
        "relevantToSearchVisibility": "indirect",
        "officialDocumentationUrl": "https://help.openai.com/en/articles/12627856-publishers-and-developers-faq",
        "verdict": "allowed",
        "matchedGroup": "*",
        "matchedRule": "Allow: /",
        "sourceLine": 2,
        "hasDedicatedGroup": false,
        "evidence": "observed",
        "meaning": "The tested root path is explicitly allowed for the ChatGPT-User token by the matched robots.txt rule.",
        "doesNotProve": [
          "That this provider has visited the website",
          "That the page is indexed, retrieved, cited, ranked, recommended, or used for model training",
          "OAI-SearchBot discovery or GPTBot model-training crawling.",
          "Whether ChatGPT will answer a question, cite the page, or use a third-party search result."
        ]
      },
      {
        "crawlerSlug": "claude-searchbot",
        "displayName": "Claude-SearchBot",
        "provider": "Anthropic",
        "robotsToken": "Claude-SearchBot",
        "purpose": [
          "search_discovery"
        ],
        "purposeConfidence": "documented",
        "relevantToSearchVisibility": "direct",
        "officialDocumentationUrl": "https://support.anthropic.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler",
        "verdict": "allowed",
        "matchedGroup": "*",
        "matchedRule": "Allow: /",
        "sourceLine": 2,
        "hasDedicatedGroup": false,
        "evidence": "observed",
        "meaning": "The tested root path is explicitly allowed for the Claude-SearchBot token by the matched robots.txt rule.",
        "doesNotProve": [
          "That this provider has visited the website",
          "That the page is indexed, retrieved, cited, ranked, recommended, or used for model training",
          "ClaudeBot model-training collection.",
          "Claude-User requests made at a user's direction."
        ]
      },
      {
        "crawlerSlug": "claude-user",
        "displayName": "Claude-User",
        "provider": "Anthropic",
        "robotsToken": "Claude-User",
        "purpose": [
          "user_triggered_retrieval"
        ],
        "purposeConfidence": "documented",
        "relevantToSearchVisibility": "indirect",
        "officialDocumentationUrl": "https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler",
        "verdict": "allowed",
        "matchedGroup": "*",
        "matchedRule": "Allow: /",
        "sourceLine": 2,
        "hasDedicatedGroup": false,
        "evidence": "observed",
        "meaning": "The tested root path is explicitly allowed for the Claude-User token by the matched robots.txt rule.",
        "doesNotProve": [
          "That this provider has visited the website",
          "That the page is indexed, retrieved, cited, ranked, recommended, or used for model training"
        ]
      },
      {
        "crawlerSlug": "claudebot",
        "displayName": "ClaudeBot",
        "provider": "Anthropic",
        "robotsToken": "ClaudeBot",
        "purpose": [
          "model_training"
        ],
        "purposeConfidence": "documented",
        "relevantToSearchVisibility": "not_direct",
        "officialDocumentationUrl": "https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler",
        "verdict": "allowed",
        "matchedGroup": "*",
        "matchedRule": "Allow: /",
        "sourceLine": 2,
        "hasDedicatedGroup": false,
        "evidence": "observed",
        "meaning": "The tested root path is explicitly allowed for the ClaudeBot token by the matched robots.txt rule.",
        "doesNotProve": [
          "That this provider has visited the website",
          "That the page is indexed, retrieved, cited, ranked, recommended, or used for model training"
        ]
      },
      {
        "crawlerSlug": "google-extended",
        "displayName": "Google-Extended",
        "provider": "Google",
        "robotsToken": "Google-Extended",
        "purpose": [
          "data_use_control"
        ],
        "purposeConfidence": "documented",
        "relevantToSearchVisibility": "not_direct",
        "officialDocumentationUrl": "https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers#google-extended",
        "verdict": "allowed",
        "matchedGroup": "*",
        "matchedRule": "Allow: /",
        "sourceLine": 2,
        "hasDedicatedGroup": false,
        "evidence": "observed",
        "meaning": "The tested root path is explicitly allowed for the Google-Extended token by the matched robots.txt rule.",
        "doesNotProve": [
          "That this provider has visited the website",
          "That the page is indexed, retrieved, cited, ranked, recommended, or used for model training",
          "Googlebot crawling or a site's inclusion in Google Search.",
          "Eligibility for AI Overviews or AI Mode; Google documents Googlebot and standard Search controls for those features."
        ]
      },
      {
        "crawlerSlug": "googlebot",
        "displayName": "Googlebot",
        "provider": "Google",
        "robotsToken": "Googlebot",
        "purpose": [
          "general_search"
        ],
        "purposeConfidence": "documented",
        "relevantToSearchVisibility": "direct",
        "officialDocumentationUrl": "https://developers.google.com/search/docs/crawling-indexing/googlebot",
        "verdict": "allowed",
        "matchedGroup": "*",
        "matchedRule": "Allow: /",
        "sourceLine": 2,
        "hasDedicatedGroup": false,
        "evidence": "observed",
        "meaning": "The tested root path is explicitly allowed for the Googlebot token by the matched robots.txt rule.",
        "doesNotProve": [
          "That this provider has visited the website",
          "That the page is indexed, retrieved, cited, ranked, recommended, or used for model training"
        ]
      },
      {
        "crawlerSlug": "gptbot",
        "displayName": "GPTBot",
        "provider": "OpenAI",
        "robotsToken": "GPTBot",
        "purpose": [
          "model_training"
        ],
        "purposeConfidence": "documented",
        "relevantToSearchVisibility": "not_direct",
        "officialDocumentationUrl": "https://help.openai.com/en/articles/12627856-publishers-and-developers-faq",
        "verdict": "allowed",
        "matchedGroup": "*",
        "matchedRule": "Allow: /",
        "sourceLine": 2,
        "hasDedicatedGroup": false,
        "evidence": "observed",
        "meaning": "The tested root path is explicitly allowed for the GPTBot token by the matched robots.txt rule.",
        "doesNotProve": [
          "That this provider has visited the website",
          "That the page is indexed, retrieved, cited, ranked, recommended, or used for model training",
          "ChatGPT search discovery; OAI-SearchBot is the separate search crawler token.",
          "User-triggered retrieval through ChatGPT-User."
        ]
      },
      {
        "crawlerSlug": "oai-searchbot",
        "displayName": "OAI-SearchBot",
        "provider": "OpenAI",
        "robotsToken": "OAI-SearchBot",
        "purpose": [
          "search_discovery"
        ],
        "purposeConfidence": "documented",
        "relevantToSearchVisibility": "direct",
        "officialDocumentationUrl": "https://help.openai.com/en/articles/12627856-publishers-and-developers-faq",
        "verdict": "allowed",
        "matchedGroup": "*",
        "matchedRule": "Allow: /",
        "sourceLine": 2,
        "hasDedicatedGroup": false,
        "evidence": "observed",
        "meaning": "The tested root path is explicitly allowed for the OAI-SearchBot token by the matched robots.txt rule.",
        "doesNotProve": [
          "That this provider has visited the website",
          "That the page is indexed, retrieved, cited, ranked, recommended, or used for model training",
          "Potential use of content for model training; GPTBot is the separate token for that policy.",
          "Whether a user-triggered fetch succeeds in every ChatGPT workflow."
        ]
      },
      {
        "crawlerSlug": "perplexity-user",
        "displayName": "Perplexity-User",
        "provider": "Perplexity",
        "robotsToken": "Perplexity-User",
        "purpose": [
          "user_triggered_retrieval"
        ],
        "purposeConfidence": "documented",
        "relevantToSearchVisibility": "indirect",
        "officialDocumentationUrl": "https://docs.perplexity.ai/docs/resources/perplexity-crawlers",
        "verdict": "allowed",
        "matchedGroup": "*",
        "matchedRule": "Allow: /",
        "sourceLine": 2,
        "hasDedicatedGroup": false,
        "evidence": "observed",
        "meaning": "The tested root path is explicitly allowed for the Perplexity-User token by the matched robots.txt rule.",
        "doesNotProve": [
          "That this provider has visited the website",
          "That the page is indexed, retrieved, cited, ranked, recommended, or used for model training"
        ]
      },
      {
        "crawlerSlug": "perplexitybot",
        "displayName": "PerplexityBot",
        "provider": "Perplexity",
        "robotsToken": "PerplexityBot",
        "purpose": [
          "search_discovery"
        ],
        "purposeConfidence": "documented",
        "relevantToSearchVisibility": "direct",
        "officialDocumentationUrl": "https://docs.perplexity.ai/docs/resources/perplexity-crawlers",
        "verdict": "allowed",
        "matchedGroup": "*",
        "matchedRule": "Allow: /",
        "sourceLine": 2,
        "hasDedicatedGroup": false,
        "evidence": "observed",
        "meaning": "The tested root path is explicitly allowed for the PerplexityBot token by the matched robots.txt rule.",
        "doesNotProve": [
          "That this provider has visited the website",
          "That the page is indexed, retrieved, cited, ranked, recommended, or used for model training",
          "Perplexity-User requests initiated by a person using the product.",
          "Whether a page will be indexed, selected, quoted, ranked, or cited in an answer."
        ]
      }
    ],
    "unifiedReport": {
      "schemaVersion": "ofb-audit-r2.1",
      "engineVersion": "ofb-evidence-r1-2026-08-02",
      "auditId": "621e27fb-989c-460d-8a58-4f2708f44a35",
      "generatedAt": "2026-10-02T19:51:42.192Z",
      "status": "complete",
      "noScore": true,
      "capabilitySummaries": [
        {
          "capability": "robots_policy",
          "dimension": "access",
          "status": "strong",
          "label": "Policy inspected",
          "strengths": [
            "Crawler policy was retrieved and evaluated."
          ],
          "findingIds": [
            "finding.robots_policy.policy-inspected"
          ]
        },
        {
          "capability": "public_html",
          "dimension": "access",
          "status": "strong",
          "label": "Strong foundation",
          "strengths": [
            "Substantial readable content is present in the initial response."
          ],
          "findingIds": []
        },
        {
          "capability": "business_clarity",
          "dimension": "content",
          "status": "opportunity",
          "label": "Opportunities found",
          "strengths": [
            "4 clarity signals were clear."
          ],
          "findingIds": [
            "finding.business_clarity.clarity-opportunities"
          ]
        },
        {
          "capability": "structured_data",
          "dimension": "structure",
          "status": "strong",
          "label": "Valid structure",
          "strengths": [
            "2 valid JSON-LD blocks found."
          ],
          "findingIds": []
        },
        {
          "capability": "llms_txt",
          "dimension": "structure",
          "status": "opportunity",
          "label": "Review optional file",
          "strengths": [
            "The optional llms.txt file was retrieved and parsed."
          ],
          "findingIds": [
            "finding.llms_txt.review-items"
          ]
        },
        {
          "capability": "entity_trust",
          "dimension": "identity_trust",
          "status": "needs_attention",
          "label": "Needs attention",
          "strengths": [
            "2 primary identity entities found."
          ],
          "findingIds": [
            "finding.entity_trust.identity-conflicts"
          ]
        }
      ],
      "policyGoalAlignment": {
        "rulesVersion": "ofb-policy-alignment-r1-2026-08-07",
        "status": "available",
        "profiles": [
          {
            "id": "maximum_visibility",
            "label": "Maximum visibility",
            "summary": "Allow search discovery, general search, user-triggered retrieval, and model training or data-use crawlers."
          },
          {
            "id": "search_visibility_balanced",
            "label": "Search visibility, training opt-out",
            "summary": "Allow search discovery, general search, and user-triggered retrieval while blocking model-training and data-use crawlers."
          },
          {
            "id": "training_opt_out",
            "label": "Training and data-use opt-out",
            "summary": "Block model-training and data-use crawlers without asserting a preference on search or user-triggered retrieval."
          },
          {
            "id": "user_triggered_retrieval_only",
            "label": "User-triggered retrieval only",
            "summary": "Allow retrieval initiated by a user's own request in an assistant, without asserting a preference on background discovery or training."
          },
          {
            "id": "conventional_search_preserved",
            "label": "Conventional search preserved",
            "summary": "Keep conventional general-search crawling allowed without asserting a preference on AI-specific discovery, retrieval, or training crawlers."
          },
          {
            "id": "review_only",
            "label": "Review only",
            "summary": "Record the current crawler policy without recommending a change to any purpose category."
          }
        ],
        "byProfile": {
          "maximum_visibility": {
            "profileId": "maximum_visibility",
            "summary": {
              "total": 12,
              "aligned": 12,
              "conflicting": 0,
              "intentionally_restricted": 0,
              "undocumented": 0,
              "not_determined": 0
            },
            "crawlers": [
              {
                "crawlerSlug": "applebot-extended",
                "displayName": "Applebot-Extended",
                "provider": "Apple",
                "purpose": [
                  "data_use_control"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Applebot-Extended",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "applebot",
                "displayName": "Applebot",
                "provider": "Apple",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Applebot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "chatgpt-user",
                "displayName": "ChatGPT-User",
                "provider": "OpenAI",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "ChatGPT-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "claude-searchbot",
                "displayName": "Claude-SearchBot",
                "provider": "Anthropic",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Claude-SearchBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "claude-user",
                "displayName": "Claude-User",
                "provider": "Anthropic",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Claude-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "claudebot",
                "displayName": "ClaudeBot",
                "provider": "Anthropic",
                "purpose": [
                  "model_training"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "ClaudeBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "google-extended",
                "displayName": "Google-Extended",
                "provider": "Google",
                "purpose": [
                  "data_use_control"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Google-Extended",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "googlebot",
                "displayName": "Googlebot",
                "provider": "Google",
                "purpose": [
                  "general_search"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Googlebot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "gptbot",
                "displayName": "GPTBot",
                "provider": "OpenAI",
                "purpose": [
                  "model_training"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "GPTBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "oai-searchbot",
                "displayName": "OAI-SearchBot",
                "provider": "OpenAI",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "OAI-SearchBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "perplexity-user",
                "displayName": "Perplexity-User",
                "provider": "Perplexity",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Perplexity-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "perplexitybot",
                "displayName": "PerplexityBot",
                "provider": "Perplexity",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "PerplexityBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              }
            ]
          },
          "search_visibility_balanced": {
            "profileId": "search_visibility_balanced",
            "summary": {
              "total": 12,
              "aligned": 8,
              "conflicting": 4,
              "intentionally_restricted": 0,
              "undocumented": 0,
              "not_determined": 0
            },
            "crawlers": [
              {
                "crawlerSlug": "applebot-extended",
                "displayName": "Applebot-Extended",
                "provider": "Apple",
                "purpose": [
                  "data_use_control"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Applebot-Extended",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "conflicting",
                "reasonCode": "target_block_observed_allowed",
                "reason": "The declared goal wants this purpose blocked, but the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "applebot",
                "displayName": "Applebot",
                "provider": "Apple",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Applebot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "chatgpt-user",
                "displayName": "ChatGPT-User",
                "provider": "OpenAI",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "ChatGPT-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "claude-searchbot",
                "displayName": "Claude-SearchBot",
                "provider": "Anthropic",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Claude-SearchBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "claude-user",
                "displayName": "Claude-User",
                "provider": "Anthropic",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Claude-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "claudebot",
                "displayName": "ClaudeBot",
                "provider": "Anthropic",
                "purpose": [
                  "model_training"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "ClaudeBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "conflicting",
                "reasonCode": "target_block_observed_allowed",
                "reason": "The declared goal wants this purpose blocked, but the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "google-extended",
                "displayName": "Google-Extended",
                "provider": "Google",
                "purpose": [
                  "data_use_control"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Google-Extended",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "conflicting",
                "reasonCode": "target_block_observed_allowed",
                "reason": "The declared goal wants this purpose blocked, but the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "googlebot",
                "displayName": "Googlebot",
                "provider": "Google",
                "purpose": [
                  "general_search"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Googlebot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "gptbot",
                "displayName": "GPTBot",
                "provider": "OpenAI",
                "purpose": [
                  "model_training"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "GPTBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "conflicting",
                "reasonCode": "target_block_observed_allowed",
                "reason": "The declared goal wants this purpose blocked, but the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "oai-searchbot",
                "displayName": "OAI-SearchBot",
                "provider": "OpenAI",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "OAI-SearchBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "perplexity-user",
                "displayName": "Perplexity-User",
                "provider": "Perplexity",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Perplexity-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "perplexitybot",
                "displayName": "PerplexityBot",
                "provider": "Perplexity",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "PerplexityBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              }
            ]
          },
          "training_opt_out": {
            "profileId": "training_opt_out",
            "summary": {
              "total": 12,
              "aligned": 8,
              "conflicting": 4,
              "intentionally_restricted": 0,
              "undocumented": 0,
              "not_determined": 0
            },
            "crawlers": [
              {
                "crawlerSlug": "applebot-extended",
                "displayName": "Applebot-Extended",
                "provider": "Apple",
                "purpose": [
                  "data_use_control"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Applebot-Extended",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "conflicting",
                "reasonCode": "target_block_observed_allowed",
                "reason": "The declared goal wants this purpose blocked, but the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "applebot",
                "displayName": "Applebot",
                "provider": "Apple",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Applebot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "chatgpt-user",
                "displayName": "ChatGPT-User",
                "provider": "OpenAI",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "ChatGPT-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "claude-searchbot",
                "displayName": "Claude-SearchBot",
                "provider": "Anthropic",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Claude-SearchBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "claude-user",
                "displayName": "Claude-User",
                "provider": "Anthropic",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Claude-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "claudebot",
                "displayName": "ClaudeBot",
                "provider": "Anthropic",
                "purpose": [
                  "model_training"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "ClaudeBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "conflicting",
                "reasonCode": "target_block_observed_allowed",
                "reason": "The declared goal wants this purpose blocked, but the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "google-extended",
                "displayName": "Google-Extended",
                "provider": "Google",
                "purpose": [
                  "data_use_control"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Google-Extended",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "conflicting",
                "reasonCode": "target_block_observed_allowed",
                "reason": "The declared goal wants this purpose blocked, but the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "googlebot",
                "displayName": "Googlebot",
                "provider": "Google",
                "purpose": [
                  "general_search"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Googlebot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "gptbot",
                "displayName": "GPTBot",
                "provider": "OpenAI",
                "purpose": [
                  "model_training"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "GPTBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "conflicting",
                "reasonCode": "target_block_observed_allowed",
                "reason": "The declared goal wants this purpose blocked, but the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "oai-searchbot",
                "displayName": "OAI-SearchBot",
                "provider": "OpenAI",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "OAI-SearchBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "perplexity-user",
                "displayName": "Perplexity-User",
                "provider": "Perplexity",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Perplexity-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "perplexitybot",
                "displayName": "PerplexityBot",
                "provider": "Perplexity",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "PerplexityBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              }
            ]
          },
          "user_triggered_retrieval_only": {
            "profileId": "user_triggered_retrieval_only",
            "summary": {
              "total": 12,
              "aligned": 12,
              "conflicting": 0,
              "intentionally_restricted": 0,
              "undocumented": 0,
              "not_determined": 0
            },
            "crawlers": [
              {
                "crawlerSlug": "applebot-extended",
                "displayName": "Applebot-Extended",
                "provider": "Apple",
                "purpose": [
                  "data_use_control"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Applebot-Extended",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "applebot",
                "displayName": "Applebot",
                "provider": "Apple",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Applebot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "chatgpt-user",
                "displayName": "ChatGPT-User",
                "provider": "OpenAI",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "ChatGPT-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "claude-searchbot",
                "displayName": "Claude-SearchBot",
                "provider": "Anthropic",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Claude-SearchBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "claude-user",
                "displayName": "Claude-User",
                "provider": "Anthropic",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Claude-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "claudebot",
                "displayName": "ClaudeBot",
                "provider": "Anthropic",
                "purpose": [
                  "model_training"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "ClaudeBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "google-extended",
                "displayName": "Google-Extended",
                "provider": "Google",
                "purpose": [
                  "data_use_control"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Google-Extended",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "googlebot",
                "displayName": "Googlebot",
                "provider": "Google",
                "purpose": [
                  "general_search"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Googlebot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "gptbot",
                "displayName": "GPTBot",
                "provider": "OpenAI",
                "purpose": [
                  "model_training"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "GPTBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "oai-searchbot",
                "displayName": "OAI-SearchBot",
                "provider": "OpenAI",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "OAI-SearchBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "perplexity-user",
                "displayName": "Perplexity-User",
                "provider": "Perplexity",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Perplexity-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "perplexitybot",
                "displayName": "PerplexityBot",
                "provider": "Perplexity",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "PerplexityBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              }
            ]
          },
          "conventional_search_preserved": {
            "profileId": "conventional_search_preserved",
            "summary": {
              "total": 12,
              "aligned": 12,
              "conflicting": 0,
              "intentionally_restricted": 0,
              "undocumented": 0,
              "not_determined": 0
            },
            "crawlers": [
              {
                "crawlerSlug": "applebot-extended",
                "displayName": "Applebot-Extended",
                "provider": "Apple",
                "purpose": [
                  "data_use_control"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Applebot-Extended",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "applebot",
                "displayName": "Applebot",
                "provider": "Apple",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Applebot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "chatgpt-user",
                "displayName": "ChatGPT-User",
                "provider": "OpenAI",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "ChatGPT-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "claude-searchbot",
                "displayName": "Claude-SearchBot",
                "provider": "Anthropic",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Claude-SearchBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "claude-user",
                "displayName": "Claude-User",
                "provider": "Anthropic",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Claude-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "claudebot",
                "displayName": "ClaudeBot",
                "provider": "Anthropic",
                "purpose": [
                  "model_training"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "ClaudeBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "google-extended",
                "displayName": "Google-Extended",
                "provider": "Google",
                "purpose": [
                  "data_use_control"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Google-Extended",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "googlebot",
                "displayName": "Googlebot",
                "provider": "Google",
                "purpose": [
                  "general_search"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Googlebot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "target_allow_observed_allowed",
                "reason": "The declared goal wants this purpose allowed, and the observed robots.txt rule leaves this crawler explicitly allowed."
              },
              {
                "crawlerSlug": "gptbot",
                "displayName": "GPTBot",
                "provider": "OpenAI",
                "purpose": [
                  "model_training"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "GPTBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "oai-searchbot",
                "displayName": "OAI-SearchBot",
                "provider": "OpenAI",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "OAI-SearchBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "perplexity-user",
                "displayName": "Perplexity-User",
                "provider": "Perplexity",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Perplexity-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "perplexitybot",
                "displayName": "PerplexityBot",
                "provider": "Perplexity",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "PerplexityBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              }
            ]
          },
          "review_only": {
            "profileId": "review_only",
            "summary": {
              "total": 12,
              "aligned": 12,
              "conflicting": 0,
              "intentionally_restricted": 0,
              "undocumented": 0,
              "not_determined": 0
            },
            "crawlers": [
              {
                "crawlerSlug": "applebot-extended",
                "displayName": "Applebot-Extended",
                "provider": "Apple",
                "purpose": [
                  "data_use_control"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Applebot-Extended",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "applebot",
                "displayName": "Applebot",
                "provider": "Apple",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Applebot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "chatgpt-user",
                "displayName": "ChatGPT-User",
                "provider": "OpenAI",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "ChatGPT-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "claude-searchbot",
                "displayName": "Claude-SearchBot",
                "provider": "Anthropic",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Claude-SearchBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "claude-user",
                "displayName": "Claude-User",
                "provider": "Anthropic",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Claude-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "claudebot",
                "displayName": "ClaudeBot",
                "provider": "Anthropic",
                "purpose": [
                  "model_training"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "ClaudeBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "google-extended",
                "displayName": "Google-Extended",
                "provider": "Google",
                "purpose": [
                  "data_use_control"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Google-Extended",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "googlebot",
                "displayName": "Googlebot",
                "provider": "Google",
                "purpose": [
                  "general_search"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Googlebot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "gptbot",
                "displayName": "GPTBot",
                "provider": "OpenAI",
                "purpose": [
                  "model_training"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "GPTBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "oai-searchbot",
                "displayName": "OAI-SearchBot",
                "provider": "OpenAI",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "OAI-SearchBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "perplexity-user",
                "displayName": "Perplexity-User",
                "provider": "Perplexity",
                "purpose": [
                  "user_triggered_retrieval"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "Perplexity-User",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              },
              {
                "crawlerSlug": "perplexitybot",
                "displayName": "PerplexityBot",
                "provider": "Perplexity",
                "purpose": [
                  "search_discovery"
                ],
                "purposeConfidence": "documented",
                "robotsToken": "PerplexityBot",
                "hasDedicatedGroup": false,
                "verdict": "allowed",
                "matchedRule": "Allow: /",
                "alignment": "aligned",
                "reasonCode": "no_preference_observed_open",
                "reason": "No target state was declared for this purpose, and the crawler is explicitly allowed."
              }
            ]
          }
        }
      },
      "deliveryDiagnostics": {
        "rulesVersion": "ofb-delivery-diagnostics-r1-2026-08-07",
        "status": "not_requested",
        "requestProfiles": [],
        "paths": [],
        "invalidPaths": [],
        "limitations": []
      },
      "remediation": {
        "rulesVersion": "ofb-remediation-r1-2026-08-07",
        "robotsGoalPatches": {
          "search_visibility_balanced": [
            {
              "crawlerSlug": "applebot-extended",
              "robotsToken": "Applebot-Extended",
              "patchable": true,
              "snippet": "User-agent: Applebot-Extended\nDisallow: /",
              "explanation": "Applebot-Extended currently has no dedicated robots.txt group, so it falls back to the wildcard rule. Appending this group makes it explicitly blocked, matching the selected policy goal, without changing any existing directive."
            },
            {
              "crawlerSlug": "claudebot",
              "robotsToken": "ClaudeBot",
              "patchable": true,
              "snippet": "User-agent: ClaudeBot\nDisallow: /",
              "explanation": "ClaudeBot currently has no dedicated robots.txt group, so it falls back to the wildcard rule. Appending this group makes it explicitly blocked, matching the selected policy goal, without changing any existing directive."
            },
            {
              "crawlerSlug": "google-extended",
              "robotsToken": "Google-Extended",
              "patchable": true,
              "snippet": "User-agent: Google-Extended\nDisallow: /",
              "explanation": "Google-Extended currently has no dedicated robots.txt group, so it falls back to the wildcard rule. Appending this group makes it explicitly blocked, matching the selected policy goal, without changing any existing directive."
            },
            {
              "crawlerSlug": "gptbot",
              "robotsToken": "GPTBot",
              "patchable": true,
              "snippet": "User-agent: GPTBot\nDisallow: /",
              "explanation": "GPTBot currently has no dedicated robots.txt group, so it falls back to the wildcard rule. Appending this group makes it explicitly blocked, matching the selected policy goal, without changing any existing directive."
            }
          ],
          "training_opt_out": [
            {
              "crawlerSlug": "applebot-extended",
              "robotsToken": "Applebot-Extended",
              "patchable": true,
              "snippet": "User-agent: Applebot-Extended\nDisallow: /",
              "explanation": "Applebot-Extended currently has no dedicated robots.txt group, so it falls back to the wildcard rule. Appending this group makes it explicitly blocked, matching the selected policy goal, without changing any existing directive."
            },
            {
              "crawlerSlug": "claudebot",
              "robotsToken": "ClaudeBot",
              "patchable": true,
              "snippet": "User-agent: ClaudeBot\nDisallow: /",
              "explanation": "ClaudeBot currently has no dedicated robots.txt group, so it falls back to the wildcard rule. Appending this group makes it explicitly blocked, matching the selected policy goal, without changing any existing directive."
            },
            {
              "crawlerSlug": "google-extended",
              "robotsToken": "Google-Extended",
              "patchable": true,
              "snippet": "User-agent: Google-Extended\nDisallow: /",
              "explanation": "Google-Extended currently has no dedicated robots.txt group, so it falls back to the wildcard rule. Appending this group makes it explicitly blocked, matching the selected policy goal, without changing any existing directive."
            },
            {
              "crawlerSlug": "gptbot",
              "robotsToken": "GPTBot",
              "patchable": true,
              "snippet": "User-agent: GPTBot\nDisallow: /",
              "explanation": "GPTBot currently has no dedicated robots.txt group, so it falls back to the wildcard rule. Appending this group makes it explicitly blocked, matching the selected policy goal, without changing any existing directive."
            }
          ]
        },
        "deliveryGuidance": [],
        "llmsTxtGuidance": [
          {
            "issue": "duplicate_links",
            "relatedFindingId": "finding.llms_txt.review-items",
            "guidance": "2 destinations are listed more than once (https://invoicecraftly.com/privacy, https://invoicecraftly.com/security). Remove the duplicate lines and keep one canonical entry per resource."
          }
        ]
      },
      "observations": [
        {
          "id": "obs.business_clarity.clear-count",
          "capability": "business_clarity",
          "dimension": "content",
          "evidence": "heuristic",
          "value": 4,
          "source": null
        },
        {
          "id": "obs.business_clarity.limited-count",
          "capability": "business_clarity",
          "dimension": "content",
          "evidence": "heuristic",
          "value": 2,
          "source": null
        },
        {
          "id": "obs.business_clarity.missing-count",
          "capability": "business_clarity",
          "dimension": "content",
          "evidence": "heuristic",
          "value": 0,
          "source": null
        },
        {
          "id": "obs.business_clarity.status",
          "capability": "business_clarity",
          "dimension": "content",
          "evidence": "heuristic",
          "value": "available",
          "source": "https://invoicecraftly.com/"
        },
        {
          "id": "obs.entity_trust.opportunity-count",
          "capability": "entity_trust",
          "dimension": "identity_trust",
          "evidence": "observed",
          "value": 0,
          "source": null
        },
        {
          "id": "obs.entity_trust.primary-count",
          "capability": "entity_trust",
          "dimension": "identity_trust",
          "evidence": "observed",
          "value": 2,
          "source": null
        },
        {
          "id": "obs.entity_trust.status",
          "capability": "entity_trust",
          "dimension": "identity_trust",
          "evidence": "observed",
          "value": "available",
          "source": "https://invoicecraftly.com/"
        },
        {
          "id": "obs.entity_trust.warning-count",
          "capability": "entity_trust",
          "dimension": "identity_trust",
          "evidence": "observed",
          "value": 1,
          "source": null
        },
        {
          "id": "obs.llms_txt.opportunity-count",
          "capability": "llms_txt",
          "dimension": "structure",
          "evidence": "observed",
          "value": 1,
          "source": null
        },
        {
          "id": "obs.llms_txt.status",
          "capability": "llms_txt",
          "dimension": "structure",
          "evidence": "observed",
          "value": "available",
          "source": "https://invoicecraftly.com/llms.txt"
        },
        {
          "id": "obs.llms_txt.warning-count",
          "capability": "llms_txt",
          "dimension": "structure",
          "evidence": "observed",
          "value": 0,
          "source": null
        },
        {
          "id": "obs.public_html.http-status",
          "capability": "public_html",
          "dimension": "access",
          "evidence": "observed",
          "value": 200,
          "source": "https://invoicecraftly.com/"
        },
        {
          "id": "obs.public_html.meaningful-content",
          "capability": "public_html",
          "dimension": "access",
          "evidence": "heuristic",
          "value": true,
          "source": "https://invoicecraftly.com/"
        },
        {
          "id": "obs.public_html.status",
          "capability": "public_html",
          "dimension": "access",
          "evidence": "observed",
          "value": "available",
          "source": "https://invoicecraftly.com/"
        },
        {
          "id": "obs.public_html.word-count",
          "capability": "public_html",
          "dimension": "access",
          "evidence": "heuristic",
          "value": 1470,
          "source": "https://invoicecraftly.com/"
        },
        {
          "id": "obs.robots_policy.blocked-count",
          "capability": "robots_policy",
          "dimension": "access",
          "evidence": "observed",
          "value": 0,
          "source": "https://invoicecraftly.com/robots.txt"
        },
        {
          "id": "obs.robots_policy.search-blocked-count",
          "capability": "robots_policy",
          "dimension": "access",
          "evidence": "observed",
          "value": 0,
          "source": "https://invoicecraftly.com/robots.txt"
        },
        {
          "id": "obs.robots_policy.status",
          "capability": "robots_policy",
          "dimension": "access",
          "evidence": "observed",
          "value": "available",
          "source": "https://invoicecraftly.com/robots.txt"
        },
        {
          "id": "obs.structured_data.entity-count",
          "capability": "structured_data",
          "dimension": "structure",
          "evidence": "observed",
          "value": 6,
          "source": null
        },
        {
          "id": "obs.structured_data.fail-count",
          "capability": "structured_data",
          "dimension": "structure",
          "evidence": "observed",
          "value": 0,
          "source": null
        },
        {
          "id": "obs.structured_data.malformed-count",
          "capability": "structured_data",
          "dimension": "structure",
          "evidence": "observed",
          "value": 0,
          "source": null
        },
        {
          "id": "obs.structured_data.status",
          "capability": "structured_data",
          "dimension": "structure",
          "evidence": "observed",
          "value": "available",
          "source": "https://invoicecraftly.com/"
        },
        {
          "id": "obs.structured_data.warning-count",
          "capability": "structured_data",
          "dimension": "structure",
          "evidence": "observed",
          "value": 0,
          "source": null
        }
      ],
      "findings": [
        {
          "id": "finding.business_clarity.clarity-opportunities",
          "findingId": "finding.business_clarity.clarity-opportunities",
          "capability": "business_clarity",
          "category": "content",
          "criterionId": "BUSINESS-CLARITY-HEURISTIC-001",
          "criterion": {
            "id": "BUSINESS-CLARITY-HEURISTIC-001",
            "version": "1.0.0",
            "title": "Homepage wording provides explicit business and audience signals",
            "description": "Applies bounded wording heuristics to the inspected initial HTML.",
            "passCondition": "The supported clarity signals are sufficiently explicit under the current heuristic.",
            "failCondition": null,
            "unknownCondition": "Required initial HTML wording is unavailable.",
            "limitations": [
              "This is a heuristic and does not measure AI-provider understanding, trust, ranking or citation."
            ]
          },
          "status": "opportunity",
          "resultStatus": "opportunity",
          "verificationStatus": "not_started",
          "title": "2 public-copy opportunities found",
          "meaning": "Identity signal is not explicit; Audience language was not explicit",
          "observedFact": "Identity signal is not explicit; Audience language was not explicit",
          "interpretation": "Identity signal is not explicit; Audience language was not explicit",
          "limitation": "These are rule-based wording signals and do not measure provider understanding.",
          "doesNotProve": [
            "These are rule-based wording signals and do not measure provider understanding."
          ],
          "severity": "low",
          "confidence": "medium",
          "evidenceTypes": [
            "heuristic"
          ],
          "evidenceIds": [
            "obs.business_clarity.identity",
            "obs.business_clarity.audience"
          ],
          "targetHostname": "invoicecraftly.com",
          "targetUrl": "https://invoicecraftly.com/",
          "resourceType": "html",
          "testedUserAgent": null,
          "checkTimestamp": "2026-10-02T19:51:42.192Z",
          "auditId": "621e27fb-989c-460d-8a58-4f2708f44a35",
          "request": {
            "method": "GET",
            "url": "https://invoicecraftly.com/"
          },
          "response": {
            "statusCode": 200,
            "contentType": "text/html; charset=utf-8",
            "durationMs": 311
          },
          "rawEvidence": "[\n  {\n    \"id\": \"identity\",\n    \"status\": \"limited_signal\",\n    \"title\": \"Identity signal is not explicit\",\n    \"summary\": \"The hostname brand token was not found in the inspected title, H1, or opening copy. This can be legitimate when the domain differs from the public brand.\",\n    \"evidence\": \"heuristic\",\n    \"observedValue\": \"invoicecraftly\",\n    \"recommendation\": \"Make the public business or product name explicit in a prominent field and verify it manually.\",\n    \"doesNotProve\": \"This wording check does not establish how any search or AI system interprets, ranks, cites, or recommends the page.\"\n  },\n  {\n    \"id\": \"audience\",\n    \"status\": \"limited_signal\",\n    \"title\": \"Audience language was not explicit\",\n    \"summary\": \"No common explicit audience phrase was detected in the inspected fields.\",\n    \"evidence\": \"heuristic\",\n    \"observedValue\": \"Free Invoice Generator — No Signup, Logo and Payment QR Create invoices, quotes, estimates, proforma invoices, receipts and credit notes free in your browser. No signup. Add your logo and export PDF, PNG, SVG or CSV. Free invoice generator \",\n    \"recommendation\": \"Name the primary user, customer, or organization type when it improves clarity.\",\n    \"doesNotProve\": \"This wording check does not establish how any search or AI system interprets, ranks, cites, or recommends the page.\"\n  }\n]",
          "evidenceLocation": "server-delivered homepage wording",
          "providerRelevance": null,
          "sourceReferences": [],
          "recommendedAction": "Make the product or organization, intended audience and practical outcome explicit in prominent server-delivered copy.",
          "whyItMatters": "Explicit wording reduces ambiguity in the bounded content signals OpenForBots can inspect.",
          "implementationHint": "Revise the title, primary heading or opening copy where the reported signal is limited, then deploy and rerun.",
          "verificationCondition": "A fresh business-clarity check no longer reports the same limited or missing wording signals.",
          "verificationCommand": "curl -i 'https://invoicecraftly.com/'",
          "estimatedEffort": "small"
        },
        {
          "id": "finding.entity_trust.identity-conflicts",
          "findingId": "finding.entity_trust.identity-conflicts",
          "capability": "entity_trust",
          "category": "identity",
          "criterionId": "ENTITY-SIGNALS-001",
          "criterion": {
            "id": "ENTITY-SIGNALS-001",
            "version": "1.0.0",
            "title": "Public identity signals can be inspected consistently",
            "description": "Reviews supported public entity, naming, relationship and trust-link signals without converting them into a trust score.",
            "passCondition": "Supported signals can be inspected without a confirmed inconsistency requiring attention.",
            "failCondition": null,
            "unknownCondition": "Required public source evidence is unavailable.",
            "limitations": [
              "Observed identity signals do not prove provider recognition, trust, knowledge-graph inclusion, ranking or citation."
            ]
          },
          "status": "needs_attention",
          "resultStatus": "needs_attention",
          "verificationStatus": "not_started",
          "title": "1 identity consistency warning found",
          "meaning": "Structured and visible identity signals contain a conflict or malformed value.",
          "observedFact": "Structured and visible identity signals contain a conflict or malformed value.",
          "interpretation": "Structured and visible identity signals contain a conflict or malformed value.",
          "limitation": "This does not prove external entity recognition or profile ownership.",
          "doesNotProve": [
            "This does not prove external entity recognition or profile ownership."
          ],
          "severity": "high",
          "confidence": "high",
          "evidenceTypes": [
            "observed"
          ],
          "evidenceIds": [
            "obs.entity_trust.warning-count"
          ],
          "targetHostname": "invoicecraftly.com",
          "targetUrl": "https://invoicecraftly.com/",
          "resourceType": "html",
          "testedUserAgent": null,
          "checkTimestamp": "2026-10-02T19:51:42.192Z",
          "auditId": "621e27fb-989c-460d-8a58-4f2708f44a35",
          "request": {
            "method": "GET",
            "url": "https://invoicecraftly.com/"
          },
          "response": {
            "statusCode": 200,
            "contentType": "text/html; charset=utf-8",
            "durationMs": 311
          },
          "rawEvidence": "[\n  {\n    \"id\": \"primary_entities\",\n    \"status\": \"pass\",\n    \"evidence\": \"observed\",\n    \"title\": \"2 primary identity entities found\",\n    \"meaning\": \"Structured data declares Organization, WebSite.\",\n    \"recommendedAction\": null\n  },\n  {\n    \"id\": \"stable_ids\",\n    \"status\": \"pass\",\n    \"evidence\": \"observed\",\n    \"title\": \"Primary entities use stable identifiers\",\n    \"meaning\": \"2 primary entities expose an @id.\",\n    \"recommendedAction\": null\n  },\n  {\n    \"id\": \"logo\",\n    \"status\": \"pass\",\n    \"evidence\": \"observed\",\n    \"title\": \"Structured identity image found\",\n    \"meaning\": \"1 primary entities expose a logo or image property.\",\n    \"recommendedAction\": null\n  },\n  {\n    \"id\": \"same_as\",\n    \"status\": \"pass\",\n    \"evidence\": \"observed\",\n    \"title\": \"2 declared profile links found\",\n    \"meaning\": \"The page declares external identity relationships through sameAs.\",\n    \"recommendedAction\": null\n  },\n  {\n    \"id\": \"name_consistency\",\n    \"status\": \"warning\",\n    \"evidence\": \"heuristic\",\n    \"title\": \"Visible and structured identity names may conflict\",\n    \"meaning\": \"Visible text and structured names did not share a clear normalized match. Structured names: InvoiceCraftly.\",\n    \"recommendedAction\": \"Review title, H1 and primary structured-data names for a consistent public identity.\"\n  },\n  {\n    \"id\": \"trust_pages\",\n    \"status\": \"pass\",\n    \"evidence\": \"observed\",\n    \"title\": \"4 trust-page links found\",\n    \"meaning\": \"Homepage links expose: about, contact, privacy, legal.\",\n    \"recommendedAction\": null\n  },\n  {\n    \"id\": \"relationships\",\n    \"status\": \"pass\",\n    \"evidence\": \"observed\",\n    \"title\": \"Publisher or author relationships found\",\n    \"meaning\": \"2 structured entities expose publisher or author properties.\",\n    \"recommendedAction\": null\n  }\n]",
          "evidenceLocation": "homepage identity and structured-data signals",
          "providerRelevance": null,
          "sourceReferences": [],
          "recommendedAction": "Align visible names, structured names, stable identifiers and official profile URLs.",
          "whyItMatters": "Conflicting public identity declarations make the site less internally consistent for systems and people interpreting the entity.",
          "implementationHint": "Correct the conflicting visible or structured identity values at their source, deploy, then rerun.",
          "verificationCondition": "A fresh identity inspection no longer reports the current consistency warning.",
          "verificationCommand": "curl -i 'https://invoicecraftly.com/'",
          "estimatedEffort": "medium"
        },
        {
          "id": "finding.llms_txt.review-items",
          "findingId": "finding.llms_txt.review-items",
          "capability": "llms_txt",
          "category": "structure",
          "criterionId": "LLMS-TXT-INSPECTION-001",
          "criterion": {
            "id": "LLMS-TXT-INSPECTION-001",
            "version": "1.0.0",
            "title": "Optional llms.txt resource can be inspected when present",
            "description": "Checks the optional root-level llms.txt convention for availability and supported syntax/navigation review items.",
            "passCondition": "When present, the resource is retrievable and does not trigger supported review findings.",
            "failCondition": null,
            "unknownCondition": "The resource state cannot be safely determined.",
            "limitations": [
              "llms.txt is an emerging optional convention and is not a universal crawling, ranking or citation requirement."
            ]
          },
          "status": "opportunity",
          "resultStatus": "opportunity",
          "verificationStatus": "not_started",
          "title": "1 llms.txt review item found",
          "meaning": "The optional file contains syntax, link or navigation opportunities.",
          "observedFact": "The optional file contains syntax, link or navigation opportunities.",
          "interpretation": "The optional file contains syntax, link or navigation opportunities.",
          "limitation": "These findings do not imply provider support or visibility impact.",
          "doesNotProve": [
            "These findings do not imply provider support or visibility impact."
          ],
          "severity": "low",
          "confidence": "high",
          "evidenceTypes": [
            "observed"
          ],
          "evidenceIds": [
            "obs.llms_txt.warning-count",
            "obs.llms_txt.opportunity-count"
          ],
          "targetHostname": "invoicecraftly.com",
          "targetUrl": "https://invoicecraftly.com/llms.txt",
          "resourceType": "llms.txt",
          "testedUserAgent": null,
          "checkTimestamp": "2026-10-02T19:51:42.192Z",
          "auditId": "621e27fb-989c-460d-8a58-4f2708f44a35",
          "request": {
            "method": "GET",
            "url": "https://invoicecraftly.com/llms.txt"
          },
          "response": {
            "statusCode": 200,
            "contentType": "text/plain; charset=utf-8"
          },
          "rawEvidence": "[\n  {\n    \"id\": \"duplicate_links\",\n    \"status\": \"opportunity\",\n    \"evidence\": \"observed\",\n    \"title\": \"2 duplicate destinations\",\n    \"meaning\": \"One or more resources are listed more than once.\",\n    \"recommendedAction\": \"Remove unintentional duplicates to keep the file concise.\"\n  }\n]",
          "evidenceLocation": "root llms.txt parsed findings",
          "providerRelevance": null,
          "sourceReferences": [],
          "recommendedAction": "Correct the observed llms.txt syntax or link issues and keep the optional file concise and canonical.",
          "whyItMatters": "If you publish the optional convention, keeping it internally consistent makes it more useful to systems that choose to inspect it.",
          "implementationHint": "Edit the root llms.txt file, deploy it, then rerun the audit.",
          "verificationCondition": "A fresh llms.txt inspection no longer reports the current supported review items.",
          "verificationCommand": "curl -i 'https://invoicecraftly.com/llms.txt'",
          "estimatedEffort": "small"
        },
        {
          "id": "finding.robots_policy.policy-inspected",
          "findingId": "finding.robots_policy.policy-inspected",
          "capability": "robots_policy",
          "category": "access",
          "criterionId": "ROBOTS-SEARCH-ACCESS-001",
          "criterion": {
            "id": "ROBOTS-SEARCH-ACCESS-001",
            "version": "1.0.0",
            "title": "Search-relevant crawler token is not explicitly denied for the tested path",
            "description": "Evaluates the robots.txt group and rule that applies to a documented crawler token for the tested public path.",
            "passCondition": "No applicable blocking Disallow rule is matched for the tested crawler token and path.",
            "failCondition": "An applicable robots.txt Disallow rule blocks the tested crawler token and path.",
            "unknownCondition": "The robots resource cannot be retrieved or the applicable policy cannot be determined.",
            "limitations": [
              "A robots policy instruction does not prove that the provider has visited the site.",
              "An allowed result does not prove indexing, retrieval, citation, ranking, recommendation or model use.",
              "A blocked result does not prove the provider would otherwise have used the content."
            ]
          },
          "status": "pass",
          "resultStatus": "pass",
          "verificationStatus": "not_started",
          "title": "Crawler policy was inspected",
          "meaning": "No current search-relevant crawler restriction requiring action was identified for the tested root path.",
          "observedFact": "12 registered crawler tokens were evaluated against the root path and no search-relevant crawler was found blocked.",
          "interpretation": "No current search-relevant crawler restriction requiring action was identified for the tested root path.",
          "limitation": "An allowed or unrestricted robots result does not prove provider crawling, indexing, retrieval, citation, ranking, recommendation or model use.",
          "doesNotProve": [
            "An allowed or unrestricted robots result does not prove provider crawling, indexing, retrieval, citation, ranking, recommendation or model use."
          ],
          "severity": "info",
          "confidence": "high",
          "evidenceTypes": [
            "observed"
          ],
          "evidenceIds": [
            "obs.robots_policy.status",
            "obs.robots_policy.blocked-count"
          ],
          "targetHostname": "invoicecraftly.com",
          "targetUrl": "https://invoicecraftly.com/robots.txt",
          "resourceType": "robots.txt",
          "testedUserAgent": null,
          "checkTimestamp": "2026-10-02T19:51:42.192Z",
          "auditId": null,
          "request": {
            "method": "GET",
            "url": "https://invoicecraftly.com/robots.txt"
          },
          "response": {
            "statusCode": 200
          },
          "rawEvidence": "0 search-relevant crawler restrictions observed",
          "evidenceLocation": "root robots.txt resource",
          "providerRelevance": null,
          "sourceReferences": [],
          "recommendedAction": null,
          "whyItMatters": null,
          "implementationHint": null,
          "verificationCondition": null,
          "verificationCommand": "curl -i 'https://invoicecraftly.com/robots.txt'",
          "estimatedEffort": null
        }
      ],
      "recommendations": [
        {
          "id": "recommendation.clarify-homepage-positioning",
          "category": "quick_win",
          "title": "Clarify the homepage positioning",
          "action": "Make the product or organization, intended audience and practical outcome explicit in the title, H1 and opening copy.",
          "reason": "Several public-copy signals are limited or missing.",
          "capabilityIds": [
            "business_clarity",
            "public_html"
          ],
          "evidenceIds": [
            "obs.business_clarity.identity",
            "obs.business_clarity.audience"
          ],
          "effort": "small",
          "resolution": "not_yet"
        },
        {
          "id": "recommendation.resolve-identity-conflicts",
          "category": "important_improvement",
          "title": "Resolve identity inconsistencies",
          "action": "Align visible names, structured names, stable identifiers and official profile URLs.",
          "reason": "Conflicting or malformed identity signals were observed.",
          "capabilityIds": [
            "entity_trust",
            "structured_data",
            "business_clarity"
          ],
          "evidenceIds": [
            "obs.entity_trust.warning-count"
          ],
          "effort": "medium",
          "resolution": "not_yet"
        },
        {
          "id": "recommendation.refine-llms-file",
          "category": "future_enhancement",
          "title": "Refine the optional llms.txt file",
          "action": "Correct observed syntax or link issues and keep the file concise and canonical.",
          "reason": "The existing optional file contains review items.",
          "capabilityIds": [
            "llms_txt"
          ],
          "evidenceIds": [
            "obs.llms_txt.warning-count",
            "obs.llms_txt.opportunity-count"
          ],
          "effort": "small",
          "resolution": "not_yet"
        }
      ],
      "executive": {
        "summary": "All 6 audit capabilities completed. One capability requires review: identity and trust. This indicates an observed issue or policy decision to verify, not automatically a site-wide blocker. The first improvement opportunity is to make the product or organization, intended audience and practical outcome explicit in the title, H1 and opening copy. No aggregate score is produced.",
        "strengths": [
          {
            "capability": "robots_policy",
            "title": "Crawler policy was retrieved and evaluated."
          },
          {
            "capability": "public_html",
            "title": "Substantial readable content is present in the initial response."
          },
          {
            "capability": "business_clarity",
            "title": "4 clarity signals were clear."
          },
          {
            "capability": "structured_data",
            "title": "2 valid JSON-LD blocks found."
          },
          {
            "capability": "llms_txt",
            "title": "The optional llms.txt file was retrieved and parsed."
          },
          {
            "capability": "entity_trust",
            "title": "2 primary identity entities found."
          }
        ],
        "priorities": [
          "recommendation.clarify-homepage-positioning",
          "recommendation.resolve-identity-conflicts"
        ],
        "unavailableCapabilities": []
      },
      "methodology": {
        "reportVersion": "ofb-audit-r2.1",
        "evidenceEngineVersion": "ofb-evidence-r1-2026-08-02",
        "criteriaVersion": "ofb-criteria-r1-2026-08-09",
        "capabilityRuleVersions": {
          "structuredData": "ofb-jsonld-r1.1-2026-10-02",
          "llmsTxt": "ofb-llms-r1-2026-08-02",
          "entityTrust": "ofb-entity-r1-2026-08-02"
        },
        "limitations": [
          "The report analyses public technical and content signals; it does not observe provider rankings, citations, recommendations or model use.",
          "Capability summaries are evidence-backed orientations, not an aggregate score.",
          "Heuristic findings retain their underlying observations and limitations."
        ],
        "roadmapRulesVersion": "ofb-roadmap-r2-2026-08-03"
      },
      "roadmap": {
        "rulesVersion": "ofb-roadmap-r2-2026-08-03",
        "generatedAt": "2026-10-02T19:51:42.192Z",
        "status": "actionable",
        "noScore": true,
        "phases": [
          {
            "id": "access_foundations",
            "order": 1,
            "title": "Access foundations",
            "capabilities": [
              "robots_policy"
            ],
            "requiredCapabilities": [
              "robots_policy"
            ],
            "state": "complete",
            "itemIds": [],
            "completedFoundationIds": [
              "roadmap.foundation.robots_policy.1"
            ]
          },
          {
            "id": "content_clarity",
            "order": 2,
            "title": "Content clarity",
            "capabilities": [
              "public_html",
              "business_clarity"
            ],
            "requiredCapabilities": [
              "public_html"
            ],
            "state": "active",
            "itemIds": [
              "roadmap.clarify-homepage-positioning"
            ],
            "completedFoundationIds": [
              "roadmap.foundation.public_html.2",
              "roadmap.foundation.business_clarity.3"
            ]
          },
          {
            "id": "machine_readable_structure",
            "order": 3,
            "title": "Machine-readable structure",
            "capabilities": [
              "structured_data",
              "llms_txt"
            ],
            "requiredCapabilities": [
              "structured_data"
            ],
            "state": "future",
            "itemIds": [
              "roadmap.refine-llms-file"
            ],
            "completedFoundationIds": [
              "roadmap.foundation.structured_data.4",
              "roadmap.foundation.llms_txt.5"
            ]
          },
          {
            "id": "identity_trust",
            "order": 4,
            "title": "Identity and trust",
            "capabilities": [
              "entity_trust"
            ],
            "requiredCapabilities": [
              "entity_trust"
            ],
            "state": "active",
            "itemIds": [
              "roadmap.resolve-identity-conflicts"
            ],
            "completedFoundationIds": [
              "roadmap.foundation.entity_trust.6"
            ]
          },
          {
            "id": "verification_maintenance",
            "order": 5,
            "title": "Verification and maintenance",
            "capabilities": [],
            "requiredCapabilities": [],
            "state": "blocked",
            "itemIds": [
              "roadmap.verification.rerun-audit"
            ],
            "completedFoundationIds": []
          }
        ],
        "items": [
          {
            "id": "roadmap.clarify-homepage-positioning",
            "sourceRecommendationId": "recommendation.clarify-homepage-positioning",
            "phase": "content_clarity",
            "phaseOrder": 2,
            "title": "Clarify the homepage positioning",
            "action": "Make the product or organization, intended audience and practical outcome explicit in the title, H1 and opening copy.",
            "reason": "Several public-copy signals are limited or missing.",
            "category": "quick_win",
            "effort": "small",
            "capabilityIds": [
              "business_clarity",
              "public_html"
            ],
            "findingIds": [
              "finding.business_clarity.clarity-opportunities"
            ],
            "evidenceIds": [
              "obs.business_clarity.audience",
              "obs.business_clarity.identity"
            ],
            "evidence": "inferred",
            "evidenceLabels": [
              "inferred"
            ],
            "confidence": "medium",
            "dependencies": [],
            "verificationCondition": "Update the public copy, rerun the audit, and confirm the product, audience, and practical outcome signals are explicit.",
            "guidancePath": "/guides/from-search-rankings-to-ai-citations/",
            "limitation": "These are rule-based wording signals and do not measure provider understanding.",
            "state": "ready",
            "resolution": "not_started"
          },
          {
            "id": "roadmap.refine-llms-file",
            "sourceRecommendationId": "recommendation.refine-llms-file",
            "phase": "machine_readable_structure",
            "phaseOrder": 3,
            "title": "Refine the optional llms.txt file",
            "action": "Correct observed syntax or link issues and keep the file concise and canonical.",
            "reason": "The existing optional file contains review items.",
            "category": "future_enhancement",
            "effort": "small",
            "capabilityIds": [
              "llms_txt"
            ],
            "findingIds": [
              "finding.llms_txt.review-items"
            ],
            "evidenceIds": [
              "obs.llms_txt.opportunity-count",
              "obs.llms_txt.warning-count"
            ],
            "evidence": "observed",
            "evidenceLabels": [
              "observed"
            ],
            "confidence": "high",
            "dependencies": [],
            "verificationCondition": "Publish the revised optional file and confirm its links, headings, and canonical resources are parsed without review items.",
            "guidancePath": "/guides/",
            "limitation": "These findings do not imply provider support or visibility impact.",
            "state": "future",
            "resolution": "not_started"
          },
          {
            "id": "roadmap.resolve-identity-conflicts",
            "sourceRecommendationId": "recommendation.resolve-identity-conflicts",
            "phase": "identity_trust",
            "phaseOrder": 4,
            "title": "Resolve identity inconsistencies",
            "action": "Align visible names, structured names, stable identifiers and official profile URLs.",
            "reason": "Conflicting or malformed identity signals were observed.",
            "category": "important_improvement",
            "effort": "moderate",
            "capabilityIds": [
              "entity_trust",
              "structured_data",
              "business_clarity"
            ],
            "findingIds": [
              "finding.entity_trust.identity-conflicts"
            ],
            "evidenceIds": [
              "obs.entity_trust.warning-count"
            ],
            "evidence": "observed",
            "evidenceLabels": [
              "observed"
            ],
            "confidence": "high",
            "dependencies": [],
            "verificationCondition": "Align the public and structured identity declarations, then confirm the conflicting signals no longer appear.",
            "guidancePath": "/guides/",
            "limitation": "This does not prove external entity recognition or profile ownership.",
            "state": "ready",
            "resolution": "not_started"
          },
          {
            "id": "roadmap.verification.rerun-audit",
            "sourceRecommendationId": null,
            "phase": "verification_maintenance",
            "phaseOrder": 5,
            "title": "Rerun the audit and verify the completed changes",
            "action": "After deploying the roadmap changes, run a new audit and compare the public evidence with this point-in-time report.",
            "reason": "A later deterministic audit is required to verify that the public evidence changed as intended.",
            "category": "verification",
            "effort": "small",
            "capabilityIds": [
              "business_clarity",
              "entity_trust",
              "llms_txt",
              "public_html",
              "structured_data"
            ],
            "findingIds": [
              "finding.business_clarity.clarity-opportunities",
              "finding.entity_trust.identity-conflicts",
              "finding.llms_txt.review-items"
            ],
            "evidenceIds": [],
            "evidence": "manual",
            "evidenceLabels": [
              "manual"
            ],
            "confidence": "not_determined",
            "dependencies": [
              "roadmap.clarify-homepage-positioning",
              "roadmap.resolve-identity-conflicts"
            ],
            "verificationCondition": "A later audit records the new checked timestamp, rule versions, findings, and recommendation states.",
            "guidancePath": "/methodology/",
            "limitation": "A later audit can verify public technical and content evidence; it still cannot prove indexing, citation, ranking, recommendation, or model use.",
            "state": "blocked",
            "resolution": "not_started"
          }
        ],
        "nextActions": [
          "roadmap.clarify-homepage-positioning",
          "roadmap.resolve-identity-conflicts"
        ],
        "completedFoundations": [
          {
            "id": "roadmap.foundation.robots_policy.1",
            "capability": "robots_policy",
            "phase": "access_foundations",
            "title": "Crawler policy was retrieved and evaluated.",
            "state": "complete"
          },
          {
            "id": "roadmap.foundation.public_html.2",
            "capability": "public_html",
            "phase": "content_clarity",
            "title": "Substantial readable content is present in the initial response.",
            "state": "complete"
          },
          {
            "id": "roadmap.foundation.business_clarity.3",
            "capability": "business_clarity",
            "phase": "content_clarity",
            "title": "4 clarity signals were clear.",
            "state": "complete"
          },
          {
            "id": "roadmap.foundation.structured_data.4",
            "capability": "structured_data",
            "phase": "machine_readable_structure",
            "title": "2 valid JSON-LD blocks found.",
            "state": "complete"
          },
          {
            "id": "roadmap.foundation.llms_txt.5",
            "capability": "llms_txt",
            "phase": "machine_readable_structure",
            "title": "The optional llms.txt file was retrieved and parsed.",
            "state": "complete"
          },
          {
            "id": "roadmap.foundation.entity_trust.6",
            "capability": "entity_trust",
            "phase": "identity_trust",
            "title": "2 primary identity entities found.",
            "state": "complete"
          }
        ],
        "unavailableCapabilities": [],
        "limitations": [
          "Roadmap order is deterministic guidance derived from the current audit evidence, not a score or provider-outcome forecast.",
          "Resolution state does not alter the underlying observations or findings.",
          "A later audit can verify public evidence changes but cannot prove indexing, citation, ranking, recommendation, traffic, or model use."
        ]
      }
    }
  },
  "captureMethod": "live_network_runAudit"
}
