{
  "schema_version": "1.1",
  "generated_from": [
    "site-config.js",
    "data/models.json",
    "data/model-pages.json",
    "data/landing-pages.json",
    "data/setup-index.json",
    "data/trust-index.json",
    "docs-config.js",
    "faq-data.js",
    "scripts/seo/generate-landing-page-index.js",
    "scripts/seo/generate-provider-tool-landing-pages.js",
    "scripts/seo/generate-use-case-landing-pages.js",
    "scripts/seo/generate-price-comparison-landing-pages.js",
    "scripts/seo/generate-troubleshooting-error-pages.js",
    "public HTML files"
  ],
  "generated_on": "2026-05-01",
  "site": {
    "name": "CorvusLLM",
    "url": "https://corvusllm.com"
  },
  "purpose": "Public programmatic SEO index for data-driven model, comparison, commercial landing, use-case landing, setup, troubleshooting, and FAQ route families.",
  "totals": {
    "programmatic_route_records": 186,
    "unique_public_routes": 186,
    "route_families": 10,
    "active_catalog_models": 12,
    "model_family_pages": 3,
    "model_detail_pages": 12,
    "model_comparison_pages": 18,
    "landing_pages": 33,
    "provider_tool_landing_pages": 18,
    "use_case_landing_pages": 6,
    "price_comparison_pages": 4,
    "troubleshooting_error_pages": 9,
    "setup_environment_pages": 8,
    "faq_detail_pages": 103,
    "trust_reference_routes": 0,
    "docs_config_routes": 25
  },
  "generation_contract": {
    "public_routes_only": true,
    "utility_routes_excluded": true,
    "sitemap_required": true,
    "public_pages_required": true,
    "markdown_export_required": true,
    "llm_source_required": true,
    "quality_signals_required": true,
    "thin_page_policy": "Every generated page must have source-specific identity fields, crawlable HTML, a single route intent, and static links to relevant hubs.",
    "candidate_policy": "Candidate families are intentionally not sitemaped until they have distinct source data and pass the same route, query, schema, and link guards."
  },
  "route_families": [
    {
      "family": "commercial_landing_pages",
      "route_count": 5,
      "source_files": [
        "data/landing-pages.json"
      ],
      "generated_by": [
        "curated HTML plus scripts/seo/generate-landing-page-index.js"
      ],
      "min_word_count": 945,
      "min_anchor_count": 27,
      "unique_identity_hashes": 5,
      "min_content_depth_score": 2.1,
      "routes_with_low_thin_content_risk": 5,
      "routes_with_low_or_controlled_duplicate_risk": 5
    },
    {
      "family": "faq_detail_pages",
      "route_count": 103,
      "source_files": [
        "faq-data.js"
      ],
      "generated_by": [
        "scripts/generate-faq-detail-pages.js"
      ],
      "min_word_count": 296,
      "min_anchor_count": 7,
      "unique_identity_hashes": 103,
      "min_content_depth_score": 1.18,
      "routes_with_low_thin_content_risk": 8,
      "routes_with_low_or_controlled_duplicate_risk": 103
    },
    {
      "family": "model_comparison_pages",
      "route_count": 18,
      "source_files": [
        "scripts/seo/generate-model-comparison-pages.js"
      ],
      "generated_by": [
        "scripts/seo/generate-model-comparison-pages.js"
      ],
      "min_word_count": 1094,
      "min_anchor_count": 28,
      "unique_identity_hashes": 18,
      "min_content_depth_score": 1.99,
      "routes_with_low_thin_content_risk": 18,
      "routes_with_low_or_controlled_duplicate_risk": 18
    },
    {
      "family": "model_detail_pages",
      "route_count": 12,
      "source_files": [
        "data/models.json"
      ],
      "generated_by": [
        "scripts/seo/generate-model-detail-pages.js"
      ],
      "min_word_count": 1114,
      "min_anchor_count": 32,
      "unique_identity_hashes": 12,
      "min_content_depth_score": 2.03,
      "routes_with_low_thin_content_risk": 12,
      "routes_with_low_or_controlled_duplicate_risk": 12
    },
    {
      "family": "model_family_pages",
      "route_count": 3,
      "source_files": [
        "data/model-pages.json"
      ],
      "generated_by": [
        "scripts/seo/generate-model-family-pages.js"
      ],
      "min_word_count": 1484,
      "min_anchor_count": 44,
      "unique_identity_hashes": 3,
      "min_content_depth_score": 3,
      "routes_with_low_thin_content_risk": 3,
      "routes_with_low_or_controlled_duplicate_risk": 3
    },
    {
      "family": "price_comparison_pages",
      "route_count": 4,
      "source_files": [
        "data/landing-pages.json"
      ],
      "generated_by": [
        "scripts/seo/generate-price-comparison-landing-pages.js plus scripts/seo/generate-landing-page-index.js"
      ],
      "min_word_count": 1454,
      "min_anchor_count": 38,
      "unique_identity_hashes": 4,
      "min_content_depth_score": 2.91,
      "routes_with_low_thin_content_risk": 4,
      "routes_with_low_or_controlled_duplicate_risk": 4
    },
    {
      "family": "provider_tool_landing_pages",
      "route_count": 18,
      "source_files": [
        "data/landing-pages.json"
      ],
      "generated_by": [
        "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js"
      ],
      "min_word_count": 1151,
      "min_anchor_count": 45,
      "unique_identity_hashes": 18,
      "min_content_depth_score": 2.56,
      "routes_with_low_thin_content_risk": 18,
      "routes_with_low_or_controlled_duplicate_risk": 18
    },
    {
      "family": "setup_environment_pages",
      "route_count": 8,
      "source_files": [
        "data/setup-index.json"
      ],
      "generated_by": [
        "docs-config.js plus scripts/seo/apply-docs-setup-snapshots.js"
      ],
      "min_word_count": 722,
      "min_anchor_count": 18,
      "unique_identity_hashes": 8,
      "min_content_depth_score": 1.44,
      "routes_with_low_thin_content_risk": 8,
      "routes_with_low_or_controlled_duplicate_risk": 8
    },
    {
      "family": "troubleshooting_error_pages",
      "route_count": 9,
      "source_files": [
        "scripts/seo/generate-troubleshooting-error-pages.js"
      ],
      "generated_by": [
        "scripts/seo/generate-troubleshooting-error-pages.js"
      ],
      "min_word_count": 1545,
      "min_anchor_count": 26,
      "unique_identity_hashes": 9,
      "min_content_depth_score": 3,
      "routes_with_low_thin_content_risk": 9,
      "routes_with_low_or_controlled_duplicate_risk": 9
    },
    {
      "family": "use_case_landing_pages",
      "route_count": 6,
      "source_files": [
        "data/landing-pages.json"
      ],
      "generated_by": [
        "scripts/seo/generate-use-case-landing-pages.js plus scripts/seo/generate-landing-page-index.js"
      ],
      "min_word_count": 1515,
      "min_anchor_count": 35,
      "unique_identity_hashes": 6,
      "min_content_depth_score": 3,
      "routes_with_low_thin_content_risk": 6,
      "routes_with_low_or_controlled_duplicate_risk": 6
    }
  ],
  "routes": [
    {
      "family": "model_family_pages",
      "path": "/models/claude-api",
      "canonical_url": "https://corvusllm.com/models/claude-api",
      "static_file": "models-claude-api.html",
      "source_file": "data/model-pages.json",
      "source_key": "Anthropic",
      "generated_by": "scripts/seo/generate-model-family-pages.js",
      "indexation_intent": "Provider-family hub for users choosing a Claude, GPT, or GLM API model family.",
      "source_fields": {
        "provider": "Anthropic",
        "family": "Claude",
        "model_count": 6,
        "setup_path_count": 5
      },
      "required_modules": [
        "family overview",
        "model links",
        "pricing proof links",
        "setup links",
        "independent-service disclosure"
      ],
      "html_signals": {
        "title": "Claude API Models and Pricing | CorvusLLM",
        "h1": "Claude API models through CorvusLLM",
        "meta_description": "Compare Claude Haiku, Sonnet, and Opus model rows available through CorvusLLM with public slugs, prepaid rates, and official pricing references.",
        "canonical_url": "https://corvusllm.com/models/claude-api",
        "word_count": 1858,
        "static_anchor_count": 56,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DefinedTerm",
          "DefinedTermSet",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "0d27aad186d6febf2a99a87162951f091ac9c71bbd4c6e39d227527a60d8689d"
      },
      "uniqueness_contract": {
        "identity_hash": "c2fac51f079da21b58b9eff58eafb6e1999f28078ead179be852384f4b057e0a",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Provider-family hub for users choosing a Claude, GPT, or GLM API model family.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 3,
        "unique_source_field_count": 4,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_family_pages",
      "path": "/models/gpt-api",
      "canonical_url": "https://corvusllm.com/models/gpt-api",
      "static_file": "models-gpt-api.html",
      "source_file": "data/model-pages.json",
      "source_key": "OpenAI",
      "generated_by": "scripts/seo/generate-model-family-pages.js",
      "indexation_intent": "Provider-family hub for users choosing a Claude, GPT, or GLM API model family.",
      "source_fields": {
        "provider": "OpenAI",
        "family": "GPT",
        "model_count": 4,
        "setup_path_count": 5
      },
      "required_modules": [
        "family overview",
        "model links",
        "pricing proof links",
        "setup links",
        "independent-service disclosure"
      ],
      "html_signals": {
        "title": "GPT API Models and Pricing | CorvusLLM",
        "h1": "GPT API models through CorvusLLM",
        "meta_description": "Compare GPT model rows available through CorvusLLM with public slugs, prepaid pricing, official references, and OpenAI-compatible setup links.",
        "canonical_url": "https://corvusllm.com/models/gpt-api",
        "word_count": 1643,
        "static_anchor_count": 50,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DefinedTerm",
          "DefinedTermSet",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "dd0fa76f95bb3c3a639985f0610978d4240f61064eddfb24fe14240ebf15ad56"
      },
      "uniqueness_contract": {
        "identity_hash": "c9fd6fe6c149bfdb5c4b31329daaa869d6dc24e2722877564e166f749f2624d3",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Provider-family hub for users choosing a Claude, GPT, or GLM API model family.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 3,
        "unique_source_field_count": 4,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_family_pages",
      "path": "/models/glm-api",
      "canonical_url": "https://corvusllm.com/models/glm-api",
      "static_file": "models-glm-api.html",
      "source_file": "data/model-pages.json",
      "source_key": "Z.AI",
      "generated_by": "scripts/seo/generate-model-family-pages.js",
      "indexation_intent": "Provider-family hub for users choosing a Claude, GPT, or GLM API model family.",
      "source_fields": {
        "provider": "Z.AI",
        "family": "GLM",
        "model_count": 2,
        "setup_path_count": 5
      },
      "required_modules": [
        "family overview",
        "model links",
        "pricing proof links",
        "setup links",
        "independent-service disclosure"
      ],
      "html_signals": {
        "title": "GLM API Models and Pricing | CorvusLLM",
        "h1": "GLM API models through CorvusLLM",
        "meta_description": "Compare GLM model rows available through CorvusLLM with public slugs, prepaid rates, cache pricing, and official Z.AI pricing references.",
        "canonical_url": "https://corvusllm.com/models/glm-api",
        "word_count": 1484,
        "static_anchor_count": 44,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DefinedTerm",
          "DefinedTermSet",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "c4c692d0099edf900812283fecbe7339214cdc227b9cf386585745d9266d59db"
      },
      "uniqueness_contract": {
        "identity_hash": "fd22511ffd69ca92dbe0328a3aa8860c71dbb1f15c6b9948f08e4d8509fee5c0",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Provider-family hub for users choosing a Claude, GPT, or GLM API model family.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 3,
        "unique_source_field_count": 4,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_detail_pages",
      "path": "/models/claude-haiku-4-5",
      "canonical_url": "https://corvusllm.com/models/claude-haiku-4-5",
      "static_file": "models-claude-haiku-4-5.html",
      "source_file": "data/models.json",
      "source_key": "claude-haiku-4-5",
      "generated_by": "scripts/seo/generate-model-detail-pages.js",
      "indexation_intent": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
      "source_fields": {
        "model_id": "claude-haiku-4-5",
        "public_slug": "claude-haiku-4-5",
        "provider": "Anthropic",
        "family": "Claude",
        "marketing_name": "Claude Haiku 4.5",
        "checked_on": "2026-04-29",
        "corvus_input": 0.35,
        "corvus_output": 1.75,
        "corvus_cache_read": 0.035,
        "corvus_cache_write": 0.4375,
        "comparison_count": 2,
        "setup_path_count": 5
      },
      "required_modules": [
        "public slug",
        "input/output/cache pricing",
        "official source reference",
        "setup links",
        "sibling model links",
        "risk checks"
      ],
      "html_signals": {
        "title": "Claude Haiku 4.5 API Pricing and Slug | CorvusLLM",
        "h1": "Claude Haiku 4.5 API model through CorvusLLM",
        "meta_description": "Claude Haiku 4.5 through CorvusLLM: public model slug, prepaid input/output/cache pricing, official source reference, setup links, and independent-service disclosures.",
        "canonical_url": "https://corvusllm.com/models/claude-haiku-4-5",
        "word_count": 1157,
        "static_anchor_count": 36,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DataDownload",
          "Dataset",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "abf667e461642f589970a7d62ff6112f147069e4193cb5e7472a7af12eb8686b"
      },
      "uniqueness_contract": {
        "identity_hash": "42bf4e2d1b581d34d3534e5f2818e4bd1cb13a2bd777ccc6ce2cc3763757fbc4",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.1,
        "unique_source_field_count": 12,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_detail_pages",
      "path": "/models/claude-opus-4-5",
      "canonical_url": "https://corvusllm.com/models/claude-opus-4-5",
      "static_file": "models-claude-opus-4-5.html",
      "source_file": "data/models.json",
      "source_key": "claude-opus-4-5",
      "generated_by": "scripts/seo/generate-model-detail-pages.js",
      "indexation_intent": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
      "source_fields": {
        "model_id": "claude-opus-4-5",
        "public_slug": "claude-opus-4-5",
        "provider": "Anthropic",
        "family": "Claude",
        "marketing_name": "Claude Opus 4.5",
        "checked_on": "2026-04-29",
        "corvus_input": 1.75,
        "corvus_output": 8.75,
        "corvus_cache_read": 0.175,
        "corvus_cache_write": 2.1875,
        "comparison_count": 0,
        "setup_path_count": 5
      },
      "required_modules": [
        "public slug",
        "input/output/cache pricing",
        "official source reference",
        "setup links",
        "sibling model links",
        "risk checks"
      ],
      "html_signals": {
        "title": "Claude Opus 4.5 API Pricing and Slug | CorvusLLM",
        "h1": "Claude Opus 4.5 API model through CorvusLLM",
        "meta_description": "Claude Opus 4.5 through CorvusLLM: public model slug, prepaid input/output/cache pricing, official source reference, setup links, and independent-service disclosures.",
        "canonical_url": "https://corvusllm.com/models/claude-opus-4-5",
        "word_count": 1117,
        "static_anchor_count": 34,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DataDownload",
          "Dataset",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "67857f0f7a3f9cbb504c095a1b853c375fa1d5b6855afffd23578e804d2fba32"
      },
      "uniqueness_contract": {
        "identity_hash": "7d403e7c60801e3c1193508eb4f3c4528e27293e0ee5f1dba12d34cdc5106aee",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.03,
        "unique_source_field_count": 12,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_detail_pages",
      "path": "/models/claude-opus-4-6",
      "canonical_url": "https://corvusllm.com/models/claude-opus-4-6",
      "static_file": "models-claude-opus-4-6.html",
      "source_file": "data/models.json",
      "source_key": "claude-opus-4-6",
      "generated_by": "scripts/seo/generate-model-detail-pages.js",
      "indexation_intent": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
      "source_fields": {
        "model_id": "claude-opus-4-6",
        "public_slug": "claude-opus-4-6",
        "provider": "Anthropic",
        "family": "Claude",
        "marketing_name": "Claude Opus 4.6",
        "checked_on": "2026-04-29",
        "corvus_input": 1.75,
        "corvus_output": 8.75,
        "corvus_cache_read": 0.175,
        "corvus_cache_write": 2.1875,
        "comparison_count": 1,
        "setup_path_count": 5
      },
      "required_modules": [
        "public slug",
        "input/output/cache pricing",
        "official source reference",
        "setup links",
        "sibling model links",
        "risk checks"
      ],
      "html_signals": {
        "title": "Claude Opus 4.6 API Pricing and Slug | CorvusLLM",
        "h1": "Claude Opus 4.6 API model through CorvusLLM",
        "meta_description": "Claude Opus 4.6 through CorvusLLM: public model slug, prepaid input/output/cache pricing, official source reference, setup links, and independent-service disclosures.",
        "canonical_url": "https://corvusllm.com/models/claude-opus-4-6",
        "word_count": 1152,
        "static_anchor_count": 35,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DataDownload",
          "Dataset",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "9f2f3076385f88ca38da41d4ad65d35618dc463f4679531050d49f22abba46bf"
      },
      "uniqueness_contract": {
        "identity_hash": "5166417be932ecc01d44c379f7dbd8fd2a542230ca1b1cd07cd51fcd8a7329e3",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.09,
        "unique_source_field_count": 12,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_detail_pages",
      "path": "/models/claude-opus-4-7",
      "canonical_url": "https://corvusllm.com/models/claude-opus-4-7",
      "static_file": "models-claude-opus-4-7.html",
      "source_file": "data/models.json",
      "source_key": "claude-opus-4-7",
      "generated_by": "scripts/seo/generate-model-detail-pages.js",
      "indexation_intent": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
      "source_fields": {
        "model_id": "claude-opus-4-7",
        "public_slug": "claude-opus-4-7",
        "provider": "Anthropic",
        "family": "Claude",
        "marketing_name": "Claude Opus 4.7",
        "checked_on": "2026-04-29",
        "corvus_input": 1.75,
        "corvus_output": 8.75,
        "corvus_cache_read": 0.175,
        "corvus_cache_write": 2.1875,
        "comparison_count": 5,
        "setup_path_count": 5
      },
      "required_modules": [
        "public slug",
        "input/output/cache pricing",
        "official source reference",
        "setup links",
        "sibling model links",
        "risk checks"
      ],
      "html_signals": {
        "title": "Claude Opus 4.7 API Pricing and Slug | CorvusLLM",
        "h1": "Claude Opus 4.7 API model through CorvusLLM",
        "meta_description": "Claude Opus 4.7 through CorvusLLM: public model slug, prepaid input/output/cache pricing, official source reference, setup links, and independent-service disclosures.",
        "canonical_url": "https://corvusllm.com/models/claude-opus-4-7",
        "word_count": 1201,
        "static_anchor_count": 39,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DataDownload",
          "Dataset",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "b2a007b7b9b227b5f80d197c86f08b03feb54fe7c05f22fb4be6be8a62fc8b13"
      },
      "uniqueness_contract": {
        "identity_hash": "549d563ca754cb94e0a8f8c30ce6115c8e618690cbff9c9823f3a7fa405e3453",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.18,
        "unique_source_field_count": 12,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_detail_pages",
      "path": "/models/claude-sonnet-4-5",
      "canonical_url": "https://corvusllm.com/models/claude-sonnet-4-5",
      "static_file": "models-claude-sonnet-4-5.html",
      "source_file": "data/models.json",
      "source_key": "claude-sonnet-4-5",
      "generated_by": "scripts/seo/generate-model-detail-pages.js",
      "indexation_intent": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
      "source_fields": {
        "model_id": "claude-sonnet-4-5",
        "public_slug": "claude-sonnet-4-5",
        "provider": "Anthropic",
        "family": "Claude",
        "marketing_name": "Claude Sonnet 4.5",
        "checked_on": "2026-04-29",
        "corvus_input": 1.05,
        "corvus_output": 5.25,
        "corvus_cache_read": 0.105,
        "corvus_cache_write": 1.3125,
        "comparison_count": 1,
        "setup_path_count": 5
      },
      "required_modules": [
        "public slug",
        "input/output/cache pricing",
        "official source reference",
        "setup links",
        "sibling model links",
        "risk checks"
      ],
      "html_signals": {
        "title": "Claude Sonnet 4.5 API Pricing and Slug | CorvusLLM",
        "h1": "Claude Sonnet 4.5 API model through CorvusLLM",
        "meta_description": "Claude Sonnet 4.5 through CorvusLLM: public model slug, prepaid input/output/cache pricing, official source reference, setup links, and independent-service disclosures.",
        "canonical_url": "https://corvusllm.com/models/claude-sonnet-4-5",
        "word_count": 1148,
        "static_anchor_count": 35,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DataDownload",
          "Dataset",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "425db4e477f316753602dcab998b9d9e66fc8bea5d450d76a5628f4cd42b110c"
      },
      "uniqueness_contract": {
        "identity_hash": "fd456c992cad02241e2868aab413f9d1e7e0bbf0fe44cf4737f7d22d7bbd7c40",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.09,
        "unique_source_field_count": 12,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_detail_pages",
      "path": "/models/claude-sonnet-4-6",
      "canonical_url": "https://corvusllm.com/models/claude-sonnet-4-6",
      "static_file": "models-claude-sonnet-4-6.html",
      "source_file": "data/models.json",
      "source_key": "claude-sonnet-4-6",
      "generated_by": "scripts/seo/generate-model-detail-pages.js",
      "indexation_intent": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
      "source_fields": {
        "model_id": "claude-sonnet-4-6",
        "public_slug": "claude-sonnet-4-6",
        "provider": "Anthropic",
        "family": "Claude",
        "marketing_name": "Claude Sonnet 4.6",
        "checked_on": "2026-04-29",
        "corvus_input": 1.05,
        "corvus_output": 5.25,
        "corvus_cache_read": 0.105,
        "corvus_cache_write": 1.3125,
        "comparison_count": 6,
        "setup_path_count": 5
      },
      "required_modules": [
        "public slug",
        "input/output/cache pricing",
        "official source reference",
        "setup links",
        "sibling model links",
        "risk checks"
      ],
      "html_signals": {
        "title": "Claude Sonnet 4.6 API Pricing and Slug | CorvusLLM",
        "h1": "Claude Sonnet 4.6 API model through CorvusLLM",
        "meta_description": "Claude Sonnet 4.6 through CorvusLLM: public model slug, prepaid input/output/cache pricing, official source reference, setup links, and independent-service disclosures.",
        "canonical_url": "https://corvusllm.com/models/claude-sonnet-4-6",
        "word_count": 1210,
        "static_anchor_count": 40,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DataDownload",
          "Dataset",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "111bf6810be0f3317a358ea8e0ee9fa6c434bbd937a4256bca1c1a753aa14e4e"
      },
      "uniqueness_contract": {
        "identity_hash": "96c03b2f0569ba56b1d4b48b82ba3556083354cbc4861d5c7a1dcc9951260303",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.2,
        "unique_source_field_count": 12,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_detail_pages",
      "path": "/models/gpt-5-2",
      "canonical_url": "https://corvusllm.com/models/gpt-5-2",
      "static_file": "models-gpt-5-2.html",
      "source_file": "data/models.json",
      "source_key": "gpt-5.2",
      "generated_by": "scripts/seo/generate-model-detail-pages.js",
      "indexation_intent": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
      "source_fields": {
        "model_id": "gpt-5.2",
        "public_slug": "gpt-5.2",
        "provider": "OpenAI",
        "family": "GPT",
        "marketing_name": "GPT 5.2",
        "checked_on": "2026-04-29",
        "corvus_input": 0.6125,
        "corvus_output": 4.9,
        "corvus_cache_read": 0.06125,
        "corvus_cache_write": 0,
        "comparison_count": 2,
        "setup_path_count": 5
      },
      "required_modules": [
        "public slug",
        "input/output/cache pricing",
        "official source reference",
        "setup links",
        "sibling model links",
        "risk checks"
      ],
      "html_signals": {
        "title": "GPT 5.2 API Pricing and Slug | CorvusLLM",
        "h1": "GPT 5.2 API model through CorvusLLM",
        "meta_description": "GPT 5.2 through CorvusLLM: public model slug, prepaid input/output/cache pricing, official source reference, setup links, and independent-service disclosures.",
        "canonical_url": "https://corvusllm.com/models/gpt-5-2",
        "word_count": 1114,
        "static_anchor_count": 34,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DataDownload",
          "Dataset",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "b52521c050a46071b321ca78a4a8ff89eac2d0404259eacf31f8c6c7db84c4d5"
      },
      "uniqueness_contract": {
        "identity_hash": "64f9ca788c1b2f1cdf65957d899692586d9bdd330e1c488dbc2d1ca9674baf16",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.03,
        "unique_source_field_count": 12,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_detail_pages",
      "path": "/models/gpt-5-3",
      "canonical_url": "https://corvusllm.com/models/gpt-5-3",
      "static_file": "models-gpt-5-3.html",
      "source_file": "data/models.json",
      "source_key": "gpt-5.3",
      "generated_by": "scripts/seo/generate-model-detail-pages.js",
      "indexation_intent": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
      "source_fields": {
        "model_id": "gpt-5.3",
        "public_slug": "gpt-5.3",
        "provider": "OpenAI",
        "family": "GPT",
        "marketing_name": "GPT 5.3",
        "checked_on": "2026-04-29",
        "corvus_input": 0.6125,
        "corvus_output": 4.9,
        "corvus_cache_read": 0.06125,
        "corvus_cache_write": 0,
        "comparison_count": 3,
        "setup_path_count": 5
      },
      "required_modules": [
        "public slug",
        "input/output/cache pricing",
        "official source reference",
        "setup links",
        "sibling model links",
        "risk checks"
      ],
      "html_signals": {
        "title": "GPT 5.3 API Pricing and Slug | CorvusLLM",
        "h1": "GPT 5.3 API model through CorvusLLM",
        "meta_description": "GPT 5.3 through CorvusLLM: public model slug, prepaid input/output/cache pricing, official source reference, setup links, and independent-service disclosures.",
        "canonical_url": "https://corvusllm.com/models/gpt-5-3",
        "word_count": 1125,
        "static_anchor_count": 35,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DataDownload",
          "Dataset",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "6076d68adfa9d09e6659181296ad73a5ee92a3ba46bce56066e6e4b5def6ad52"
      },
      "uniqueness_contract": {
        "identity_hash": "1490ae128aa959924c3d0bee496ac9fdb7257ce8566853f344b0450e02535127",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.05,
        "unique_source_field_count": 12,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_detail_pages",
      "path": "/models/gpt-5-4",
      "canonical_url": "https://corvusllm.com/models/gpt-5-4",
      "static_file": "models-gpt-5-4.html",
      "source_file": "data/models.json",
      "source_key": "gpt-5.4",
      "generated_by": "scripts/seo/generate-model-detail-pages.js",
      "indexation_intent": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
      "source_fields": {
        "model_id": "gpt-5.4",
        "public_slug": "gpt-5.4",
        "provider": "OpenAI",
        "family": "GPT",
        "marketing_name": "GPT 5.4",
        "checked_on": "2026-04-29",
        "corvus_input": 0.875,
        "corvus_output": 5.25,
        "corvus_cache_read": 0.0875,
        "corvus_cache_write": 0,
        "comparison_count": 4,
        "setup_path_count": 5
      },
      "required_modules": [
        "public slug",
        "input/output/cache pricing",
        "official source reference",
        "setup links",
        "sibling model links",
        "risk checks"
      ],
      "html_signals": {
        "title": "GPT 5.4 API Pricing and Slug | CorvusLLM",
        "h1": "GPT 5.4 API model through CorvusLLM",
        "meta_description": "GPT 5.4 through CorvusLLM: public model slug, prepaid input/output/cache pricing, official source reference, setup links, and independent-service disclosures.",
        "canonical_url": "https://corvusllm.com/models/gpt-5-4",
        "word_count": 1138,
        "static_anchor_count": 36,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DataDownload",
          "Dataset",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "7dbf280c871d060e15e9a6daa11c08de9b821c2c38bfec6342e514081bf4791a"
      },
      "uniqueness_contract": {
        "identity_hash": "293203c4105958c10b7b8ffb69570201c645558e15681fe294ff47cbe8415a94",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.07,
        "unique_source_field_count": 12,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_detail_pages",
      "path": "/models/gpt-5-5",
      "canonical_url": "https://corvusllm.com/models/gpt-5-5",
      "static_file": "models-gpt-5-5.html",
      "source_file": "data/models.json",
      "source_key": "gpt-5.5",
      "generated_by": "scripts/seo/generate-model-detail-pages.js",
      "indexation_intent": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
      "source_fields": {
        "model_id": "gpt-5.5",
        "public_slug": "gpt-5.5",
        "provider": "OpenAI",
        "family": "GPT",
        "marketing_name": "GPT 5.5",
        "checked_on": "2026-04-29",
        "corvus_input": 1.75,
        "corvus_output": 10.5,
        "corvus_cache_read": 0.175,
        "corvus_cache_write": 0,
        "comparison_count": 5,
        "setup_path_count": 5
      },
      "required_modules": [
        "public slug",
        "input/output/cache pricing",
        "official source reference",
        "setup links",
        "sibling model links",
        "risk checks"
      ],
      "html_signals": {
        "title": "GPT 5.5 API Pricing and Slug | CorvusLLM",
        "h1": "GPT 5.5 API model through CorvusLLM",
        "meta_description": "GPT 5.5 through CorvusLLM: public model slug, prepaid input/output/cache pricing, official source reference, setup links, and independent-service disclosures.",
        "canonical_url": "https://corvusllm.com/models/gpt-5-5",
        "word_count": 1149,
        "static_anchor_count": 37,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DataDownload",
          "Dataset",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "3d55dcc45fbf14dbe81360b833ca40e9baeb1b407ffc94dfac8e3c52ec6881f3"
      },
      "uniqueness_contract": {
        "identity_hash": "d92f7a934b4b673526e0fd7a70c3977a4a397f350a125caafb509c15db00719d",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.09,
        "unique_source_field_count": 12,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_detail_pages",
      "path": "/models/glm-5-1",
      "canonical_url": "https://corvusllm.com/models/glm-5-1",
      "static_file": "models-glm-5-1.html",
      "source_file": "data/models.json",
      "source_key": "glm-5.1",
      "generated_by": "scripts/seo/generate-model-detail-pages.js",
      "indexation_intent": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
      "source_fields": {
        "model_id": "glm-5.1",
        "public_slug": "glm-5.1",
        "provider": "Z.AI",
        "family": "GLM",
        "marketing_name": "GLM 5.1",
        "checked_on": "2026-04-29",
        "corvus_input": 0.49,
        "corvus_output": 1.54,
        "corvus_cache_read": 0.091,
        "corvus_cache_write": 0,
        "comparison_count": 5,
        "setup_path_count": 5
      },
      "required_modules": [
        "public slug",
        "input/output/cache pricing",
        "official source reference",
        "setup links",
        "sibling model links",
        "risk checks"
      ],
      "html_signals": {
        "title": "GLM 5.1 API Pricing and Slug | CorvusLLM",
        "h1": "GLM 5.1 API model through CorvusLLM",
        "meta_description": "GLM 5.1 through CorvusLLM: public model slug, prepaid input/output/cache pricing, official source reference, setup links, and independent-service disclosures.",
        "canonical_url": "https://corvusllm.com/models/glm-5-1",
        "word_count": 1149,
        "static_anchor_count": 35,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DataDownload",
          "Dataset",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "3977c45cd733cf97e9e6b4e6e6f6296540c93cb09d262225c1dfd852c3fb993a"
      },
      "uniqueness_contract": {
        "identity_hash": "43753c3ebb954016dfa02d9ec776871a3fb3d4fe85dc87674f7c836d9dba4a87",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.09,
        "unique_source_field_count": 12,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_detail_pages",
      "path": "/models/glm-5",
      "canonical_url": "https://corvusllm.com/models/glm-5",
      "static_file": "models-glm-5.html",
      "source_file": "data/models.json",
      "source_key": "glm-5",
      "generated_by": "scripts/seo/generate-model-detail-pages.js",
      "indexation_intent": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
      "source_fields": {
        "model_id": "glm-5",
        "public_slug": "glm-5",
        "provider": "Z.AI",
        "family": "GLM",
        "marketing_name": "GLM 5",
        "checked_on": "2026-04-29",
        "corvus_input": 0.35,
        "corvus_output": 1.12,
        "corvus_cache_read": 0.07,
        "corvus_cache_write": 0,
        "comparison_count": 2,
        "setup_path_count": 5
      },
      "required_modules": [
        "public slug",
        "input/output/cache pricing",
        "official source reference",
        "setup links",
        "sibling model links",
        "risk checks"
      ],
      "html_signals": {
        "title": "GLM 5 API Pricing and Slug | CorvusLLM",
        "h1": "GLM 5 API model through CorvusLLM",
        "meta_description": "GLM 5 through CorvusLLM: public model slug, prepaid input/output/cache pricing, official source reference, setup links, and independent-service disclosures.",
        "canonical_url": "https://corvusllm.com/models/glm-5",
        "word_count": 1115,
        "static_anchor_count": 32,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DataDownload",
          "Dataset",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "2cc6b65d9fac88edd6a19443e0f0e1f1f442ff18e1dbbbc2ed74e948b0777e3d"
      },
      "uniqueness_contract": {
        "identity_hash": "fc1be077de0c6202d2b412441cdfdb72736a7259e3082ec4454d98828df9ae58",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Canonical public model-row page for model slug, price fields, setup routing, and buyer validation.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.03,
        "unique_source_field_count": 12,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/claude-opus-4-7-vs-gpt-5-5",
      "canonical_url": "https://corvusllm.com/compare/claude-opus-4-7-vs-gpt-5-5",
      "static_file": "compare-claude-opus-4-7-vs-gpt-5-5.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "claude-opus-4-7_vs_gpt-5.5",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "highest-capability Claude vs flagship GPT",
        "summary": "Use this when you are choosing between a premium Claude row and a premium GPT row for coding, reasoning, or agent workflows.",
        "model_slugs": [
          "claude-opus-4-7",
          "gpt-5.5"
        ],
        "model_paths": [
          "/models/claude-opus-4-7",
          "/models/gpt-5-5"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "Claude Opus 4.7 vs GPT 5.5 API Comparison | CorvusLLM",
        "h1": "Claude Opus 4.7 vs GPT 5.5 for CorvusLLM API usage",
        "meta_description": "Claude Opus 4.7 vs GPT 5.5: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/claude-opus-4-7-vs-gpt-5-5",
        "word_count": 1127,
        "static_anchor_count": 29,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "67d543fde4ed5b9f6f66c91c5d8f4126ff11dcabc12300aab53166497295d20f"
      },
      "uniqueness_contract": {
        "identity_hash": "fe503d561181a3ffa89091f0847eda7453025619141bef6e3946307ee9f3e162",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 2.05,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/claude-sonnet-4-6-vs-gpt-5-4",
      "canonical_url": "https://corvusllm.com/compare/claude-sonnet-4-6-vs-gpt-5-4",
      "static_file": "compare-claude-sonnet-4-6-vs-gpt-5-4.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "claude-sonnet-4-6_vs_gpt-5.4",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "balanced Claude vs balanced GPT",
        "summary": "Use this when you want a balanced default model for day-to-day coding, chat, writing, and automation.",
        "model_slugs": [
          "claude-sonnet-4-6",
          "gpt-5.4"
        ],
        "model_paths": [
          "/models/claude-sonnet-4-6",
          "/models/gpt-5-4"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "Claude Sonnet 4.6 vs GPT 5.4 API Comparison | CorvusLLM",
        "h1": "Claude Sonnet 4.6 vs GPT 5.4 for CorvusLLM API usage",
        "meta_description": "Claude Sonnet 4.6 vs GPT 5.4: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/claude-sonnet-4-6-vs-gpt-5-4",
        "word_count": 1124,
        "static_anchor_count": 29,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "b958ebd2cf9b7f3324940f8bbee8cca8a3ff06cf4142d14000b0e807941f0567"
      },
      "uniqueness_contract": {
        "identity_hash": "e032d92a41491a1fc2c53b8de405c132d0e411de548be75c68dbd70c3f3b6a78",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 2.04,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/claude-haiku-4-5-vs-glm-5",
      "canonical_url": "https://corvusllm.com/compare/claude-haiku-4-5-vs-glm-5",
      "static_file": "compare-claude-haiku-4-5-vs-glm-5.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "claude-haiku-4-5_vs_glm-5",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "fast Claude vs low-cost GLM",
        "summary": "Use this when the decision is mainly about fast lightweight tasks and cost-sensitive automation.",
        "model_slugs": [
          "claude-haiku-4-5",
          "glm-5"
        ],
        "model_paths": [
          "/models/claude-haiku-4-5",
          "/models/glm-5"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "Claude Haiku 4.5 vs GLM 5 API Comparison | CorvusLLM",
        "h1": "Claude Haiku 4.5 vs GLM 5 for CorvusLLM API usage",
        "meta_description": "Claude Haiku 4.5 vs GLM 5: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/claude-haiku-4-5-vs-glm-5",
        "word_count": 1118,
        "static_anchor_count": 29,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "88817be9cf9cbb861c652f6ea025e060046db9b94064fc0412bc7d1d29c6cd40"
      },
      "uniqueness_contract": {
        "identity_hash": "593e99cc95489aacf6d07d5a30f9c9084a4e95ed828ef885a722eab3b042a26c",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 2.03,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/glm-5-1-vs-gpt-5-2",
      "canonical_url": "https://corvusllm.com/compare/glm-5-1-vs-gpt-5-2",
      "static_file": "compare-glm-5-1-vs-gpt-5-2.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "glm-5.1_vs_gpt-5.2",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "value GLM vs entry GPT",
        "summary": "Use this when you are comparing a value-focused GLM row with an entry GPT row for general assistant usage.",
        "model_slugs": [
          "glm-5.1",
          "gpt-5.2"
        ],
        "model_paths": [
          "/models/glm-5-1",
          "/models/gpt-5-2"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "GLM 5.1 vs GPT 5.2 API Comparison | CorvusLLM",
        "h1": "GLM 5.1 vs GPT 5.2 for CorvusLLM API usage",
        "meta_description": "GLM 5.1 vs GPT 5.2: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/glm-5-1-vs-gpt-5-2",
        "word_count": 1119,
        "static_anchor_count": 29,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "8fbdbba0752b993478b4f44607fe3a7ecab6969874b19452fd8eef267698693f"
      },
      "uniqueness_contract": {
        "identity_hash": "51009fe9dfe586cd51c7e179d0d5ddedee7e14e3ce15e9f232b4e474c496644b",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 2.03,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/claude-opus-4-7-vs-claude-sonnet-4-6",
      "canonical_url": "https://corvusllm.com/compare/claude-opus-4-7-vs-claude-sonnet-4-6",
      "static_file": "compare-claude-opus-4-7-vs-claude-sonnet-4-6.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "claude-opus-4-7_vs_claude-sonnet-4-6",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "premium Claude vs balanced Claude",
        "summary": "Use this when you know you want Claude but need to choose between quality-first and balanced routing.",
        "model_slugs": [
          "claude-opus-4-7",
          "claude-sonnet-4-6"
        ],
        "model_paths": [
          "/models/claude-opus-4-7",
          "/models/claude-sonnet-4-6"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "Claude Opus 4.7 vs Claude Sonnet 4.6 API Comparison | CorvusLLM",
        "h1": "Claude Opus 4.7 vs Claude Sonnet 4.6 for CorvusLLM API usage",
        "meta_description": "Claude Opus 4.7 vs Claude Sonnet 4.6: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/claude-opus-4-7-vs-claude-sonnet-4-6",
        "word_count": 1120,
        "static_anchor_count": 28,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "1aaf4dfa86608d433e656d399ad47661c1a29e42b5288bc27f667324f1aa4e1f"
      },
      "uniqueness_contract": {
        "identity_hash": "987e35306f1d9a47ec733f93c5a339f5d48301c15da74953bc6d3e6c61e4f178",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 2.04,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/gpt-5-5-vs-gpt-5-4",
      "canonical_url": "https://corvusllm.com/compare/gpt-5-5-vs-gpt-5-4",
      "static_file": "compare-gpt-5-5-vs-gpt-5-4.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "gpt-5.5_vs_gpt-5.4",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "premium GPT vs balanced GPT",
        "summary": "Use this when you know you want GPT but need to compare the premium row against a lower-cost GPT row.",
        "model_slugs": [
          "gpt-5.5",
          "gpt-5.4"
        ],
        "model_paths": [
          "/models/gpt-5-5",
          "/models/gpt-5-4"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "GPT 5.5 vs GPT 5.4 API Comparison | CorvusLLM",
        "h1": "GPT 5.5 vs GPT 5.4 for CorvusLLM API usage",
        "meta_description": "GPT 5.5 vs GPT 5.4: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/gpt-5-5-vs-gpt-5-4",
        "word_count": 1094,
        "static_anchor_count": 28,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "51fd85586a48dff8b70792971592ced5ea166ceb360a3cb32b0d074bce52a145"
      },
      "uniqueness_contract": {
        "identity_hash": "7a76c40dc390036e69137e5aa501f7868fac1f87678c5b75ccb174f1fdd7085d",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.99,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/claude-opus-4-7-vs-glm-5-1",
      "canonical_url": "https://corvusllm.com/compare/claude-opus-4-7-vs-glm-5-1",
      "static_file": "compare-claude-opus-4-7-vs-glm-5-1.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "claude-opus-4-7_vs_glm-5.1",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "premium Claude vs value-focused GLM",
        "summary": "Use this when you are deciding whether a quality-first Claude row is worth the higher public price compared with a value-focused GLM row.",
        "model_slugs": [
          "claude-opus-4-7",
          "glm-5.1"
        ],
        "model_paths": [
          "/models/claude-opus-4-7",
          "/models/glm-5-1"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "Claude Opus 4.7 vs GLM 5.1 API Comparison | CorvusLLM",
        "h1": "Claude Opus 4.7 vs GLM 5.1 for CorvusLLM API usage",
        "meta_description": "Claude Opus 4.7 vs GLM 5.1: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/claude-opus-4-7-vs-glm-5-1",
        "word_count": 1136,
        "static_anchor_count": 29,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "7167c73e33a28275b42c4cbf5e8738eb1ddaadb796f11857663e238bc61e854e"
      },
      "uniqueness_contract": {
        "identity_hash": "c20287f7ec1083f71aeb652ebeb419b5cff2acd554bbe6029362a5707d26c03e",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 2.07,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/claude-sonnet-4-6-vs-glm-5-1",
      "canonical_url": "https://corvusllm.com/compare/claude-sonnet-4-6-vs-glm-5-1",
      "static_file": "compare-claude-sonnet-4-6-vs-glm-5-1.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "claude-sonnet-4-6_vs_glm-5.1",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "balanced Claude vs value-focused GLM",
        "summary": "Use this when you need a balanced Claude default but want to compare it against a lower-cost GLM option for automation or general chat.",
        "model_slugs": [
          "claude-sonnet-4-6",
          "glm-5.1"
        ],
        "model_paths": [
          "/models/claude-sonnet-4-6",
          "/models/glm-5-1"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "Claude Sonnet 4.6 vs GLM 5.1 API Comparison | CorvusLLM",
        "h1": "Claude Sonnet 4.6 vs GLM 5.1 for CorvusLLM API usage",
        "meta_description": "Claude Sonnet 4.6 vs GLM 5.1: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/claude-sonnet-4-6-vs-glm-5-1",
        "word_count": 1127,
        "static_anchor_count": 29,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "9f23e08360cabeca58245e276980d98d2bc1d385d011b984ed39ccd7ccc7b9db"
      },
      "uniqueness_contract": {
        "identity_hash": "ae02852dd58da4ccf718a43a9f4ae6a5db10f8ca6acc53953861d748f76fa24f",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 2.05,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/gpt-5-5-vs-glm-5-1",
      "canonical_url": "https://corvusllm.com/compare/gpt-5-5-vs-glm-5-1",
      "static_file": "compare-gpt-5-5-vs-glm-5-1.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "gpt-5.5_vs_glm-5.1",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "premium GPT vs value-focused GLM",
        "summary": "Use this when an OpenAI-compatible workflow might work with either a flagship GPT row or a more cost-sensitive GLM row.",
        "model_slugs": [
          "gpt-5.5",
          "glm-5.1"
        ],
        "model_paths": [
          "/models/gpt-5-5",
          "/models/glm-5-1"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "GPT 5.5 vs GLM 5.1 API Comparison | CorvusLLM",
        "h1": "GPT 5.5 vs GLM 5.1 for CorvusLLM API usage",
        "meta_description": "GPT 5.5 vs GLM 5.1: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/gpt-5-5-vs-glm-5-1",
        "word_count": 1107,
        "static_anchor_count": 29,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "5b95ec275ff8b1eaf9987e4280067a326e816a56c5e553144ca8590210b1ccc2"
      },
      "uniqueness_contract": {
        "identity_hash": "c5b982e24273a3b8906fe7bd7607543632e733e5cf33b2c374632a1fb57e73f2",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 2.01,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/claude-sonnet-4-6-vs-claude-haiku-4-5",
      "canonical_url": "https://corvusllm.com/compare/claude-sonnet-4-6-vs-claude-haiku-4-5",
      "static_file": "compare-claude-sonnet-4-6-vs-claude-haiku-4-5.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "claude-sonnet-4-6_vs_claude-haiku-4-5",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "balanced Claude vs fast Claude",
        "summary": "Use this when you know you want Claude but need to choose between a balanced default and a faster lightweight row.",
        "model_slugs": [
          "claude-sonnet-4-6",
          "claude-haiku-4-5"
        ],
        "model_paths": [
          "/models/claude-sonnet-4-6",
          "/models/claude-haiku-4-5"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "Claude Sonnet 4.6 vs Claude Haiku 4.5 API Comparison | CorvusLLM",
        "h1": "Claude Sonnet 4.6 vs Claude Haiku 4.5 for CorvusLLM API usage",
        "meta_description": "Claude Sonnet 4.6 vs Claude Haiku 4.5: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/claude-sonnet-4-6-vs-claude-haiku-4-5",
        "word_count": 1115,
        "static_anchor_count": 28,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "f5ae60567201d7c5e446e54105abae2f687c447c9da04b0a03808f1668ca62a3"
      },
      "uniqueness_contract": {
        "identity_hash": "a6987db7b25e286dbb767d08fe061898bd234cbfcfa5e370b713526c376e1850",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 2.03,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/claude-opus-4-7-vs-claude-opus-4-6",
      "canonical_url": "https://corvusllm.com/compare/claude-opus-4-7-vs-claude-opus-4-6",
      "static_file": "compare-claude-opus-4-7-vs-claude-opus-4-6.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "claude-opus-4-7_vs_claude-opus-4-6",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "newer premium Claude vs previous premium Claude",
        "summary": "Use this when you want an Opus-family row and need to compare the newest premium Claude option against the previous premium row.",
        "model_slugs": [
          "claude-opus-4-7",
          "claude-opus-4-6"
        ],
        "model_paths": [
          "/models/claude-opus-4-7",
          "/models/claude-opus-4-6"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "Claude Opus 4.7 vs Claude Opus 4.6 API Comparison | CorvusLLM",
        "h1": "Claude Opus 4.7 vs Claude Opus 4.6 for CorvusLLM API usage",
        "meta_description": "Claude Opus 4.7 vs Claude Opus 4.6: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/claude-opus-4-7-vs-claude-opus-4-6",
        "word_count": 1137,
        "static_anchor_count": 28,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "5207974e228ff20516e0480f7d4df5e85d343346a397988b53d4c2121af15f02"
      },
      "uniqueness_contract": {
        "identity_hash": "0b95a02281297c343a834ffaa531a52248fbf2a80ad78eb48b41f11289502a8c",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 2.07,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/claude-sonnet-4-6-vs-claude-sonnet-4-5",
      "canonical_url": "https://corvusllm.com/compare/claude-sonnet-4-6-vs-claude-sonnet-4-5",
      "static_file": "compare-claude-sonnet-4-6-vs-claude-sonnet-4-5.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "claude-sonnet-4-6_vs_claude-sonnet-4-5",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "newer balanced Claude vs previous balanced Claude",
        "summary": "Use this when you want a Sonnet-family default and need to compare the newer balanced Claude row against the previous one.",
        "model_slugs": [
          "claude-sonnet-4-6",
          "claude-sonnet-4-5"
        ],
        "model_paths": [
          "/models/claude-sonnet-4-6",
          "/models/claude-sonnet-4-5"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "Claude Sonnet 4.6 vs Claude Sonnet 4.5 API Comparison | CorvusLLM",
        "h1": "Claude Sonnet 4.6 vs Claude Sonnet 4.5 for CorvusLLM API usage",
        "meta_description": "Claude Sonnet 4.6 vs Claude Sonnet 4.5: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/claude-sonnet-4-6-vs-claude-sonnet-4-5",
        "word_count": 1116,
        "static_anchor_count": 28,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "85399e9e7865c0ef34f8e39f1ed75cc8e88ccbadb1abf60b0fe9f5390ba10b0f"
      },
      "uniqueness_contract": {
        "identity_hash": "5b1503480e6545d9c9d10b8aab668c17f3236b67be9b156e551fdb677cb37af0",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 2.03,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/gpt-5-4-vs-gpt-5-3",
      "canonical_url": "https://corvusllm.com/compare/gpt-5-4-vs-gpt-5-3",
      "static_file": "compare-gpt-5-4-vs-gpt-5-3.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "gpt-5.4_vs_gpt-5.3",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "balanced GPT vs lower-cost GPT",
        "summary": "Use this when you want a GPT-family row but need to compare a balanced option against a cheaper public GPT row.",
        "model_slugs": [
          "gpt-5.4",
          "gpt-5.3"
        ],
        "model_paths": [
          "/models/gpt-5-4",
          "/models/gpt-5-3"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "GPT 5.4 vs GPT 5.3 API Comparison | CorvusLLM",
        "h1": "GPT 5.4 vs GPT 5.3 for CorvusLLM API usage",
        "meta_description": "GPT 5.4 vs GPT 5.3: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/gpt-5-4-vs-gpt-5-3",
        "word_count": 1108,
        "static_anchor_count": 28,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "edde3b837e888e66ec2e74c458b2a9c2b483ee7acb26f695e7def7b86e0101d2"
      },
      "uniqueness_contract": {
        "identity_hash": "e0774cbda501fc908a0de0fa32241d758a7a5e6bd882ccb5ade2f50e51dd8959",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 2.01,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/gpt-5-3-vs-gpt-5-2",
      "canonical_url": "https://corvusllm.com/compare/gpt-5-3-vs-gpt-5-2",
      "static_file": "compare-gpt-5-3-vs-gpt-5-2.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "gpt-5.3_vs_gpt-5.2",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "adjacent entry GPT rows",
        "summary": "Use this when you are choosing between two lower-cost GPT-family rows for OpenAI-compatible app or automation usage.",
        "model_slugs": [
          "gpt-5.3",
          "gpt-5.2"
        ],
        "model_paths": [
          "/models/gpt-5-3",
          "/models/gpt-5-2"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "GPT 5.3 vs GPT 5.2 API Comparison | CorvusLLM",
        "h1": "GPT 5.3 vs GPT 5.2 for CorvusLLM API usage",
        "meta_description": "GPT 5.3 vs GPT 5.2: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/gpt-5-3-vs-gpt-5-2",
        "word_count": 1103,
        "static_anchor_count": 28,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "9ebbe2ac5dd9ed73facec649085b35b39ff7401f0e07f60da0475540bfce5c4c"
      },
      "uniqueness_contract": {
        "identity_hash": "a0ce37b87aa025ea971cf12d70558bc5e0a7588c9449d56fa9ff2c4e12e98d66",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 2.01,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/gpt-5-5-vs-gpt-5-3",
      "canonical_url": "https://corvusllm.com/compare/gpt-5-5-vs-gpt-5-3",
      "static_file": "compare-gpt-5-5-vs-gpt-5-3.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "gpt-5.5_vs_gpt-5.3",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "flagship GPT vs cost-aware GPT",
        "summary": "Use this when you need to decide whether the flagship GPT row is justified over a lower-cost GPT row for the same workflow.",
        "model_slugs": [
          "gpt-5.5",
          "gpt-5.3"
        ],
        "model_paths": [
          "/models/gpt-5-5",
          "/models/gpt-5-3"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "GPT 5.5 vs GPT 5.3 API Comparison | CorvusLLM",
        "h1": "GPT 5.5 vs GPT 5.3 for CorvusLLM API usage",
        "meta_description": "GPT 5.5 vs GPT 5.3: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/gpt-5-5-vs-gpt-5-3",
        "word_count": 1097,
        "static_anchor_count": 28,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "b035929c2a272b2ad4bbc4f6126d1ce3c2c02f6149b38fca88523424a1aff81f"
      },
      "uniqueness_contract": {
        "identity_hash": "20c98c1714781fbc96db49b420e486123339fc28c21475ed1ba2b70c695da416",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.99,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/glm-5-1-vs-glm-5",
      "canonical_url": "https://corvusllm.com/compare/glm-5-1-vs-glm-5",
      "static_file": "compare-glm-5-1-vs-glm-5.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "glm-5.1_vs_glm-5",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "current GLM vs value GLM",
        "summary": "Use this when you know you want GLM and need to compare the current value row against the lower listed GLM option.",
        "model_slugs": [
          "glm-5.1",
          "glm-5"
        ],
        "model_paths": [
          "/models/glm-5-1",
          "/models/glm-5"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "GLM 5.1 vs GLM 5 API Comparison | CorvusLLM",
        "h1": "GLM 5.1 vs GLM 5 for CorvusLLM API usage",
        "meta_description": "GLM 5.1 vs GLM 5: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/glm-5-1-vs-glm-5",
        "word_count": 1097,
        "static_anchor_count": 28,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "724ecea80355961d1da56074a22f5909bf16e636c89663712e1dd9b9973142a7"
      },
      "uniqueness_contract": {
        "identity_hash": "81859dbf28d923b91ee754d127527141b04803d4381b69128fc3b2ee564ea944",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.99,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/claude-opus-4-7-vs-gpt-5-4",
      "canonical_url": "https://corvusllm.com/compare/claude-opus-4-7-vs-gpt-5-4",
      "static_file": "compare-claude-opus-4-7-vs-gpt-5-4.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "claude-opus-4-7_vs_gpt-5.4",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "premium Claude vs balanced GPT",
        "summary": "Use this when the decision is between paying for a premium Claude row and using a more balanced GPT row in an OpenAI-compatible workflow.",
        "model_slugs": [
          "claude-opus-4-7",
          "gpt-5.4"
        ],
        "model_paths": [
          "/models/claude-opus-4-7",
          "/models/gpt-5-4"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "Claude Opus 4.7 vs GPT 5.4 API Comparison | CorvusLLM",
        "h1": "Claude Opus 4.7 vs GPT 5.4 for CorvusLLM API usage",
        "meta_description": "Claude Opus 4.7 vs GPT 5.4: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/claude-opus-4-7-vs-gpt-5-4",
        "word_count": 1142,
        "static_anchor_count": 29,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "b2220c903860abb4330ba11ed1718997111bc1504ee242313ece87770e58579b"
      },
      "uniqueness_contract": {
        "identity_hash": "b8c6d94e34652f558d380b31b6882cc23ec1d44c7d4c021ea883b89736128486",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 2.08,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "model_comparison_pages",
      "path": "/compare/claude-sonnet-4-6-vs-gpt-5-5",
      "canonical_url": "https://corvusllm.com/compare/claude-sonnet-4-6-vs-gpt-5-5",
      "static_file": "compare-claude-sonnet-4-6-vs-gpt-5-5.html",
      "source_file": "scripts/seo/generate-model-comparison-pages.js",
      "source_key": "claude-sonnet-4-6_vs_gpt-5.5",
      "generated_by": "scripts/seo/generate-model-comparison-pages.js",
      "indexation_intent": "Decision page for users comparing two model rows before choosing a default model.",
      "source_fields": {
        "intent": "balanced Claude vs premium GPT",
        "summary": "Use this when you are comparing a balanced Claude-family row against the highest listed GPT row for coding, chat, or agent workloads.",
        "model_slugs": [
          "claude-sonnet-4-6",
          "gpt-5.5"
        ],
        "model_paths": [
          "/models/claude-sonnet-4-6",
          "/models/gpt-5-5"
        ],
        "compare_fields": [
          "public_slug",
          "provider_family",
          "input_price",
          "output_price",
          "cache_read_price",
          "cache_write_price",
          "setup_paths"
        ]
      },
      "required_modules": [
        "direct comparison answer",
        "side-by-side pricing table",
        "choose-when blocks",
        "model detail backlinks",
        "cost calculator link"
      ],
      "html_signals": {
        "title": "Claude Sonnet 4.6 vs GPT 5.5 API Comparison | CorvusLLM",
        "h1": "Claude Sonnet 4.6 vs GPT 5.5 for CorvusLLM API usage",
        "meta_description": "Claude Sonnet 4.6 vs GPT 5.5: compare CorvusLLM public slugs, input/output/cache pricing, setup links, and source references before choosing a default.",
        "canonical_url": "https://corvusllm.com/compare/claude-sonnet-4-6-vs-gpt-5-5",
        "word_count": 1117,
        "static_anchor_count": 29,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "fe25acdd8602265749493bf8dacd3226fd72c6207c8bfad3f0d3a29ebf3d52ee"
      },
      "uniqueness_contract": {
        "identity_hash": "9b05990b756c523c4e3efb1d23763fddda501635fe933615c03e5b298208254e",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Decision page for users comparing two model rows before choosing a default model.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 2.03,
        "unique_source_field_count": 5,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/models.json",
          "/data/model-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "commercial_landing_pages",
      "path": "/lp/openai-compatible-api",
      "canonical_url": "https://corvusllm.com/lp/openai-compatible-api",
      "static_file": "lp/openai-compatible-api/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/openai-compatible-api",
      "generated_by": "curated HTML plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "core_commercial_landing",
        "primary_intent": "Buyer wants an OpenAI-compatible AI API proxy with prepaid balance and clear independent-service boundaries.",
        "target_query_count": 6,
        "audience": [
          "Developers",
          "automation builders",
          "AI tool users",
          "small teams"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 11
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "OpenAI-Compatible AI API Proxy | CorvusLLM",
        "h1": "OpenAI-Compatible AI API Proxy",
        "meta_description": "Use one prepaid CorvusLLM key with an OpenAI-compatible API proxy for supported GPT, Claude, and GLM model families through a developer-friendly endpoint.",
        "canonical_url": "https://corvusllm.com/lp/openai-compatible-api",
        "word_count": 1022,
        "static_anchor_count": 35,
        "schema_types": [
          "Audience",
          "BreadcrumbList",
          "ItemList",
          "ListItem",
          "Service",
          "WebAPI",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "89e9fbdb1ee61ec93409a104cdacaf2e5663fc8f59b38cde479555c3051b9c94"
      },
      "uniqueness_contract": {
        "identity_hash": "1d58556e4fafdca15a89ac7cd7d5b876be2810277e15b473e1fa44afb3c31c74",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.27,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "commercial_landing_pages",
      "path": "/lp/ai-api-for-cursor",
      "canonical_url": "https://corvusllm.com/lp/ai-api-for-cursor",
      "static_file": "lp/ai-api-for-cursor/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/ai-api-for-cursor",
      "generated_by": "curated HTML plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "core_commercial_landing",
        "primary_intent": "Developer wants to connect Cursor or an IDE through a custom OpenAI-compatible base URL.",
        "target_query_count": 6,
        "audience": [
          "Cursor users",
          "IDE users",
          "coding-agent users",
          "repo automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 11
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "Cursor AI API Key Setup | CorvusLLM",
        "h1": "AI API for Cursor",
        "meta_description": "Set up a CorvusLLM API key in Cursor with a custom OpenAI-compatible base URL for supported Claude, GPT, and GLM coding workflows.",
        "canonical_url": "https://corvusllm.com/lp/ai-api-for-cursor",
        "word_count": 993,
        "static_anchor_count": 33,
        "schema_types": [
          "Audience",
          "BreadcrumbList",
          "ItemList",
          "ListItem",
          "Service",
          "WebAPI",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "643a786394033237655a9d493ea5f0a5f7d67a627069f6b48058eee6fef1e735"
      },
      "uniqueness_contract": {
        "identity_hash": "0761720859a7d118c805e8ef6094aa4364ddac9b671cf57951ef72af626b05b9",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.21,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "commercial_landing_pages",
      "path": "/lp/claude-gpt-gemini-api",
      "canonical_url": "https://corvusllm.com/lp/claude-gpt-gemini-api",
      "static_file": "lp/claude-gpt-gemini-api/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/claude-gpt-gemini-api",
      "generated_by": "curated HTML plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "core_commercial_landing",
        "primary_intent": "Buyer wants multiple model families through one independent endpoint while verifying current public model availability.",
        "target_query_count": 6,
        "audience": [
          "multi-model developers",
          "tool builders",
          "workflow automation teams"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 11
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "Claude, GPT & GLM API Proxy | CorvusLLM",
        "h1": "Claude, GPT & GLM API",
        "meta_description": "Access supported Claude, GPT, and GLM model families through one independent CorvusLLM API proxy with prepaid balance and clear service limits.",
        "canonical_url": "https://corvusllm.com/lp/claude-gpt-gemini-api",
        "word_count": 945,
        "static_anchor_count": 29,
        "schema_types": [
          "Audience",
          "BreadcrumbList",
          "ItemList",
          "ListItem",
          "Service",
          "WebAPI",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "a02a1813c7192b20196347e0bcc48642d17c37f71f321c6ef648ea0ec38155af"
      },
      "uniqueness_contract": {
        "identity_hash": "eebe7cda18d55805bd105c11a1ffa0866e14850e2256049b370a3d3c69914d1f",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.1,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "commercial_landing_pages",
      "path": "/lp/bulk-ai-api",
      "canonical_url": "https://corvusllm.com/lp/bulk-ai-api",
      "static_file": "lp/bulk-ai-api/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/bulk-ai-api",
      "generated_by": "curated HTML plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "core_commercial_landing",
        "primary_intent": "Team or agency wants larger prepaid AI API balances, multiple keys, or quote handling for known workloads.",
        "target_query_count": 6,
        "audience": [
          "teams",
          "agencies",
          "automation operators",
          "multi-key buyers"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 11
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "Bulk AI API Access for Teams | CorvusLLM",
        "h1": "Bulk AI API Access",
        "meta_description": "Request larger prepaid CorvusLLM AI API balances or multiple keys for teams, agencies, and automation workloads using one independent API proxy.",
        "canonical_url": "https://corvusllm.com/lp/bulk-ai-api",
        "word_count": 1053,
        "static_anchor_count": 27,
        "schema_types": [
          "Audience",
          "BreadcrumbList",
          "ItemList",
          "ListItem",
          "Service",
          "WebAPI",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "00e9d940721a4934fd55e1d4535e4b0db2451ca02c030d084aab34eb6e290b93"
      },
      "uniqueness_contract": {
        "identity_hash": "026a129c3bf7e75e4c3cd9a9a30d7cd7250c5a360e756a118e181e004b94b045",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.34,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "commercial_landing_pages",
      "path": "/lp/openrouter-alternative",
      "canonical_url": "https://corvusllm.com/lp/openrouter-alternative",
      "static_file": "lp/openrouter-alternative/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/openrouter-alternative",
      "generated_by": "curated HTML plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "core_commercial_landing",
        "primary_intent": "Buyer compares CorvusLLM with OpenRouter-style AI API gateways by fit, pricing, model breadth, and risk boundary.",
        "target_query_count": 6,
        "audience": [
          "gateway comparison buyers",
          "developers comparing AI routing services",
          "price-sensitive API users"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 12
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "OpenRouter Alternative for Prepaid AI API Access | CorvusLLM",
        "h1": "OpenRouter Alternative for Prepaid AI API Access",
        "meta_description": "Compare CorvusLLM with OpenRouter-style AI API gateways for prepaid access, supported model families, pricing transparency, and service limits.",
        "canonical_url": "https://corvusllm.com/lp/openrouter-alternative",
        "word_count": 1040,
        "static_anchor_count": 28,
        "schema_types": [
          "Audience",
          "BreadcrumbList",
          "ItemList",
          "ListItem",
          "Service",
          "WebAPI",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "0de21e67ae28cf8afd33b4232c30df3f57e5b5ed651d38bb172ae5d2e8470f00"
      },
      "uniqueness_contract": {
        "identity_hash": "9ae45d9e55bef738704380b4d1467daa9a6717d5a0a3a8c8633bf2e8ba27fec2",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.31,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "use_case_landing_pages",
      "path": "/lp/ai-api-for-coding-agents",
      "canonical_url": "https://corvusllm.com/lp/ai-api-for-coding-agents",
      "static_file": "lp/ai-api-for-coding-agents/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/ai-api-for-coding-agents",
      "generated_by": "scripts/seo/generate-use-case-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "use_case_landing",
        "primary_intent": "Developer wants a prepaid AI API path for coding agents, IDE assistants, file-aware workflows, and repo tasks while understanding context, tool, and data-handling limits.",
        "target_query_count": 6,
        "audience": [
          "coding-agent users",
          "IDE users",
          "repo automation builders",
          "developers testing agent workflows"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "AI API for Coding Agents | CorvusLLM",
        "h1": "AI API for Coding Agents",
        "meta_description": "Use CorvusLLM for coding-agent API workflows with supported GPT, Claude and GLM model families, prepaid balance, setup links, pricing proof and safety boundaries.",
        "canonical_url": "https://corvusllm.com/lp/ai-api-for-coding-agents",
        "word_count": 1594,
        "static_anchor_count": 35,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "cfe3817a67f6b98ad8b25892ed8f629ea76bb638d3815df8753cfcb8e90f993d"
      },
      "uniqueness_contract": {
        "identity_hash": "55bac6ad91c5d84c15c8567d88df044d89f3f82c2b35cad23106116bf326d6c6",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "use_case_landing_pages",
      "path": "/lp/ai-api-for-open-webui-teams",
      "canonical_url": "https://corvusllm.com/lp/ai-api-for-open-webui-teams",
      "static_file": "lp/ai-api-for-open-webui-teams/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/ai-api-for-open-webui-teams",
      "generated_by": "scripts/seo/generate-use-case-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "use_case_landing",
        "primary_intent": "Open WebUI admin wants a prepaid API backend for a shared browser chat workspace with model-family choices, clear setup values, and team usage guardrails.",
        "target_query_count": 6,
        "audience": [
          "Open WebUI administrators",
          "small teams",
          "internal chat workspace operators",
          "self-hosted AI UI users"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "AI API for Open WebUI Teams | CorvusLLM",
        "h1": "AI API for Open WebUI Teams",
        "meta_description": "Connect Open WebUI teams to CorvusLLM with a custom OpenAI-compatible API backend, public model slugs, prepaid balance, pricing proof and team safety notes.",
        "canonical_url": "https://corvusllm.com/lp/ai-api-for-open-webui-teams",
        "word_count": 1573,
        "static_anchor_count": 35,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "c13b03f49e434d7473dec41e519edd70a155e1414317ff6ff818e6f93fd75f46"
      },
      "uniqueness_contract": {
        "identity_hash": "0d9b6bb1ea74fd444d1454092e16a874aa9f16f4cbf0c2e9fda4cbade737d6ce",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "use_case_landing_pages",
      "path": "/lp/ai-api-for-n8n-automation",
      "canonical_url": "https://corvusllm.com/lp/ai-api-for-n8n-automation",
      "static_file": "lp/ai-api-for-n8n-automation/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/ai-api-for-n8n-automation",
      "generated_by": "scripts/seo/generate-use-case-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "use_case_landing",
        "primary_intent": "Automation builder wants a prepaid AI API for n8n workflows, scheduled jobs, HTTP Request nodes, and explicit cost controls before production runs.",
        "target_query_count": 6,
        "audience": [
          "n8n workflow builders",
          "automation operators",
          "backend script users",
          "scheduled AI task owners"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "AI API for n8n Automation | CorvusLLM",
        "h1": "AI API for n8n Automation",
        "meta_description": "Use CorvusLLM in n8n automation with HTTP Request setup guidance, prepaid balance, model slugs, pricing proof and safe retry boundaries.",
        "canonical_url": "https://corvusllm.com/lp/ai-api-for-n8n-automation",
        "word_count": 1515,
        "static_anchor_count": 35,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "c890180ccdfeaf50276154b1e2ecbbcb7826b96c4593a2fc3c18ff7357688a0c"
      },
      "uniqueness_contract": {
        "identity_hash": "047ea3cf7648360b6071e1639d76b1495e110f967e40d5795666a90fcacbb7df",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "use_case_landing_pages",
      "path": "/lp/ai-api-for-app-prototyping",
      "canonical_url": "https://corvusllm.com/lp/ai-api-for-app-prototyping",
      "static_file": "lp/ai-api-for-app-prototyping/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/ai-api-for-app-prototyping",
      "generated_by": "scripts/seo/generate-use-case-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "use_case_landing",
        "primary_intent": "Developer or founder wants to prototype an AI app with one prepaid API key, OpenAI-compatible SDK setup, public model choices, and low-risk cost checks.",
        "target_query_count": 6,
        "audience": [
          "solo developers",
          "startup founders",
          "MVP builders",
          "prototype teams"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "AI API for App Prototyping | CorvusLLM",
        "h1": "AI API for App Prototyping",
        "meta_description": "Prototype AI apps with CorvusLLM using OpenAI-compatible SDKs, prepaid balance, public model slugs, pricing proof, setup docs and trust guardrails.",
        "canonical_url": "https://corvusllm.com/lp/ai-api-for-app-prototyping",
        "word_count": 1540,
        "static_anchor_count": 35,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "f00051675a9adb8e7ce43cf206357699bea5ffe76fd7a219f53248975c86a54d"
      },
      "uniqueness_contract": {
        "identity_hash": "33739608b12da7391d5a2a56a403944b6f10754a277255600bde5b1ecfe9f7b7",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "use_case_landing_pages",
      "path": "/lp/ai-api-for-cost-sensitive-workloads",
      "canonical_url": "https://corvusllm.com/lp/ai-api-for-cost-sensitive-workloads",
      "static_file": "lp/ai-api-for-cost-sensitive-workloads/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/ai-api-for-cost-sensitive-workloads",
      "generated_by": "scripts/seo/generate-use-case-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "use_case_landing",
        "primary_intent": "Buyer wants to lower AI API spend for suitable non-regulated workloads while checking input, output, cache, prepaid balance, and public pricing methodology.",
        "target_query_count": 6,
        "audience": [
          "cost-sensitive developers",
          "automation teams",
          "batch processing users",
          "buyers comparing token rates"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "AI API for Cost-Sensitive Workloads | CorvusLLM",
        "h1": "AI API for Cost-Sensitive Workloads",
        "meta_description": "Evaluate CorvusLLM for cost-sensitive AI API workloads with prepaid balance, pricing tracker, token cost calculator, cache notes and public model slugs.",
        "canonical_url": "https://corvusllm.com/lp/ai-api-for-cost-sensitive-workloads",
        "word_count": 1523,
        "static_anchor_count": 35,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "110f5f4a13a50978605c35ffb609e7b2f73909cb22ab4589f1e98e9932541abf"
      },
      "uniqueness_contract": {
        "identity_hash": "d7de49b9f5eacc8bc6483dbcb81c6e504648745ccef51464366688905ab95065",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "use_case_landing_pages",
      "path": "/lp/ai-api-for-multi-model-routing",
      "canonical_url": "https://corvusllm.com/lp/ai-api-for-multi-model-routing",
      "static_file": "lp/ai-api-for-multi-model-routing/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/ai-api-for-multi-model-routing",
      "generated_by": "scripts/seo/generate-use-case-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "use_case_landing",
        "primary_intent": "Developer wants one prepaid access layer for selecting supported Claude, GPT, and GLM model families by task, tool, cost, and fallback needs.",
        "target_query_count": 6,
        "audience": [
          "multi-model app developers",
          "AI workflow builders",
          "tool integrators",
          "buyers comparing model families"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "AI API for Multi-Model Routing | CorvusLLM",
        "h1": "AI API for Multi-Model Routing",
        "meta_description": "Use CorvusLLM for multi-model API routing across supported Claude, GPT and GLM families with public slugs, pricing proof, setup docs and trust boundaries.",
        "canonical_url": "https://corvusllm.com/lp/ai-api-for-multi-model-routing",
        "word_count": 1553,
        "static_anchor_count": 35,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "0b83960bbc75c5759dc101bd6861c679444777a9a5ab5851506bfd89a318e1b7"
      },
      "uniqueness_contract": {
        "identity_hash": "b1f7db5eb6cbef74c23155a6c7c805efebac1de59d679f2e7cf189e349357be8",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "price_comparison_pages",
      "path": "/lp/claude-api-pricing-comparison",
      "canonical_url": "https://corvusllm.com/lp/claude-api-pricing-comparison",
      "static_file": "lp/claude-api-pricing-comparison/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/claude-api-pricing-comparison",
      "generated_by": "scripts/seo/generate-price-comparison-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "price_comparison_landing",
        "primary_intent": "Buyer compares Claude API input, output, cache read, and cache write costs against CorvusLLM public prepaid Claude-family rows before choosing a setup path.",
        "target_query_count": 6,
        "audience": [
          "Claude API buyers",
          "Claude Code users",
          "coding-agent users",
          "cost-sensitive Claude teams"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "Claude API Pricing Comparison | CorvusLLM",
        "h1": "Claude API Pricing Comparison",
        "meta_description": "Compare Claude API pricing against CorvusLLM public prepaid Claude-family rates with input, output, cache fields, setup links, calculator and trust warnings.",
        "canonical_url": "https://corvusllm.com/lp/claude-api-pricing-comparison",
        "word_count": 1553,
        "static_anchor_count": 46,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "fd950cb071460a4a1531dfa3e2b5298be8c865b8a1a8fdcf6c85f7d5fce7ed61"
      },
      "uniqueness_contract": {
        "identity_hash": "5818188078145649b01fe75c72e6604be7496b63b9cba6a66306777f4c1958cc",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "price_comparison_pages",
      "path": "/lp/gpt-api-pricing-comparison",
      "canonical_url": "https://corvusllm.com/lp/gpt-api-pricing-comparison",
      "static_file": "lp/gpt-api-pricing-comparison/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/gpt-api-pricing-comparison",
      "generated_by": "scripts/seo/generate-price-comparison-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "price_comparison_landing",
        "primary_intent": "Buyer compares GPT API input, output, and supported cache pricing against CorvusLLM public prepaid GPT-family rows for OpenAI-compatible tools and apps.",
        "target_query_count": 6,
        "audience": [
          "OpenAI-compatible app developers",
          "GPT API buyers",
          "Cursor users",
          "prototype teams"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "GPT API Pricing Comparison | CorvusLLM",
        "h1": "GPT API Pricing Comparison",
        "meta_description": "Compare GPT API pricing against CorvusLLM public prepaid GPT-family rates with OpenAI-compatible setup links, calculator, model slugs and trust warnings.",
        "canonical_url": "https://corvusllm.com/lp/gpt-api-pricing-comparison",
        "word_count": 1493,
        "static_anchor_count": 42,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "d347c823fcb095624312c2acd5b2191cbcc04b4e763ee4a7d4cef54eb6ae8313"
      },
      "uniqueness_contract": {
        "identity_hash": "c5a1bfa05335c3f2cf7151aa1cf6350e2931aed294b9a74110e968827c58df13",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.99,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "price_comparison_pages",
      "path": "/lp/glm-api-pricing-comparison",
      "canonical_url": "https://corvusllm.com/lp/glm-api-pricing-comparison",
      "static_file": "lp/glm-api-pricing-comparison/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/glm-api-pricing-comparison",
      "generated_by": "scripts/seo/generate-price-comparison-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "price_comparison_landing",
        "primary_intent": "Buyer compares GLM API costs against CorvusLLM public prepaid GLM-family rows for cost-sensitive chat, extraction, automation, and OpenAI-compatible workflows.",
        "target_query_count": 6,
        "audience": [
          "GLM API buyers",
          "automation builders",
          "cost-sensitive developers",
          "OpenAI-compatible tool users"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "GLM API Pricing Comparison | CorvusLLM",
        "h1": "GLM API Pricing Comparison",
        "meta_description": "Compare GLM API pricing against CorvusLLM public prepaid GLM-family rows with model slugs, calculator, setup docs, source links and trust warnings.",
        "canonical_url": "https://corvusllm.com/lp/glm-api-pricing-comparison",
        "word_count": 1454,
        "static_anchor_count": 38,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "ef1cfced3dfdaa69cf3cf5e49c0e214347f6b889b8c891d4bc4746bcba008469"
      },
      "uniqueness_contract": {
        "identity_hash": "59a30dbdd4eb8d7e6d71442c7df4178149d36c0952ea74087278dcfc631cbd57",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.91,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "price_comparison_pages",
      "path": "/lp/ai-api-cache-token-pricing",
      "canonical_url": "https://corvusllm.com/lp/ai-api-cache-token-pricing",
      "static_file": "lp/ai-api-cache-token-pricing/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/ai-api-cache-token-pricing",
      "generated_by": "scripts/seo/generate-price-comparison-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "price_comparison_landing",
        "primary_intent": "Buyer investigates cache read and cache write token costs before sending long-context, repeated, coding-agent, or automation workloads through a shared AI API proxy.",
        "target_query_count": 6,
        "audience": [
          "long-context users",
          "coding-agent users",
          "automation teams",
          "buyers comparing cache-heavy costs"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 13
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "AI API Cache Token Pricing | CorvusLLM",
        "h1": "AI API Cache Token Pricing",
        "meta_description": "Understand AI API cache token pricing with CorvusLLM public cache-read and cache-write rows, cost calculator, billing docs and long-context warnings.",
        "canonical_url": "https://corvusllm.com/lp/ai-api-cache-token-pricing",
        "word_count": 1606,
        "static_anchor_count": 52,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "91f7e7f55107ba3553f6b46c204c395605bba85fb6aed04586607e7e301e0d9e"
      },
      "uniqueness_contract": {
        "identity_hash": "a1ef62e6a8eae7417b4108a1d708c0a8778ccd94c2f44bb65da07bb89aefdfaf",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/ai-api-setup-by-tool",
      "canonical_url": "https://corvusllm.com/lp/ai-api-setup-by-tool",
      "static_file": "lp/ai-api-setup-by-tool/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/ai-api-setup-by-tool",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to choose the right CorvusLLM setup page by tool and model family before configuring a custom base URL or API key.",
        "target_query_count": 6,
        "audience": [
          "developers",
          "IDE users",
          "automation builders",
          "Open WebUI administrators"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "AI API Setup by Tool | CorvusLLM",
        "h1": "AI API Setup by Tool",
        "meta_description": "Choose the right CorvusLLM setup page by tool and model family: Cursor, Claude Code, Open WebUI, OpenAI SDKs, n8n, Windsurf, ChatBox, Claude, GPT, and GLM.",
        "canonical_url": "https://corvusllm.com/lp/ai-api-setup-by-tool",
        "word_count": 1151,
        "static_anchor_count": 68,
        "schema_types": [
          "BreadcrumbList",
          "ItemList",
          "ListItem",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "502ac20c55fdefe91306c3b82ef20c6b5467d9f72a06ee204315211f2f6c60f3"
      },
      "uniqueness_contract": {
        "identity_hash": "1d62016a8e1e85c9062c3be13e721d7399a50975c81253d6e8153de34bfd979f",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.56,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/claude-api-for-cursor",
      "canonical_url": "https://corvusllm.com/lp/claude-api-for-cursor",
      "static_file": "lp/claude-api-for-cursor/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/claude-api-for-cursor",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect Cursor to supported Claude models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "Cursor users",
          "Claude API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "Claude API Setup for Cursor | CorvusLLM",
        "h1": "Claude API for Cursor",
        "meta_description": "Use CorvusLLM as an independent Claude API access layer for Cursor: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/claude-api-for-cursor",
        "word_count": 1559,
        "static_anchor_count": 46,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "30998c6729bcb7f46fcfda51243ca815e656ea27ca027396adfa9022e70cd233"
      },
      "uniqueness_contract": {
        "identity_hash": "ff3063247a3ff48127269d638d29f3471320cdd07a3cf305fd414b735cdff9ad",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/claude-api-for-claude-code",
      "canonical_url": "https://corvusllm.com/lp/claude-api-for-claude-code",
      "static_file": "lp/claude-api-for-claude-code/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/claude-api-for-claude-code",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect Claude Code to supported Claude models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "Claude Code users",
          "Claude API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "Claude API Setup for Claude Code | CorvusLLM",
        "h1": "Claude API for Claude Code",
        "meta_description": "Use CorvusLLM as an independent Claude API access layer for Claude Code: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/claude-api-for-claude-code",
        "word_count": 1579,
        "static_anchor_count": 46,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "9c0eeac1962b3d557c51589398d0ffd3c0cec6d540d32d3e395941ed1e118126"
      },
      "uniqueness_contract": {
        "identity_hash": "6a09605339790cf9dcbbe6511a81be0cf1863c263650df5a73a658ff88a2bde8",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/claude-api-for-open-webui",
      "canonical_url": "https://corvusllm.com/lp/claude-api-for-open-webui",
      "static_file": "lp/claude-api-for-open-webui/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/claude-api-for-open-webui",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect Open WebUI to supported Claude models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "Open WebUI users",
          "Claude API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "Claude API Setup for Open WebUI | CorvusLLM",
        "h1": "Claude API for Open WebUI",
        "meta_description": "Use CorvusLLM as an independent Claude API access layer for Open WebUI: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/claude-api-for-open-webui",
        "word_count": 1575,
        "static_anchor_count": 46,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "3c2187831973e19bdba8b4c916419ed60027b502294c196e4ca8f7759d65b199"
      },
      "uniqueness_contract": {
        "identity_hash": "74e774f857878c10e351546e96645dbd287b145a0e70032b505ea3a2fcbeedcf",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/claude-api-for-openai-sdks",
      "canonical_url": "https://corvusllm.com/lp/claude-api-for-openai-sdks",
      "static_file": "lp/claude-api-for-openai-sdks/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/claude-api-for-openai-sdks",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect OpenAI SDKs to supported Claude models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "OpenAI SDKs users",
          "Claude API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "Claude API Setup for OpenAI SDKs | CorvusLLM",
        "h1": "Claude API for OpenAI SDKs",
        "meta_description": "Use CorvusLLM as an independent Claude API access layer for OpenAI SDKs: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/claude-api-for-openai-sdks",
        "word_count": 1570,
        "static_anchor_count": 46,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "f405d8916c790ddff2149caae495015709fc6406e4e8c5e6a945f2f5ddff6990"
      },
      "uniqueness_contract": {
        "identity_hash": "b693c7de3b52db8846e33774ac0fcf3b106c1e6fe44b7a96bda8fdd190b543a0",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/claude-api-for-n8n",
      "canonical_url": "https://corvusllm.com/lp/claude-api-for-n8n",
      "static_file": "lp/claude-api-for-n8n/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/claude-api-for-n8n",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect n8n to supported Claude models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "n8n users",
          "Claude API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "Claude API Setup for n8n | CorvusLLM",
        "h1": "Claude API for n8n",
        "meta_description": "Use CorvusLLM as an independent Claude API access layer for n8n: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/claude-api-for-n8n",
        "word_count": 1554,
        "static_anchor_count": 46,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "6ba6491820a9b3a07edf6822a5868c6ee8f7f0efa8fbfb2d5281fd49c88985f8"
      },
      "uniqueness_contract": {
        "identity_hash": "2588978106fb24865a8074c80b53f318b69c7b5878290e5e08f2d772c3c07127",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/claude-api-for-chatbox",
      "canonical_url": "https://corvusllm.com/lp/claude-api-for-chatbox",
      "static_file": "lp/claude-api-for-chatbox/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/claude-api-for-chatbox",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect ChatBox to supported Claude models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "ChatBox users",
          "Claude API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "Claude API Setup for ChatBox | CorvusLLM",
        "h1": "Claude API for ChatBox",
        "meta_description": "Use CorvusLLM as an independent Claude API access layer for ChatBox: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/claude-api-for-chatbox",
        "word_count": 1547,
        "static_anchor_count": 46,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "bd364ecaa1bf22835e33c4161fb28c02f11f1c464dda5ce2e199950f7f6c388c"
      },
      "uniqueness_contract": {
        "identity_hash": "b693ab54303da3d2ad9acddbadbbd77ce464b4eb20f640900d05c0b2be8cb49e",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/gpt-api-for-cursor",
      "canonical_url": "https://corvusllm.com/lp/gpt-api-for-cursor",
      "static_file": "lp/gpt-api-for-cursor/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/gpt-api-for-cursor",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect Cursor to supported GPT models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "Cursor users",
          "GPT API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "GPT API Setup for Cursor | CorvusLLM",
        "h1": "GPT API for Cursor",
        "meta_description": "Use CorvusLLM as an independent GPT API access layer for Cursor: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/gpt-api-for-cursor",
        "word_count": 1556,
        "static_anchor_count": 46,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "b40955c2098985b7c510cb73b2bf163975d03eaa6f38ed75027fad6b958cb5c5"
      },
      "uniqueness_contract": {
        "identity_hash": "ca2dd15086c1df6d37a8da5953eacaa421e67584c807d2a8586c4832a68775e7",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/gpt-api-for-open-webui",
      "canonical_url": "https://corvusllm.com/lp/gpt-api-for-open-webui",
      "static_file": "lp/gpt-api-for-open-webui/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/gpt-api-for-open-webui",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect Open WebUI to supported GPT models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "Open WebUI users",
          "GPT API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "GPT API Setup for Open WebUI | CorvusLLM",
        "h1": "GPT API for Open WebUI",
        "meta_description": "Use CorvusLLM as an independent GPT API access layer for Open WebUI: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/gpt-api-for-open-webui",
        "word_count": 1572,
        "static_anchor_count": 46,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "163d79854360ee5026c7d6b58e67cbb90601cfd84f336ab9643155fb8c642383"
      },
      "uniqueness_contract": {
        "identity_hash": "0959a72c989c40321fe68704162201924113a9ee583fdaf45a09a4f0bd25bc63",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/gpt-api-for-openai-sdks",
      "canonical_url": "https://corvusllm.com/lp/gpt-api-for-openai-sdks",
      "static_file": "lp/gpt-api-for-openai-sdks/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/gpt-api-for-openai-sdks",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect OpenAI SDKs to supported GPT models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "OpenAI SDKs users",
          "GPT API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "GPT API Setup for OpenAI SDKs | CorvusLLM",
        "h1": "GPT API for OpenAI SDKs",
        "meta_description": "Use CorvusLLM as an independent GPT API access layer for OpenAI SDKs: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/gpt-api-for-openai-sdks",
        "word_count": 1567,
        "static_anchor_count": 46,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "6b12f029f4d173e76db08338e3add50d6084d251ecb2ef5031114452c92fefeb"
      },
      "uniqueness_contract": {
        "identity_hash": "3f2e5a8200c58a44baf927d322424df10644192a4d6e7f62c1a7aac481f2e27c",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/gpt-api-for-n8n",
      "canonical_url": "https://corvusllm.com/lp/gpt-api-for-n8n",
      "static_file": "lp/gpt-api-for-n8n/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/gpt-api-for-n8n",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect n8n to supported GPT models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "n8n users",
          "GPT API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "GPT API Setup for n8n | CorvusLLM",
        "h1": "GPT API for n8n",
        "meta_description": "Use CorvusLLM as an independent GPT API access layer for n8n: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/gpt-api-for-n8n",
        "word_count": 1551,
        "static_anchor_count": 46,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "9af04f803a5ef833a105e4bb39c63a0b5738536f5de3893dc8bba3255bb3d335"
      },
      "uniqueness_contract": {
        "identity_hash": "7758e819edd23cf64ec6149711373361e2517438ea1ebf81c61eabb8aafc163a",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/gpt-api-for-windsurf",
      "canonical_url": "https://corvusllm.com/lp/gpt-api-for-windsurf",
      "static_file": "lp/gpt-api-for-windsurf/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/gpt-api-for-windsurf",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect Windsurf to supported GPT models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "Windsurf users",
          "GPT API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "GPT API Setup for Windsurf | CorvusLLM",
        "h1": "GPT API for Windsurf",
        "meta_description": "Use CorvusLLM as an independent GPT API access layer for Windsurf: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/gpt-api-for-windsurf",
        "word_count": 1542,
        "static_anchor_count": 46,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "be0f77df0ea0d2c1b1d630bee81d3d2cb230ffb5dadde41712ecfbd7db1c4c18"
      },
      "uniqueness_contract": {
        "identity_hash": "a9f1699684844c5d7e6c638bb2ef3a8c0ec9931f8d50674b56f3ac9e568ba6de",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/gpt-api-for-chatbox",
      "canonical_url": "https://corvusllm.com/lp/gpt-api-for-chatbox",
      "static_file": "lp/gpt-api-for-chatbox/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/gpt-api-for-chatbox",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect ChatBox to supported GPT models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "ChatBox users",
          "GPT API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "GPT API Setup for ChatBox | CorvusLLM",
        "h1": "GPT API for ChatBox",
        "meta_description": "Use CorvusLLM as an independent GPT API access layer for ChatBox: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/gpt-api-for-chatbox",
        "word_count": 1544,
        "static_anchor_count": 46,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "670ead8267756d859aed5919f1a17caeea07b6aad489ffe156ae370b2b3315b3"
      },
      "uniqueness_contract": {
        "identity_hash": "0ac6349c8af83e70e91610082bce52fa46707a898617159cc577bba449f005f1",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/glm-api-for-cursor",
      "canonical_url": "https://corvusllm.com/lp/glm-api-for-cursor",
      "static_file": "lp/glm-api-for-cursor/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/glm-api-for-cursor",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect Cursor to supported GLM models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "Cursor users",
          "GLM API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "GLM API Setup for Cursor | CorvusLLM",
        "h1": "GLM API for Cursor",
        "meta_description": "Use CorvusLLM as an independent GLM API access layer for Cursor: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/glm-api-for-cursor",
        "word_count": 1558,
        "static_anchor_count": 45,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "8822c960dcf2610a793d9c6d1533accf54a3c9e65fccc6187c81ad11656b051e"
      },
      "uniqueness_contract": {
        "identity_hash": "1d0bb9e5929c94b40e5813edc50145a7703ab986826dee3a591c4c79d95710fc",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/glm-api-for-open-webui",
      "canonical_url": "https://corvusllm.com/lp/glm-api-for-open-webui",
      "static_file": "lp/glm-api-for-open-webui/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/glm-api-for-open-webui",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect Open WebUI to supported GLM models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "Open WebUI users",
          "GLM API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "GLM API Setup for Open WebUI | CorvusLLM",
        "h1": "GLM API for Open WebUI",
        "meta_description": "Use CorvusLLM as an independent GLM API access layer for Open WebUI: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/glm-api-for-open-webui",
        "word_count": 1572,
        "static_anchor_count": 45,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "c36e3f91850487ed015c5e46618e0cb35d6fbce08e92f27df729e6c332d8ae9f"
      },
      "uniqueness_contract": {
        "identity_hash": "82aa18e0ccd9226a354bcca01b0ee2e176761d4c5c7c0f57a851561de3abd9a1",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/glm-api-for-openai-sdks",
      "canonical_url": "https://corvusllm.com/lp/glm-api-for-openai-sdks",
      "static_file": "lp/glm-api-for-openai-sdks/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/glm-api-for-openai-sdks",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect OpenAI SDKs to supported GLM models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "OpenAI SDKs users",
          "GLM API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "GLM API Setup for OpenAI SDKs | CorvusLLM",
        "h1": "GLM API for OpenAI SDKs",
        "meta_description": "Use CorvusLLM as an independent GLM API access layer for OpenAI SDKs: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/glm-api-for-openai-sdks",
        "word_count": 1567,
        "static_anchor_count": 45,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "1c9d9f0073e7aa7c699695b3117eee7b1a59f750f66a6d770c8abb9217bbd622"
      },
      "uniqueness_contract": {
        "identity_hash": "b18f9d599b3a73d64c9002ebcca7c3d06e4eb85fc8a9f8bfcf430de345662d4a",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/glm-api-for-n8n",
      "canonical_url": "https://corvusllm.com/lp/glm-api-for-n8n",
      "static_file": "lp/glm-api-for-n8n/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/glm-api-for-n8n",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect n8n to supported GLM models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "n8n users",
          "GLM API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "GLM API Setup for n8n | CorvusLLM",
        "h1": "GLM API for n8n",
        "meta_description": "Use CorvusLLM as an independent GLM API access layer for n8n: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/glm-api-for-n8n",
        "word_count": 1551,
        "static_anchor_count": 45,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "023237c27c0104bcba16e18cdb71946e6004e23c96c7adaf6456445a23b131a3"
      },
      "uniqueness_contract": {
        "identity_hash": "ac24225f1a8351930306c0c35d8b93a2e95449ef4a0f1465164d2adcb7dc3bc8",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "provider_tool_landing_pages",
      "path": "/lp/glm-api-for-chatbox",
      "canonical_url": "https://corvusllm.com/lp/glm-api-for-chatbox",
      "static_file": "lp/glm-api-for-chatbox/index.html",
      "source_file": "data/landing-pages.json",
      "source_key": "/lp/glm-api-for-chatbox",
      "generated_by": "scripts/seo/generate-provider-tool-landing-pages.js plus scripts/seo/generate-landing-page-index.js",
      "indexation_intent": "High-intent commercial landing page for a distinct buyer/search intent.",
      "source_fields": {
        "landing_type": "provider_tool_landing",
        "primary_intent": "Developer wants to connect ChatBox to supported GLM models through CorvusLLM with the right endpoint shape, public model slugs, pricing context, and service-boundary disclosures.",
        "target_query_count": 6,
        "audience": [
          "ChatBox users",
          "GLM API users",
          "developers",
          "automation builders"
        ],
        "disclosure_count": 6,
        "supporting_route_count": 14
      },
      "required_modules": [
        "search-intent hero",
        "target queries",
        "required disclosures",
        "setup links",
        "pricing/trust/support links"
      ],
      "html_signals": {
        "title": "GLM API Setup for ChatBox | CorvusLLM",
        "h1": "GLM API for ChatBox",
        "meta_description": "Use CorvusLLM as an independent GLM API access layer for ChatBox: base URL guidance, public model slugs, prepaid balance, pricing proof, and setup links.",
        "canonical_url": "https://corvusllm.com/lp/glm-api-for-chatbox",
        "word_count": 1544,
        "static_anchor_count": 45,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ItemList",
          "ListItem",
          "Question",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "68fc71bf910a9b7c4bf208e1996145c66eaedc1d2d87e5b0b3f4e100d36ab7ac"
      },
      "uniqueness_contract": {
        "identity_hash": "22da5878916a990352330be5d3fde9f169f69a011f237228ba2453588ae81851",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "High-intent commercial landing page for a distinct buyer/search intent.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 6,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/landing-pages.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "setup_environment_pages",
      "path": "/docs/api/overview",
      "canonical_url": "https://corvusllm.com/docs/api/overview",
      "static_file": "docs-api-overview.html",
      "source_file": "data/setup-index.json",
      "source_key": "env-http",
      "generated_by": "docs-config.js plus scripts/seo/apply-docs-setup-snapshots.js",
      "indexation_intent": "Setup page for a specific client, SDK, tool, or environment.",
      "source_fields": {
        "label": "HTTP / curl / fetch",
        "setup_type": "openai_compatible",
        "endpoint_path": "/v1",
        "starter_model": "gpt-5.5",
        "install_requirement_count": 2,
        "configuration_step_count": 2,
        "verification_step_count": 2
      },
      "required_modules": [
        "install requirements",
        "where to configure",
        "copy-paste values",
        "configuration steps",
        "verification steps",
        "guardrail"
      ],
      "html_signals": {
        "title": "CorvusLLM API Overview and Base URLs",
        "h1": "CorvusLLM API base URLs and request paths.",
        "meta_description": "CorvusLLM API overview: public base URLs, auth, /v1, /anthropic, model listing, chat completions, responses, and out-of-balance behavior.",
        "canonical_url": "https://corvusllm.com/docs/api/overview",
        "word_count": 1012,
        "static_anchor_count": 28,
        "schema_types": [
          "BreadcrumbList",
          "DefinedTerm",
          "ImageObject",
          "ItemList",
          "ListItem",
          "SoftwareApplication",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "ca77809d6282bea326befd8d570d97f9e0b3467dc770f8b568715cef6a1b4e10"
      },
      "uniqueness_contract": {
        "identity_hash": "48e604ae9084c6de653cbc467199b593b25f26a2a34ac1fe37e24f6e3c5a7a55",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Setup page for a specific client, SDK, tool, or environment.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 2.02,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/setup-index.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "setup_environment_pages",
      "path": "/docs/integrations/openai-sdks",
      "canonical_url": "https://corvusllm.com/docs/integrations/openai-sdks",
      "static_file": "docs-integrations-openai-sdks.html",
      "source_file": "data/setup-index.json",
      "source_key": "env-openai-sdks",
      "generated_by": "docs-config.js plus scripts/seo/apply-docs-setup-snapshots.js",
      "indexation_intent": "Setup page for a specific client, SDK, tool, or environment.",
      "source_fields": {
        "label": "OpenAI SDKs",
        "setup_type": "openai_compatible",
        "endpoint_path": "/v1",
        "starter_model": "gpt-5.5",
        "install_requirement_count": 2,
        "configuration_step_count": 2,
        "verification_step_count": 2
      },
      "required_modules": [
        "install requirements",
        "where to configure",
        "copy-paste values",
        "configuration steps",
        "verification steps",
        "guardrail"
      ],
      "html_signals": {
        "title": "CorvusLLM OpenAI SDK Setup - Python, Node and Curl",
        "h1": "Use CorvusLLM anywhere with the <span>OpenAI /v1 path.</span>",
        "meta_description": "Use CorvusLLM with the OpenAI-compatible API, curl, fetch, the OpenAI Python SDK, and the OpenAI Node SDK.",
        "canonical_url": "https://corvusllm.com/docs/integrations/openai-sdks",
        "word_count": 780,
        "static_anchor_count": 19,
        "schema_types": [
          "BreadcrumbList",
          "DefinedTerm",
          "ImageObject",
          "ItemList",
          "ListItem",
          "SoftwareApplication",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "57d880c8873dfa96b0eb2832abc09843c0710190643e68d352453ca33fa67613"
      },
      "uniqueness_contract": {
        "identity_hash": "c20ed302b3c66a2139da7f27dc9ee76e2e7a8e1ed83fc41b7859593b10f235a2",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Setup page for a specific client, SDK, tool, or environment.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 1.56,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/setup-index.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "setup_environment_pages",
      "path": "/docs/integrations/claude-code",
      "canonical_url": "https://corvusllm.com/docs/integrations/claude-code",
      "static_file": "docs-integrations-claude-code.html",
      "source_file": "data/setup-index.json",
      "source_key": "env-claude-code",
      "generated_by": "docs-config.js plus scripts/seo/apply-docs-setup-snapshots.js",
      "indexation_intent": "Setup page for a specific client, SDK, tool, or environment.",
      "source_fields": {
        "label": "Claude Code",
        "setup_type": "anthropic_native",
        "endpoint_path": "/anthropic",
        "starter_model": "claude-opus-4-7",
        "install_requirement_count": 2,
        "configuration_step_count": 3,
        "verification_step_count": 2
      },
      "required_modules": [
        "install requirements",
        "where to configure",
        "copy-paste values",
        "configuration steps",
        "verification steps",
        "guardrail"
      ],
      "html_signals": {
        "title": "Claude Code API Setup with CorvusLLM",
        "h1": "Claude Code uses <span>/anthropic</span>, not <span>/v1</span>.",
        "meta_description": "Set up Claude Code with CorvusLLM using the Anthropic-native /anthropic base URL and the current Claude starter slug.",
        "canonical_url": "https://corvusllm.com/docs/integrations/claude-code",
        "word_count": 722,
        "static_anchor_count": 19,
        "schema_types": [
          "BreadcrumbList",
          "DefinedTerm",
          "ImageObject",
          "ItemList",
          "ListItem",
          "SoftwareApplication",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "bf5696b579026984c1e86c07ceb85c2ddead931129baf884eb6096f47422df51"
      },
      "uniqueness_contract": {
        "identity_hash": "93bb3d09bd40a5110e12fb072527ac3512a0ef01004065c535637b110848949d",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Setup page for a specific client, SDK, tool, or environment.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 1.44,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/setup-index.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "setup_environment_pages",
      "path": "/docs/integrations/open-webui",
      "canonical_url": "https://corvusllm.com/docs/integrations/open-webui",
      "static_file": "docs-integrations-open-webui.html",
      "source_file": "data/setup-index.json",
      "source_key": "env-open-webui",
      "generated_by": "docs-config.js plus scripts/seo/apply-docs-setup-snapshots.js",
      "indexation_intent": "Setup page for a specific client, SDK, tool, or environment.",
      "source_fields": {
        "label": "Open WebUI",
        "setup_type": "openai_compatible",
        "endpoint_path": "/v1",
        "starter_model": "gpt-5.5",
        "install_requirement_count": 3,
        "configuration_step_count": 3,
        "verification_step_count": 2
      },
      "required_modules": [
        "install requirements",
        "where to configure",
        "copy-paste values",
        "configuration steps",
        "verification steps",
        "guardrail"
      ],
      "html_signals": {
        "title": "Open WebUI API Setup with CorvusLLM",
        "h1": "Open WebUI should use the same <span>/v1</span> path as the OpenAI SDKs.",
        "meta_description": "Set up Open WebUI with CorvusLLM using the standard OpenAI-compatible /v1 connection flow.",
        "canonical_url": "https://corvusllm.com/docs/integrations/open-webui",
        "word_count": 935,
        "static_anchor_count": 20,
        "schema_types": [
          "BreadcrumbList",
          "DefinedTerm",
          "ImageObject",
          "ItemList",
          "ListItem",
          "SoftwareApplication",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "2c3203e0672b1f07cdab6f687d520888c74b50370adb81782323fdee7d343565"
      },
      "uniqueness_contract": {
        "identity_hash": "1897849cdb3d3fa7b80cc02f5259d25c688529059744068a3cdf8134f73a4c18",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Setup page for a specific client, SDK, tool, or environment.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 1.87,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/setup-index.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "setup_environment_pages",
      "path": "/docs/integrations/chatbox",
      "canonical_url": "https://corvusllm.com/docs/integrations/chatbox",
      "static_file": "docs-integrations-chatbox.html",
      "source_file": "data/setup-index.json",
      "source_key": "env-chatbox",
      "generated_by": "docs-config.js plus scripts/seo/apply-docs-setup-snapshots.js",
      "indexation_intent": "Setup page for a specific client, SDK, tool, or environment.",
      "source_fields": {
        "label": "ChatBox",
        "setup_type": "openai_compatible",
        "endpoint_path": "/v1",
        "starter_model": "gpt-5.5",
        "install_requirement_count": 2,
        "configuration_step_count": 3,
        "verification_step_count": 2
      },
      "required_modules": [
        "install requirements",
        "where to configure",
        "copy-paste values",
        "configuration steps",
        "verification steps",
        "guardrail"
      ],
      "html_signals": {
        "title": "ChatBox API Setup with CorvusLLM",
        "h1": "ChatBox uses the same <span>/v1</span> path as the SDKs.",
        "meta_description": "Set up ChatBox with CorvusLLM using a custom OpenAI-compatible provider, the /v1 base URL, and one clean starter slug.",
        "canonical_url": "https://corvusllm.com/docs/integrations/chatbox",
        "word_count": 843,
        "static_anchor_count": 18,
        "schema_types": [
          "BreadcrumbList",
          "DefinedTerm",
          "ImageObject",
          "ItemList",
          "ListItem",
          "SoftwareApplication",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "5c045e4a1196e7fa428ebaedba12e2dd125ae68eb4c110d56a53b69f6f4ebb70"
      },
      "uniqueness_contract": {
        "identity_hash": "1065e4ef1a3216aafed49dec010ad763bb58da6c0e22001c21b49d0d900af101",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Setup page for a specific client, SDK, tool, or environment.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 1.69,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/setup-index.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "setup_environment_pages",
      "path": "/docs/integrations/n8n",
      "canonical_url": "https://corvusllm.com/docs/integrations/n8n",
      "static_file": "docs-integrations-n8n.html",
      "source_file": "data/setup-index.json",
      "source_key": "env-n8n",
      "generated_by": "docs-config.js plus scripts/seo/apply-docs-setup-snapshots.js",
      "indexation_intent": "Setup page for a specific client, SDK, tool, or environment.",
      "source_fields": {
        "label": "n8n",
        "setup_type": "openai_compatible",
        "endpoint_path": "/v1",
        "starter_model": "gpt-5.5",
        "install_requirement_count": 3,
        "configuration_step_count": 3,
        "verification_step_count": 2
      },
      "required_modules": [
        "install requirements",
        "where to configure",
        "copy-paste values",
        "configuration steps",
        "verification steps",
        "guardrail"
      ],
      "html_signals": {
        "title": "CorvusLLM n8n Setup - HTTP Request Workflow Guide",
        "h1": "In n8n, the safest route is the <span>HTTP Request</span> node.",
        "meta_description": "Use CorvusLLM in n8n through the HTTP Request node with Bearer auth and the OpenAI-compatible /v1 path.",
        "canonical_url": "https://corvusllm.com/docs/integrations/n8n",
        "word_count": 841,
        "static_anchor_count": 18,
        "schema_types": [
          "BreadcrumbList",
          "DefinedTerm",
          "ImageObject",
          "ItemList",
          "ListItem",
          "SoftwareApplication",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "d58c460f016622f12446941c63a6fa77eb010f6450904f8fe6e5e5c7c5a8e3a0"
      },
      "uniqueness_contract": {
        "identity_hash": "f095696b8fc54166db7e29a4663e55758288c132158f448ffab9444ab0844805",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Setup page for a specific client, SDK, tool, or environment.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 1.68,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/setup-index.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "setup_environment_pages",
      "path": "/docs/integrations/cursor",
      "canonical_url": "https://corvusllm.com/docs/integrations/cursor",
      "static_file": "docs-integrations-cursor.html",
      "source_file": "data/setup-index.json",
      "source_key": "env-cursor",
      "generated_by": "docs-config.js plus scripts/seo/apply-docs-setup-snapshots.js",
      "indexation_intent": "Setup page for a specific client, SDK, tool, or environment.",
      "source_fields": {
        "label": "Cursor",
        "setup_type": "openai_compatible",
        "endpoint_path": "/v1",
        "starter_model": "gpt-5.5",
        "install_requirement_count": 3,
        "configuration_step_count": 3,
        "verification_step_count": 2
      },
      "required_modules": [
        "install requirements",
        "where to configure",
        "copy-paste values",
        "configuration steps",
        "verification steps",
        "guardrail"
      ],
      "html_signals": {
        "title": "Cursor API Setup with CorvusLLM",
        "h1": "Cursor is a <span>conditional</span> CorvusLLM environment.",
        "meta_description": "Use CorvusLLM in Cursor only when your build exposes a custom OpenAI-compatible base URL or equivalent override field.",
        "canonical_url": "https://corvusllm.com/docs/integrations/cursor",
        "word_count": 833,
        "static_anchor_count": 18,
        "schema_types": [
          "BreadcrumbList",
          "DefinedTerm",
          "ImageObject",
          "ItemList",
          "ListItem",
          "SoftwareApplication",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "37931a3971b689f173e10c8c691a5b23d0266adbfaa05683c4c2dcb5aed30bad"
      },
      "uniqueness_contract": {
        "identity_hash": "b7ac5ae8be8436d134c13a8f266d135b802b7895c764ee4ea81a723e46124f71",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Setup page for a specific client, SDK, tool, or environment.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 1.67,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/setup-index.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "setup_environment_pages",
      "path": "/docs/integrations/windsurf",
      "canonical_url": "https://corvusllm.com/docs/integrations/windsurf",
      "static_file": "docs-integrations-windsurf.html",
      "source_file": "data/setup-index.json",
      "source_key": "env-windsurf",
      "generated_by": "docs-config.js plus scripts/seo/apply-docs-setup-snapshots.js",
      "indexation_intent": "Setup page for a specific client, SDK, tool, or environment.",
      "source_fields": {
        "label": "Windsurf",
        "setup_type": "openai_compatible",
        "endpoint_path": "/v1",
        "starter_model": "gpt-5.5",
        "install_requirement_count": 3,
        "configuration_step_count": 3,
        "verification_step_count": 2
      },
      "required_modules": [
        "install requirements",
        "where to configure",
        "copy-paste values",
        "configuration steps",
        "verification steps",
        "guardrail"
      ],
      "html_signals": {
        "title": "Windsurf API Setup with CorvusLLM",
        "h1": "Windsurf is also a <span>conditional</span> CorvusLLM environment.",
        "meta_description": "Use CorvusLLM in Windsurf only when your build exposes a custom OpenAI-compatible base URL or equivalent provider override field.",
        "canonical_url": "https://corvusllm.com/docs/integrations/windsurf",
        "word_count": 765,
        "static_anchor_count": 18,
        "schema_types": [
          "BreadcrumbList",
          "DefinedTerm",
          "ImageObject",
          "ItemList",
          "ListItem",
          "SoftwareApplication",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "306740d94253c084999f4a3cf94e4b7f88a8421501f6702aca95951685347b53"
      },
      "uniqueness_contract": {
        "identity_hash": "6e30a97d743f19c18bc1ea3a69fb2f6721ec77afc5fb344b700b092a07f9b59f",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Setup page for a specific client, SDK, tool, or environment.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 1.53,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/setup-index.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "troubleshooting_error_pages",
      "path": "/docs/troubleshooting/model-not-found",
      "canonical_url": "https://corvusllm.com/docs/troubleshooting/model-not-found",
      "static_file": "docs-troubleshooting-model-not-found.html",
      "source_file": "scripts/seo/generate-troubleshooting-error-pages.js",
      "source_key": "model-not-found",
      "generated_by": "scripts/seo/generate-troubleshooting-error-pages.js",
      "indexation_intent": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
      "source_fields": {
        "slug": "model-not-found",
        "primary_error": "model not found",
        "phrase_count": 5,
        "cause_count": 4,
        "fix_step_count": 4,
        "verification_step_count": 3,
        "related_primary_count": 3
      },
      "required_modules": [
        "exact error phrases",
        "direct answer",
        "cause list",
        "fix steps",
        "safe verification steps",
        "support escalation guidance"
      ],
      "html_signals": {
        "title": "Model not found Troubleshooting | CorvusLLM",
        "h1": "Fix model not found errors",
        "meta_description": "Diagnose CorvusLLM model not found, unknown model, no such model, and 404 slug errors with safe checks, canonical slug fixes, and retry guidance.",
        "canonical_url": "https://corvusllm.com/docs/troubleshooting/model-not-found",
        "word_count": 1581,
        "static_anchor_count": 26,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DefinedTerm",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ImageObject",
          "ItemList",
          "ListItem",
          "Question",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "461d30b267acf5ed2de9ef81d0579e5121a2d4935bca7fa5642d41ace190d906"
      },
      "uniqueness_contract": {
        "identity_hash": "8cf0913e0c45b764e61478129ca98100311051abc879e14a6029ea167b1cf723",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "troubleshooting_error_pages",
      "path": "/docs/troubleshooting/invalid-api-key",
      "canonical_url": "https://corvusllm.com/docs/troubleshooting/invalid-api-key",
      "static_file": "docs-troubleshooting-invalid-api-key.html",
      "source_file": "scripts/seo/generate-troubleshooting-error-pages.js",
      "source_key": "invalid-api-key",
      "generated_by": "scripts/seo/generate-troubleshooting-error-pages.js",
      "indexation_intent": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
      "source_fields": {
        "slug": "invalid-api-key",
        "primary_error": "invalid API key",
        "phrase_count": 6,
        "cause_count": 4,
        "fix_step_count": 4,
        "verification_step_count": 3,
        "related_primary_count": 3
      },
      "required_modules": [
        "exact error phrases",
        "direct answer",
        "cause list",
        "fix steps",
        "safe verification steps",
        "support escalation guidance"
      ],
      "html_signals": {
        "title": "Invalid API key Troubleshooting | CorvusLLM",
        "h1": "Fix invalid API key errors",
        "meta_description": "Diagnose CorvusLLM invalid API key, unauthorized, 401, and 403 errors with Bearer auth checks, dashboard key verification, and client-profile fixes.",
        "canonical_url": "https://corvusllm.com/docs/troubleshooting/invalid-api-key",
        "word_count": 1577,
        "static_anchor_count": 27,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DefinedTerm",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ImageObject",
          "ItemList",
          "ListItem",
          "Question",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "bb45e9567a6d0de7a9b5f231077f6ee98e34263ec9ad0ffbc3ab8c7fc201475f"
      },
      "uniqueness_contract": {
        "identity_hash": "57eb7e48ccedb3c69c06d12389071fbdf8884ef14bd7bc0faa2b5a7ef3ced7a8",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "troubleshooting_error_pages",
      "path": "/docs/troubleshooting/wrong-base-url",
      "canonical_url": "https://corvusllm.com/docs/troubleshooting/wrong-base-url",
      "static_file": "docs-troubleshooting-wrong-base-url.html",
      "source_file": "scripts/seo/generate-troubleshooting-error-pages.js",
      "source_key": "wrong-base-url",
      "generated_by": "scripts/seo/generate-troubleshooting-error-pages.js",
      "indexation_intent": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
      "source_fields": {
        "slug": "wrong-base-url",
        "primary_error": "wrong base URL",
        "phrase_count": 5,
        "cause_count": 4,
        "fix_step_count": 4,
        "verification_step_count": 3,
        "related_primary_count": 3
      },
      "required_modules": [
        "exact error phrases",
        "direct answer",
        "cause list",
        "fix steps",
        "safe verification steps",
        "support escalation guidance"
      ],
      "html_signals": {
        "title": "Wrong base URL Troubleshooting | CorvusLLM",
        "h1": "Fix wrong base URL errors",
        "meta_description": "Diagnose CorvusLLM wrong base URL, double /v1, wrong endpoint path, Claude Code /anthropic, and OpenAI-compatible routing mistakes.",
        "canonical_url": "https://corvusllm.com/docs/troubleshooting/wrong-base-url",
        "word_count": 1545,
        "static_anchor_count": 27,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DefinedTerm",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ImageObject",
          "ItemList",
          "ListItem",
          "Question",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "acd05c57871b3b1bdd56df1308f2980efdfbd289f21239bfc0ae46af12fd9dc8"
      },
      "uniqueness_contract": {
        "identity_hash": "56c5dd16d875144cd84638085b8120fee75b57478eb5389990152f445551c56c",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "troubleshooting_error_pages",
      "path": "/docs/troubleshooting/out-of-balance",
      "canonical_url": "https://corvusllm.com/docs/troubleshooting/out-of-balance",
      "static_file": "docs-troubleshooting-out-of-balance.html",
      "source_file": "scripts/seo/generate-troubleshooting-error-pages.js",
      "source_key": "out-of-balance",
      "generated_by": "scripts/seo/generate-troubleshooting-error-pages.js",
      "indexation_intent": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
      "source_fields": {
        "slug": "out-of-balance",
        "primary_error": "out of balance",
        "phrase_count": 5,
        "cause_count": 4,
        "fix_step_count": 4,
        "verification_step_count": 3,
        "related_primary_count": 3
      },
      "required_modules": [
        "exact error phrases",
        "direct answer",
        "cause list",
        "fix steps",
        "safe verification steps",
        "support escalation guidance"
      ],
      "html_signals": {
        "title": "Out of balance Troubleshooting | CorvusLLM",
        "h1": "Fix out of balance errors",
        "meta_description": "Diagnose CorvusLLM out of balance, 429, insufficient credits, top-up, prepaid balance, and cache-heavy request billing errors.",
        "canonical_url": "https://corvusllm.com/docs/troubleshooting/out-of-balance",
        "word_count": 1555,
        "static_anchor_count": 27,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DefinedTerm",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ImageObject",
          "ItemList",
          "ListItem",
          "Question",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "cf75dc73e3df9ab705f623c91d8fdd3f6b1df356a116700eb0943e5ce6e735f9"
      },
      "uniqueness_contract": {
        "identity_hash": "05880942cb712b72836d988414eb1a16af72e5ae863cdb06ef575df81347b21d",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "troubleshooting_error_pages",
      "path": "/docs/troubleshooting/upstream-provider-unavailable",
      "canonical_url": "https://corvusllm.com/docs/troubleshooting/upstream-provider-unavailable",
      "static_file": "docs-troubleshooting-upstream-provider-unavailable.html",
      "source_file": "scripts/seo/generate-troubleshooting-error-pages.js",
      "source_key": "upstream-provider-unavailable",
      "generated_by": "scripts/seo/generate-troubleshooting-error-pages.js",
      "indexation_intent": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
      "source_fields": {
        "slug": "upstream-provider-unavailable",
        "primary_error": "upstream provider unavailable",
        "phrase_count": 5,
        "cause_count": 4,
        "fix_step_count": 4,
        "verification_step_count": 3,
        "related_primary_count": 3
      },
      "required_modules": [
        "exact error phrases",
        "direct answer",
        "cause list",
        "fix steps",
        "safe verification steps",
        "support escalation guidance"
      ],
      "html_signals": {
        "title": "Provider unavailable Troubleshooting | CorvusLLM",
        "h1": "Fix upstream provider unavailable errors",
        "meta_description": "Diagnose CorvusLLM upstream provider unavailable, temporary outage, provider did not respond, model family unavailable, and route failure errors.",
        "canonical_url": "https://corvusllm.com/docs/troubleshooting/upstream-provider-unavailable",
        "word_count": 1576,
        "static_anchor_count": 26,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DefinedTerm",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ImageObject",
          "ItemList",
          "ListItem",
          "Question",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "d683bbbceac367f556f4dc53f6412af6696a11159e90b0df561e6129bdfec6a6"
      },
      "uniqueness_contract": {
        "identity_hash": "1c75c3a0b3ba739e6f611626bee322ededcbb9d1867e2b5f2603ba93b51716f9",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "troubleshooting_error_pages",
      "path": "/docs/troubleshooting/request-timeout",
      "canonical_url": "https://corvusllm.com/docs/troubleshooting/request-timeout",
      "static_file": "docs-troubleshooting-request-timeout.html",
      "source_file": "scripts/seo/generate-troubleshooting-error-pages.js",
      "source_key": "request-timeout",
      "generated_by": "scripts/seo/generate-troubleshooting-error-pages.js",
      "indexation_intent": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
      "source_fields": {
        "slug": "request-timeout",
        "primary_error": "request timeout",
        "phrase_count": 5,
        "cause_count": 4,
        "fix_step_count": 4,
        "verification_step_count": 3,
        "related_primary_count": 3
      },
      "required_modules": [
        "exact error phrases",
        "direct answer",
        "cause list",
        "fix steps",
        "safe verification steps",
        "support escalation guidance"
      ],
      "html_signals": {
        "title": "Request timeout Troubleshooting | CorvusLLM",
        "h1": "Fix request timeout errors",
        "meta_description": "Diagnose CorvusLLM request timeout, long request failed, gateway timeout, stream timeout, and large prompt latency issues.",
        "canonical_url": "https://corvusllm.com/docs/troubleshooting/request-timeout",
        "word_count": 1558,
        "static_anchor_count": 27,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DefinedTerm",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ImageObject",
          "ItemList",
          "ListItem",
          "Question",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "2d0a1d068860b8067810848712d09b828cd9d61f1fc1d601ff4d0913a8d1e904"
      },
      "uniqueness_contract": {
        "identity_hash": "f19c7589097f1fe7a8360da9e85c3d142eb88c2d89390e66490a2013ac6bd0bc",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "troubleshooting_error_pages",
      "path": "/docs/troubleshooting/image-input-errors",
      "canonical_url": "https://corvusllm.com/docs/troubleshooting/image-input-errors",
      "static_file": "docs-troubleshooting-image-input-errors.html",
      "source_file": "scripts/seo/generate-troubleshooting-error-pages.js",
      "source_key": "image-input-errors",
      "generated_by": "scripts/seo/generate-troubleshooting-error-pages.js",
      "indexation_intent": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
      "source_fields": {
        "slug": "image-input-errors",
        "primary_error": "image input error",
        "phrase_count": 5,
        "cause_count": 4,
        "fix_step_count": 4,
        "verification_step_count": 3,
        "related_primary_count": 3
      },
      "required_modules": [
        "exact error phrases",
        "direct answer",
        "cause list",
        "fix steps",
        "safe verification steps",
        "support escalation guidance"
      ],
      "html_signals": {
        "title": "Image input errors Troubleshooting | CorvusLLM",
        "h1": "Fix image input errors",
        "meta_description": "Diagnose CorvusLLM image input, vision message, base64 image, unsupported image, and multimodal payload errors in OpenAI-compatible clients.",
        "canonical_url": "https://corvusllm.com/docs/troubleshooting/image-input-errors",
        "word_count": 1559,
        "static_anchor_count": 26,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DefinedTerm",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ImageObject",
          "ItemList",
          "ListItem",
          "Question",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "26e4576858c063322eaaa517b07770e12260c3379a4e1f09a8832b48f6b56500"
      },
      "uniqueness_contract": {
        "identity_hash": "390353cb632bdda54e2c6e15122136a9a8d70a1dd91f98cb7a7b1ab4e9f10e53",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "troubleshooting_error_pages",
      "path": "/docs/troubleshooting/tool-creation-failed",
      "canonical_url": "https://corvusllm.com/docs/troubleshooting/tool-creation-failed",
      "static_file": "docs-troubleshooting-tool-creation-failed.html",
      "source_file": "scripts/seo/generate-troubleshooting-error-pages.js",
      "source_key": "tool-creation-failed",
      "generated_by": "scripts/seo/generate-troubleshooting-error-pages.js",
      "indexation_intent": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
      "source_fields": {
        "slug": "tool-creation-failed",
        "primary_error": "tool creation failed",
        "phrase_count": 5,
        "cause_count": 4,
        "fix_step_count": 4,
        "verification_step_count": 3,
        "related_primary_count": 3
      },
      "required_modules": [
        "exact error phrases",
        "direct answer",
        "cause list",
        "fix steps",
        "safe verification steps",
        "support escalation guidance"
      ],
      "html_signals": {
        "title": "Tool creation failed Troubleshooting | CorvusLLM",
        "h1": "Fix tool creation and file-action errors",
        "meta_description": "Diagnose CorvusLLM tool creation, function calling, agent file write, workspace patch, streaming tool, and schema-size errors.",
        "canonical_url": "https://corvusllm.com/docs/troubleshooting/tool-creation-failed",
        "word_count": 1601,
        "static_anchor_count": 27,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DefinedTerm",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ImageObject",
          "ItemList",
          "ListItem",
          "Question",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "e2a4995a02a373938407b487716b5da02aa41672359c8971de0516db90128c17"
      },
      "uniqueness_contract": {
        "identity_hash": "a4604423545c5a9bc0dc6de21b5527fe72794a7c0c9d56a22ac1b45e2aea6a0f",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "troubleshooting_error_pages",
      "path": "/docs/troubleshooting/cache-token-cost-spikes",
      "canonical_url": "https://corvusllm.com/docs/troubleshooting/cache-token-cost-spikes",
      "static_file": "docs-troubleshooting-cache-token-cost-spikes.html",
      "source_file": "scripts/seo/generate-troubleshooting-error-pages.js",
      "source_key": "cache-token-cost-spikes",
      "generated_by": "scripts/seo/generate-troubleshooting-error-pages.js",
      "indexation_intent": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
      "source_fields": {
        "slug": "cache-token-cost-spikes",
        "primary_error": "cache token cost spike",
        "phrase_count": 5,
        "cause_count": 4,
        "fix_step_count": 4,
        "verification_step_count": 3,
        "related_primary_count": 3
      },
      "required_modules": [
        "exact error phrases",
        "direct answer",
        "cause list",
        "fix steps",
        "safe verification steps",
        "support escalation guidance"
      ],
      "html_signals": {
        "title": "Cache cost spikes Troubleshooting | CorvusLLM",
        "h1": "Fix cache token cost spikes",
        "meta_description": "Diagnose CorvusLLM cache token cost spikes, high cache read or write usage, short continue prompts with expensive context, and unexpected balance drops.",
        "canonical_url": "https://corvusllm.com/docs/troubleshooting/cache-token-cost-spikes",
        "word_count": 1576,
        "static_anchor_count": 27,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "DefinedTerm",
          "FAQPage",
          "HowTo",
          "HowToStep",
          "ImageObject",
          "ItemList",
          "ListItem",
          "Question",
          "TechArticle",
          "WebPage",
          "WebPageElement"
        ],
        "content_fingerprint": "ccfc563735c38d2073a14f6d3bcf8e9af00e84b49a399db84dfbea4a90a0e029"
      },
      "uniqueness_contract": {
        "identity_hash": "fce79cf490d979f4baf33e59d516eecea0f53b05aba7d37fcdc175ded82e640e",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail troubleshooting page for a recurring API, billing, endpoint, payload, latency, or agent-tooling failure mode.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "low",
        "content_depth_score": 3,
        "unique_source_field_count": 7,
        "required_module_count": 6,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/docs-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/what-do-i-actually-receive-after-a-successful-order/",
      "canonical_url": "https://corvusllm.com/faq/what-do-i-actually-receive-after-a-successful-order/",
      "static_file": "faq/what-do-i-actually-receive-after-a-successful-order/index.html",
      "source_file": "faq-data.js",
      "source_key": "getting-started:what-do-i-actually-receive-after-a-successful-order",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Getting Started",
        "question": "What do I actually receive after a successful order?",
        "answer_length": 243
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "What do I actually receive after a successful order? | CorvusLLM",
        "h1": "What do I actually receive after a successful order?",
        "meta_description": "After a confirmed order, CorvusLLM sends the API key and the proxy or base URL to the email address you entered at checkout. The checkout flow also...",
        "canonical_url": "https://corvusllm.com/faq/what-do-i-actually-receive-after-a-successful-order/",
        "word_count": 355,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "31569a0187796457b8a8e8d867eeb12692466f2abb80b042ff8059c0929cc130"
      },
      "uniqueness_contract": {
        "identity_hash": "ad4f05f827d3fa4566652b0fd522a172afd87eac2e1f1d1c55c08fb0fd71d451",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.42,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/do-i-need-my-own-openai-or-anthropic-account-first/",
      "canonical_url": "https://corvusllm.com/faq/do-i-need-my-own-openai-or-anthropic-account-first/",
      "static_file": "faq/do-i-need-my-own-openai-or-anthropic-account-first/index.html",
      "source_file": "faq-data.js",
      "source_key": "getting-started:do-i-need-my-own-openai-or-anthropic-account-first",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Getting Started",
        "question": "Do I need my own OpenAI or Anthropic account first?",
        "answer_length": 193
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Do I need my own OpenAI or Anthropic account first? | CorvusLLM",
        "h1": "Do I need my own OpenAI or Anthropic account first?",
        "meta_description": "No for the public purchase flow on this site. CorvusLLM delivers its own access details, so the public checkout does not require you to open or preload...",
        "canonical_url": "https://corvusllm.com/faq/do-i-need-my-own-openai-or-anthropic-account-first/",
        "word_count": 338,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "8ea2624040804af37ff1f91116c0dfd982e58aaf86a24ff9d02ce5dfda3b401a"
      },
      "uniqueness_contract": {
        "identity_hash": "5ad2549f1a75b48a3dc76e7b1b899627e2805345a6ff5e4bc35fcd0fde2803a0",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.35,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/which-page-should-i-read-first-if-i-am-completely-new/",
      "canonical_url": "https://corvusllm.com/faq/which-page-should-i-read-first-if-i-am-completely-new/",
      "static_file": "faq/which-page-should-i-read-first-if-i-am-completely-new/index.html",
      "source_file": "faq-data.js",
      "source_key": "getting-started:which-page-should-i-read-first-if-i-am-completely-new",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Getting Started",
        "question": "Which page should I read first if I am completely new?",
        "answer_length": 212
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Best Start Page for New Users | CorvusLLM",
        "h1": "Which page should I read first if I am completely new?",
        "meta_description": "Most new buyers should start with the purchase section on the homepage, then Models, then the Docs page. That sequence tells you what you are buying...",
        "canonical_url": "https://corvusllm.com/faq/which-page-should-i-read-first-if-i-am-completely-new/",
        "word_count": 339,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "b07b8bd5487ce76cf0c86a0591759313d2dc239307977437350d014ae8f9ca4f"
      },
      "uniqueness_contract": {
        "identity_hash": "c6af895ceaa77362a5fe5a562bf8952ce20150491f2036bc67d53a6d5c814f46",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.36,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-i-start-with-a-small-plan-before-buying-something-larger/",
      "canonical_url": "https://corvusllm.com/faq/can-i-start-with-a-small-plan-before-buying-something-larger/",
      "static_file": "faq/can-i-start-with-a-small-plan-before-buying-something-larger/index.html",
      "source_file": "faq-data.js",
      "source_key": "getting-started:can-i-start-with-a-small-plan-before-buying-something-larger",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Getting Started",
        "question": "Can I start with a small plan before buying something larger?",
        "answer_length": 191
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Start Small Before Buying More | CorvusLLM",
        "h1": "Can I start with a small plan before buying something larger?",
        "meta_description": "Yes. The public purchase flow is built so you can start with a lower-cost balance first, test setup in your own tools, and then place a larger order...",
        "canonical_url": "https://corvusllm.com/faq/can-i-start-with-a-small-plan-before-buying-something-larger/",
        "word_count": 336,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "454f1e5e55862b2757495c8ba58dedb942985103efe85caa0f62dcc35933c62b"
      },
      "uniqueness_contract": {
        "identity_hash": "fe2001698fa3b988700eac02b073544453fe13eff9424632241e6666609a697e",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.34,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/how-long-does-first-setup-usually-take-once-the-key-is-delivered/",
      "canonical_url": "https://corvusllm.com/faq/how-long-does-first-setup-usually-take-once-the-key-is-delivered/",
      "static_file": "faq/how-long-does-first-setup-usually-take-once-the-key-is-delivered/index.html",
      "source_file": "faq-data.js",
      "source_key": "getting-started:how-long-does-first-setup-usually-take-once-the-key-is-delivered",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Getting Started",
        "question": "How long does first setup usually take once the key is delivered?",
        "answer_length": 279
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "First Setup Time After Key Delivery | CorvusLLM",
        "h1": "How long does first setup usually take once the key is delivered?",
        "meta_description": "For most tools it is only a few minutes because the common pattern is simple: paste the key, paste the base URL, choose the model, and test one...",
        "canonical_url": "https://corvusllm.com/faq/how-long-does-first-setup-usually-take-once-the-key-is-delivered/",
        "word_count": 368,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "6204ec861707db9c234f59d3ec93118f94fe1e27038d3892e94658e6360fd01d"
      },
      "uniqueness_contract": {
        "identity_hash": "2727fee5482434a8328de108d07cb75dfecdfe18f92cdad3e08f1df41e1ae822",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.47,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/what-happens-after-my-crypto-payment-is-confirmed/",
      "canonical_url": "https://corvusllm.com/faq/what-happens-after-my-crypto-payment-is-confirmed/",
      "static_file": "faq/what-happens-after-my-crypto-payment-is-confirmed/index.html",
      "source_file": "faq-data.js",
      "source_key": "orders-delivery:what-happens-after-my-crypto-payment-is-confirmed",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Orders & Delivery",
        "question": "What happens after my crypto payment is confirmed?",
        "answer_length": 267
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "What happens after my crypto payment is confirmed? | CorvusLLM",
        "h1": "What happens after my crypto payment is confirmed?",
        "meta_description": "The order moves out of the pending payment state and into the automated access path. After a matching payment is confirmed, CorvusLLM normally unlocks...",
        "canonical_url": "https://corvusllm.com/faq/what-happens-after-my-crypto-payment-is-confirmed/",
        "word_count": 353,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "5bc1334cfff7ff6452f9e927d522ac097b86e0922bdadea93aa5b44178ef16a1"
      },
      "uniqueness_contract": {
        "identity_hash": "ae26608ae1257c3450383adce4c4cb4078c0e5002cf10cc7ce8c2c2615ea557d",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.41,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/which-cryptocurrencies-and-networks-can-i-use-to-pay/",
      "canonical_url": "https://corvusllm.com/faq/which-cryptocurrencies-and-networks-can-i-use-to-pay/",
      "static_file": "faq/which-cryptocurrencies-and-networks-can-i-use-to-pay/index.html",
      "source_file": "faq-data.js",
      "source_key": "orders-delivery:which-cryptocurrencies-and-networks-can-i-use-to-pay",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Orders & Delivery",
        "question": "Which cryptocurrencies and networks can I use to pay?",
        "answer_length": 206
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Which cryptocurrencies and networks can I use to pay? | CorvusLLM",
        "h1": "Which cryptocurrencies and networks can I use to pay?",
        "meta_description": "Use only the currencies and networks explicitly shown by the checkout for your order. The safest rule is simple: send the exact amount, on the exact...",
        "canonical_url": "https://corvusllm.com/faq/which-cryptocurrencies-and-networks-can-i-use-to-pay/",
        "word_count": 334,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "7d26ba0a29fcc1ad9ea4d4da015f5ff8565860d6d06d48be4ad978de7bb9ee79"
      },
      "uniqueness_contract": {
        "identity_hash": "69dcd8875c90b7a2b7f22121eee621ccd4a872f17d9d0181ab2136c7196a5f1b",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.34,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-i-recover-an-order-later-if-i-close-the-page-or-switch-devices/",
      "canonical_url": "https://corvusllm.com/faq/can-i-recover-an-order-later-if-i-close-the-page-or-switch-devices/",
      "static_file": "faq/can-i-recover-an-order-later-if-i-close-the-page-or-switch-devices/index.html",
      "source_file": "faq-data.js",
      "source_key": "orders-delivery:can-i-recover-an-order-later-if-i-close-the-page-or-switch-devices",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Orders & Delivery",
        "question": "Can I recover an order later if I close the page or switch devices?",
        "answer_length": 195
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Recover an Order After Closing Checkout | CorvusLLM",
        "h1": "Can I recover an order later if I close the page or switch devices?",
        "meta_description": "Yes, the order number is the key reference for support and order recovery. Keep it until delivery is complete, because it is the fastest way to trace a...",
        "canonical_url": "https://corvusllm.com/faq/can-i-recover-an-order-later-if-i-close-the-page-or-switch-devices/",
        "word_count": 330,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "a6d50291622fd02872760f3c86157544ba95502301663c87d173b2c26f57f4bb"
      },
      "uniqueness_contract": {
        "identity_hash": "cb1604bd8e68ff8b4f63895d8231e2cee74f1442823006ee452eeb9694890cdd",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.32,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/what-if-i-typed-the-wrong-email-address-during-checkout/",
      "canonical_url": "https://corvusllm.com/faq/what-if-i-typed-the-wrong-email-address-during-checkout/",
      "static_file": "faq/what-if-i-typed-the-wrong-email-address-during-checkout/index.html",
      "source_file": "faq-data.js",
      "source_key": "orders-delivery:what-if-i-typed-the-wrong-email-address-during-checkout",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Orders & Delivery",
        "question": "What if I typed the wrong email address during checkout?",
        "answer_length": 192
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Typed the wrong email address during checkout? | CorvusLLM",
        "h1": "What if I typed the wrong email address during checkout?",
        "meta_description": "Contact support as quickly as possible and include the order number. The earlier support sees the mistake, the easier it is to reroute delivery before...",
        "canonical_url": "https://corvusllm.com/faq/what-if-i-typed-the-wrong-email-address-during-checkout/",
        "word_count": 328,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "78b5fbf53def8bebd755e490a57e457f1602cbc05e6c327a703cb8a1b6cd62c3"
      },
      "uniqueness_contract": {
        "identity_hash": "a569a15e073c9e1f09b7b2e8858d6bb0ca73783a89029a980528782f951e575e",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.31,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/do-you-deliver-instantly-at-all-hours-of-the-day/",
      "canonical_url": "https://corvusllm.com/faq/do-you-deliver-instantly-at-all-hours-of-the-day/",
      "static_file": "faq/do-you-deliver-instantly-at-all-hours-of-the-day/index.html",
      "source_file": "faq-data.js",
      "source_key": "orders-delivery:do-you-deliver-instantly-at-all-hours-of-the-day",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Orders & Delivery",
        "question": "Do you deliver instantly at all hours of the day?",
        "answer_length": 333
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Do you deliver instantly at all hours of the day? | CorvusLLM",
        "h1": "Do you deliver instantly at all hours of the day?",
        "meta_description": "Normally yes after a matching payment is confirmed, because access is provisioned automatically rather than handled as a manual office-hours delivery...",
        "canonical_url": "https://corvusllm.com/faq/do-you-deliver-instantly-at-all-hours-of-the-day/",
        "word_count": 369,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "f82dcedb4041b11a7e618ef37ec98543608b21e25b6ab5bdc713d9a34dc4e27d"
      },
      "uniqueness_contract": {
        "identity_hash": "ade5927fe4da81b221ea32b8a4ed642004fbc63dd669c93bd27b8b81247cc5af",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.48,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/are-there-recurring-charges-or-automatic-renewals/",
      "canonical_url": "https://corvusllm.com/faq/are-there-recurring-charges-or-automatic-renewals/",
      "static_file": "faq/are-there-recurring-charges-or-automatic-renewals/index.html",
      "source_file": "faq-data.js",
      "source_key": "pricing-billing:are-there-recurring-charges-or-automatic-renewals",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Pricing & Billing",
        "question": "Are there recurring charges or automatic renewals?",
        "answer_length": 148
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Are there recurring charges or automatic renewals? | CorvusLLM",
        "h1": "Are there recurring charges or automatic renewals?",
        "meta_description": "No automatic card-style renewal is part of the public checkout flow. You place a new order when you want more time, more usage, or a different pack.",
        "canonical_url": "https://corvusllm.com/faq/are-there-recurring-charges-or-automatic-renewals/",
        "word_count": 308,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "b260d8b3d5c65894c21ea86293764ad26a40a3e1fe5db4ed99f12fe03bd2d97c"
      },
      "uniqueness_contract": {
        "identity_hash": "3214b2527c8110bdc775171592f06eebb3c3e0998fc722d244d80c7c025972d1",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.23,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/why-does-the-crypto-amount-change-before-i-lock-the-payment/",
      "canonical_url": "https://corvusllm.com/faq/why-does-the-crypto-amount-change-before-i-lock-the-payment/",
      "static_file": "faq/why-does-the-crypto-amount-change-before-i-lock-the-payment/index.html",
      "source_file": "faq-data.js",
      "source_key": "pricing-billing:why-does-the-crypto-amount-change-before-i-lock-the-payment",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Pricing & Billing",
        "question": "Why does the crypto amount change before I lock the payment?",
        "answer_length": 195
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Crypto amount change before I lock the payment? | CorvusLLM",
        "h1": "Why does the crypto amount change before I lock the payment?",
        "meta_description": "Because the quoted crypto amount follows market pricing until the checkout locks it for your specific order. Once the quote is created, that exact...",
        "canonical_url": "https://corvusllm.com/faq/why-does-the-crypto-amount-change-before-i-lock-the-payment/",
        "word_count": 320,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "b62274f26b8c3b02d85087d643e139f88373c13e08ea6a29ebc40465896b691e"
      },
      "uniqueness_contract": {
        "identity_hash": "4099494f2f38b513ae73ec31cb6d8ce0c31821ad3c2147e38f36bec30648690e",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.28,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/is-the-quote-fixed-after-i-press-continue-and-reach-the-payment-step/",
      "canonical_url": "https://corvusllm.com/faq/is-the-quote-fixed-after-i-press-continue-and-reach-the-payment-step/",
      "static_file": "faq/is-the-quote-fixed-after-i-press-continue-and-reach-the-payment-step/index.html",
      "source_file": "faq-data.js",
      "source_key": "pricing-billing:is-the-quote-fixed-after-i-press-continue-and-reach-the-payment-step",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Pricing & Billing",
        "question": "Is the quote fixed after I press Continue and reach the payment step?",
        "answer_length": 227
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Is the Checkout Quote Fixed? | CorvusLLM",
        "h1": "Is the quote fixed after I press Continue and reach the payment step?",
        "meta_description": "Yes, the payment screen is designed around an exact quote that stays locked for the countdown window shown there. If the timer expires before you send...",
        "canonical_url": "https://corvusllm.com/faq/is-the-quote-fixed-after-i-press-continue-and-reach-the-payment-step/",
        "word_count": 333,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "bc80df1ea60842514ef60d164de1a098070e630916da6ab4937c8334bb80d0bd"
      },
      "uniqueness_contract": {
        "identity_hash": "0952debf234801335870e7a8f22b13428b5f0a20cad64dca3f36b2d07b47af22",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.33,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-i-pay-from-an-exchange-wallet-instead-of-a-self-custody-wallet/",
      "canonical_url": "https://corvusllm.com/faq/can-i-pay-from-an-exchange-wallet-instead-of-a-self-custody-wallet/",
      "static_file": "faq/can-i-pay-from-an-exchange-wallet-instead-of-a-self-custody-wallet/index.html",
      "source_file": "faq-data.js",
      "source_key": "pricing-billing:can-i-pay-from-an-exchange-wallet-instead-of-a-self-custody-wallet",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Pricing & Billing",
        "question": "Can I pay from an exchange wallet instead of a self-custody wallet?",
        "answer_length": 229
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Exchange Wallet vs Self-Custody Payment | CorvusLLM",
        "h1": "Can I pay from an exchange wallet instead of a self-custody wallet?",
        "meta_description": "Sometimes yes, but self-custody is safer because exchange withdrawals can add delays, fees, or batching behavior you do not control. If you use an...",
        "canonical_url": "https://corvusllm.com/faq/can-i-pay-from-an-exchange-wallet-instead-of-a-self-custody-wallet/",
        "word_count": 324,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "9df08da1f6b765174f11e9e7507e1ac632d570ab28eb6846e5bb95db0252e630"
      },
      "uniqueness_contract": {
        "identity_hash": "19d5365bfbc5de90f836394d1bbe6db78a87c96f6bdf6143d7a087f9a6f7c51e",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.3,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/is-corvusllm-a-normal-subscription-with-monthly-card-billing/",
      "canonical_url": "https://corvusllm.com/faq/is-corvusllm-a-normal-subscription-with-monthly-card-billing/",
      "static_file": "faq/is-corvusllm-a-normal-subscription-with-monthly-card-billing/index.html",
      "source_file": "faq-data.js",
      "source_key": "pricing-billing:is-corvusllm-a-normal-subscription-with-monthly-card-billing",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Pricing & Billing",
        "question": "Is CorvusLLM a normal subscription with monthly card billing?",
        "answer_length": 228
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Subscription and Monthly Billing | CorvusLLM",
        "h1": "Is CorvusLLM a normal subscription with monthly card billing?",
        "meta_description": "No. CorvusLLM's public model is prepaid balance, not a recurring monthly card subscription. You top up manually when you want more balance, and the...",
        "canonical_url": "https://corvusllm.com/faq/is-corvusllm-a-normal-subscription-with-monthly-card-billing/",
        "word_count": 323,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "644417a4babfed5cf27f7972af3ed318a0d945d200211284333d235159a10975"
      },
      "uniqueness_contract": {
        "identity_hash": "dab1268b628d46d9fcb56f79557ed80ab65810530e5c04c29f0904b331c108d3",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.29,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/when-can-i-reasonably-expect-a-refund/",
      "canonical_url": "https://corvusllm.com/faq/when-can-i-reasonably-expect-a-refund/",
      "static_file": "faq/when-can-i-reasonably-expect-a-refund/index.html",
      "source_file": "faq-data.js",
      "source_key": "refunds-guarantees:when-can-i-reasonably-expect-a-refund",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Refunds & Guarantees",
        "question": "When can I reasonably expect a refund?",
        "answer_length": 232
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "When can I reasonably expect a refund? | CorvusLLM",
        "h1": "When can I reasonably expect a refund?",
        "meta_description": "The public guarantee is aimed at broken or non-working access during the covered period. If the delivered key fails and support cannot replace or...",
        "canonical_url": "https://corvusllm.com/faq/when-can-i-reasonably-expect-a-refund/",
        "word_count": 334,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "12d97799674782ef86c8920ddf480da2b4edaaf1d246d46e950dd9d778b5bdbf"
      },
      "uniqueness_contract": {
        "identity_hash": "eea6d0de538073e40e11c4e92a38c5547914464cec86ce4e7db1ce24d71728cb",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.34,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/what-does-the-service-guarantee-actually-cover/",
      "canonical_url": "https://corvusllm.com/faq/what-does-the-service-guarantee-actually-cover/",
      "static_file": "faq/what-does-the-service-guarantee-actually-cover/index.html",
      "source_file": "faq-data.js",
      "source_key": "refunds-guarantees:what-does-the-service-guarantee-actually-cover",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Refunds & Guarantees",
        "question": "What does the service guarantee actually cover?",
        "answer_length": 268
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "What does the service guarantee actually cover? | CorvusLLM",
        "h1": "What does the service guarantee actually cover?",
        "meta_description": "It covers the working state of the purchased access for the promised period, not every possible user mistake. It is meant to protect you against the...",
        "canonical_url": "https://corvusllm.com/faq/what-does-the-service-guarantee-actually-cover/",
        "word_count": 333,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "34bdccbbe7a21921523d8152a5a8bb1c91a349977992e89fad4c2566212265c9"
      },
      "uniqueness_contract": {
        "identity_hash": "bcf650349ead97ffe88f87fa4854a087fb6e7c4f07d3fac9d6206bc3891a9c7f",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.33,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/do-refunds-apply-if-i-send-funds-on-the-wrong-network/",
      "canonical_url": "https://corvusllm.com/faq/do-refunds-apply-if-i-send-funds-on-the-wrong-network/",
      "static_file": "faq/do-refunds-apply-if-i-send-funds-on-the-wrong-network/index.html",
      "source_file": "faq-data.js",
      "source_key": "refunds-guarantees:do-refunds-apply-if-i-send-funds-on-the-wrong-network",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Refunds & Guarantees",
        "question": "Do refunds apply if I send funds on the wrong network?",
        "answer_length": 205
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Refunds for Wrong-Network Payments | CorvusLLM",
        "h1": "Do refunds apply if I send funds on the wrong network?",
        "meta_description": "Normally no. A wrong-network crypto transfer is one of the few mistakes that can become permanently unrecoverable, which is why the checkout repeats...",
        "canonical_url": "https://corvusllm.com/faq/do-refunds-apply-if-i-send-funds-on-the-wrong-network/",
        "word_count": 315,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "9028cb1a1a0fa6d7d765c683ade29d66f39132988bc5c9d14e219df0df8eceb5"
      },
      "uniqueness_contract": {
        "identity_hash": "f41bb90711e3c9cb61cd6a6591d6eb41f83dfa8a23a85200e9449a052ba42d46",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.26,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/what-if-i-overpay-or-underpay-the-quoted-amount/",
      "canonical_url": "https://corvusllm.com/faq/what-if-i-overpay-or-underpay-the-quoted-amount/",
      "static_file": "faq/what-if-i-overpay-or-underpay-the-quoted-amount/index.html",
      "source_file": "faq-data.js",
      "source_key": "refunds-guarantees:what-if-i-overpay-or-underpay-the-quoted-amount",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Refunds & Guarantees",
        "question": "What if I overpay or underpay the quoted amount?",
        "answer_length": 180
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "What if I overpay or underpay the quoted amount? | CorvusLLM",
        "h1": "What if I overpay or underpay the quoted amount?",
        "meta_description": "Do not assume the system can guess what to do automatically. Keep the order number and transaction proof, then contact support so the payment can be...",
        "canonical_url": "https://corvusllm.com/faq/what-if-i-overpay-or-underpay-the-quoted-amount/",
        "word_count": 313,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "5b185e7e192edcabc3916dd54f4fca360db389fcc3bde2afdf719599c5532c7e"
      },
      "uniqueness_contract": {
        "identity_hash": "2301d4ca38b278c6bf25b550c8ef895734cec165cfce3a9de45bbcd69dc80131",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.25,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/what-if-a-model-lineup-changes-after-i-buy-access/",
      "canonical_url": "https://corvusllm.com/faq/what-if-a-model-lineup-changes-after-i-buy-access/",
      "static_file": "faq/what-if-a-model-lineup-changes-after-i-buy-access/index.html",
      "source_file": "faq-data.js",
      "source_key": "refunds-guarantees:what-if-a-model-lineup-changes-after-i-buy-access",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Refunds & Guarantees",
        "question": "What if a model lineup changes after I buy access?",
        "answer_length": 232
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "What if a model lineup changes after I buy access? | CorvusLLM",
        "h1": "What if a model lineup changes after I buy access?",
        "meta_description": "Model ecosystems can change over time, so it is smart to check the current lineup before you purchase. If a change materially affects what you expected...",
        "canonical_url": "https://corvusllm.com/faq/what-if-a-model-lineup-changes-after-i-buy-access/",
        "word_count": 338,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "7557ea3b31de919655722cdeb9bf50478093f3246a917b994b1b2e08ac346cd8"
      },
      "uniqueness_contract": {
        "identity_hash": "feb1f9b4cfccd2099df6cac709837b4e97fa5d51c8d1a1d8e047c971d1a379ee",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.35,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/which-model-families-does-corvusllm-usually-expose/",
      "canonical_url": "https://corvusllm.com/faq/which-model-families-does-corvusllm-usually-expose/",
      "static_file": "faq/which-model-families-does-corvusllm-usually-expose/index.html",
      "source_file": "faq-data.js",
      "source_key": "models-availability:which-model-families-does-corvusllm-usually-expose",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Models & Availability",
        "question": "Which model families does CorvusLLM usually expose?",
        "answer_length": 236
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Which model families does CorvusLLM usually expose? | CorvusLLM",
        "h1": "Which model families does CorvusLLM usually expose?",
        "meta_description": "The public site is built around major families like GPT, Claude, GLM, and selected additional models where supported. The exact lineup can change over...",
        "canonical_url": "https://corvusllm.com/faq/which-model-families-does-corvusllm-usually-expose/",
        "word_count": 335,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "d7ed308234163fbef368f9d7dd547a1818aac252f7dbcaeb44c6de51dc9bf2b2"
      },
      "uniqueness_contract": {
        "identity_hash": "6f74fbe8daa127cd56a99ef4b3cddf4121c9f88b76dd5d8ed9465ee7f01b07f0",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.34,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/where-should-i-check-the-current-model-lineup-before-buying/",
      "canonical_url": "https://corvusllm.com/faq/where-should-i-check-the-current-model-lineup-before-buying/",
      "static_file": "faq/where-should-i-check-the-current-model-lineup-before-buying/index.html",
      "source_file": "faq-data.js",
      "source_key": "models-availability:where-should-i-check-the-current-model-lineup-before-buying",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Models & Availability",
        "question": "Where should I check the current model lineup before buying?",
        "answer_length": 259
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Check the current model lineup before buying? | CorvusLLM",
        "h1": "Where should I check the current model lineup before buying?",
        "meta_description": "Use the models directory and the pricing UI on the homepage, because those are the live public references for what is included right now. If a model...",
        "canonical_url": "https://corvusllm.com/faq/where-should-i-check-the-current-model-lineup-before-buying/",
        "word_count": 345,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "cf65b5fa8118cc766762796231c0d0e2f2cc7227af1f5367641adc97663b8bd5"
      },
      "uniqueness_contract": {
        "identity_hash": "3fa49044bcc0fae92a6f192d1ccb43860d21acd8c3f173ec0b030e308aa8d0d5",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.38,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/does-every-pack-include-every-model-on-the-site/",
      "canonical_url": "https://corvusllm.com/faq/does-every-pack-include-every-model-on-the-site/",
      "static_file": "faq/does-every-pack-include-every-model-on-the-site/index.html",
      "source_file": "faq-data.js",
      "source_key": "models-availability:does-every-pack-include-every-model-on-the-site",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Models & Availability",
        "question": "Does every pack include every model on the site?",
        "answer_length": 196
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Does every pack include every model on the site? | CorvusLLM",
        "h1": "Does every pack include every model on the site?",
        "meta_description": "No. Some packs are broad and some are intentionally narrow, so you need to check the included models for the specific product you are selecting rather...",
        "canonical_url": "https://corvusllm.com/faq/does-every-pack-include-every-model-on-the-site/",
        "word_count": 321,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "46efe8ae53c7e4df1296f3692eb996306603500fd0122d69db40963dfa354da7"
      },
      "uniqueness_contract": {
        "identity_hash": "8abdcd7fa131ca87a5c6f3a17aafadf7ce7b8017bf7fef7182d78dac8044c45a",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.28,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/are-model-lineups-fixed-forever-once-a-pack-exists/",
      "canonical_url": "https://corvusllm.com/faq/are-model-lineups-fixed-forever-once-a-pack-exists/",
      "static_file": "faq/are-model-lineups-fixed-forever-once-a-pack-exists/index.html",
      "source_file": "faq-data.js",
      "source_key": "models-availability:are-model-lineups-fixed-forever-once-a-pack-exists",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Models & Availability",
        "question": "Are model lineups fixed forever once a pack exists?",
        "answer_length": 183
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Are model lineups fixed forever once a pack exists? | CorvusLLM",
        "h1": "Are model lineups fixed forever once a pack exists?",
        "meta_description": "No, lineups can move when upstream models change, disappear, or are replaced. CorvusLLM can keep the page updated, but no public model catalog should...",
        "canonical_url": "https://corvusllm.com/faq/are-model-lineups-fixed-forever-once-a-pack-exists/",
        "word_count": 320,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "c3ec368f4f2dab2c5717381bdb17265cd1420e25d9cc14161fb93632dc53ef85"
      },
      "uniqueness_contract": {
        "identity_hash": "c21b24c0b5342a0200b683925602b781d65ebc5ce83c90c219b06c379823d00b",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.28,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/how-do-i-tell-whether-a-pack-is-single-model-or-multi-model/",
      "canonical_url": "https://corvusllm.com/faq/how-do-i-tell-whether-a-pack-is-single-model-or-multi-model/",
      "static_file": "faq/how-do-i-tell-whether-a-pack-is-single-model-or-multi-model/index.html",
      "source_file": "faq-data.js",
      "source_key": "models-availability:how-do-i-tell-whether-a-pack-is-single-model-or-multi-model",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Models & Availability",
        "question": "How do I tell whether a pack is single-model or multi-model?",
        "answer_length": 187
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Tell whether a pack is single-model or multi-model? | CorvusLLM",
        "h1": "How do I tell whether a pack is single-model or multi-model?",
        "meta_description": "Read the included-models table or the related modal before paying. If only one model is part of the package, the UI should make that explicit instead...",
        "canonical_url": "https://corvusllm.com/faq/how-do-i-tell-whether-a-pack-is-single-model-or-multi-model/",
        "word_count": 325,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "acf8dd120f6d741afe1d522f80b158acc8453f508e17bec9dfaa4dbcd0b1514b"
      },
      "uniqueness_contract": {
        "identity_hash": "ff66f8969e535c109311cc88c11d3b4497ae8f041e946b76667173f78e8174a5",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.3,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/why-can-corvusllm-be-cheaper-than-official-pricing/",
      "canonical_url": "https://corvusllm.com/faq/why-can-corvusllm-be-cheaper-than-official-pricing/",
      "static_file": "faq/why-can-corvusllm-be-cheaper-than-official-pricing/index.html",
      "source_file": "faq-data.js",
      "source_key": "official-vs-corvusllm:why-can-corvusllm-be-cheaper-than-official-pricing",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Official Pricing vs CorvusLLM Pricing",
        "question": "Why can CorvusLLM be cheaper than official pricing?",
        "answer_length": 277
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Why can CorvusLLM be cheaper than official pricing? | CorvusLLM",
        "h1": "Why can CorvusLLM be cheaper than official pricing?",
        "meta_description": "Because CorvusLLM is not the same purchase path as going direct to the original provider. The public site positions itself as a cheaper access layer...",
        "canonical_url": "https://corvusllm.com/faq/why-can-corvusllm-be-cheaper-than-official-pricing/",
        "word_count": 342,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "c26b57e8fe8e661048471adc32345b6ebed5551275551eaa41f7b066c53c11e5"
      },
      "uniqueness_contract": {
        "identity_hash": "56139fa554caaf71808c5d4a78dfd72a6e33af57424918f984230f5e6bac8c32",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.37,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/does-the-lower-price-automatically-mean-lower-model-quality/",
      "canonical_url": "https://corvusllm.com/faq/does-the-lower-price-automatically-mean-lower-model-quality/",
      "static_file": "faq/does-the-lower-price-automatically-mean-lower-model-quality/index.html",
      "source_file": "faq-data.js",
      "source_key": "official-vs-corvusllm:does-the-lower-price-automatically-mean-lower-model-quality",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Official Pricing vs CorvusLLM Pricing",
        "question": "Does the lower price automatically mean lower model quality?",
        "answer_length": 181
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Lower Price vs Model Quality | CorvusLLM",
        "h1": "Does the lower price automatically mean lower model quality?",
        "meta_description": "Not by itself. If the same underlying model is being reached, the key difference is the access path and the operational layer around it, not some...",
        "canonical_url": "https://corvusllm.com/faq/does-the-lower-price-automatically-mean-lower-model-quality/",
        "word_count": 316,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "941466372b9df6c9f5f1014ced6ddc85c964d2948c7c751b34771c14204ca175"
      },
      "uniqueness_contract": {
        "identity_hash": "eddde78a60cbaba254ca4f7977e25ea824d5c49f2df5b4394c95c2f5953e6b25",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.26,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/is-corvusllm-basically-a-third-party-access-layer-rather-than-an-official-provider-account/",
      "canonical_url": "https://corvusllm.com/faq/is-corvusllm-basically-a-third-party-access-layer-rather-than-an-official-provider-account/",
      "static_file": "faq/is-corvusllm-basically-a-third-party-access-layer-rather-than-an-official-provider-account/index.html",
      "source_file": "faq-data.js",
      "source_key": "official-vs-corvusllm:is-corvusllm-basically-a-third-party-access-layer-rather-than-an-official-provider-account",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Official Pricing vs CorvusLLM Pricing",
        "question": "Is CorvusLLM basically a third-party access layer rather than an official provider account?",
        "answer_length": 184
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Third-Party API Access Layer | CorvusLLM",
        "h1": "Is CorvusLLM basically a third-party access layer rather than an official provider account?",
        "meta_description": "Yes, and it is better to say that plainly than to blur the boundary. That distinction matters for procurement, trust, support expectations, and any...",
        "canonical_url": "https://corvusllm.com/faq/is-corvusllm-basically-a-third-party-access-layer-rather-than-an-official-provider-account/",
        "word_count": 312,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "87aa0d06b7a6c0ecac4aca792caebade8676f3a66abcc47e4f4982a87ba73acd"
      },
      "uniqueness_contract": {
        "identity_hash": "afd72aa0c03818a9900cb4a8bb5241df6a5d76851f09afecefe33de0df22f764",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.25,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/when-should-i-buy-directly-from-an-official-provider-instead/",
      "canonical_url": "https://corvusllm.com/faq/when-should-i-buy-directly-from-an-official-provider-instead/",
      "static_file": "faq/when-should-i-buy-directly-from-an-official-provider-instead/index.html",
      "source_file": "faq-data.js",
      "source_key": "official-vs-corvusllm:when-should-i-buy-directly-from-an-official-provider-instead",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Official Pricing vs CorvusLLM Pricing",
        "question": "When should I buy directly from an official provider instead?",
        "answer_length": 287
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Buy Directly From Official Providers | CorvusLLM",
        "h1": "When should I buy directly from an official provider instead?",
        "meta_description": "Go direct if you need official enterprise contracts, provider-native billing, specific compliance paperwork, or a procurement path that your...",
        "canonical_url": "https://corvusllm.com/faq/when-should-i-buy-directly-from-an-official-provider-instead/",
        "word_count": 338,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "2f2fd06c8efa221f81a50e1dba534f987cc6792866244f852d327091fdcf39f0"
      },
      "uniqueness_contract": {
        "identity_hash": "fc07428a0efcd797afd2426614d173ba5dec04850fd224a85754155c4134d2d9",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.35,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/what-are-the-real-trade-offs-compared-with-going-direct/",
      "canonical_url": "https://corvusllm.com/faq/what-are-the-real-trade-offs-compared-with-going-direct/",
      "static_file": "faq/what-are-the-real-trade-offs-compared-with-going-direct/index.html",
      "source_file": "faq-data.js",
      "source_key": "official-vs-corvusllm:what-are-the-real-trade-offs-compared-with-going-direct",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Official Pricing vs CorvusLLM Pricing",
        "question": "What are the real trade-offs compared with going direct?",
        "answer_length": 226
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Trade-Offs vs Direct Provider Accounts | CorvusLLM",
        "h1": "What are the real trade-offs compared with going direct?",
        "meta_description": "The trade-offs are mainly around trust boundaries, support style, billing format, and how much direct provider control you want. That is why the...",
        "canonical_url": "https://corvusllm.com/faq/what-are-the-real-trade-offs-compared-with-going-direct/",
        "word_count": 330,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "bdc9c0d3886c2196012581caafd7c7e4788ea2d59e8e9c2fce96ac628c33a41d"
      },
      "uniqueness_contract": {
        "identity_hash": "4a9721d7b992893ff01730eace634e7940d9576479c1fdf528fd5cff58db3928",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.32,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/what-does-openai-compatible-api-actually-mean-here/",
      "canonical_url": "https://corvusllm.com/faq/what-does-openai-compatible-api-actually-mean-here/",
      "static_file": "faq/what-does-openai-compatible-api-actually-mean-here/index.html",
      "source_file": "faq-data.js",
      "source_key": "api-basics:what-does-openai-compatible-api-actually-mean-here",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "OpenAI-Compatible API / Technical Basics",
        "question": "What does 'OpenAI-compatible API' actually mean here?",
        "answer_length": 275
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "OpenAI-Compatible API Meaning | CorvusLLM",
        "h1": "What does 'OpenAI-compatible API' actually mean here?",
        "meta_description": "It means many tools and SDKs built around OpenAI-style request shapes can often work by changing the base URL, key, and model name instead of forcing a...",
        "canonical_url": "https://corvusllm.com/faq/what-does-openai-compatible-api-actually-mean-here/",
        "word_count": 343,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "e1047796c68c17c575d31dc869afb52b78406b45f7f22af54295da9982a5f717"
      },
      "uniqueness_contract": {
        "identity_hash": "228bd2d784446a1d5afd58900c3368b89d49c3061555cdcbf331552587fe72bd",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.37,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/which-base-url-should-i-use-in-my-client-or-sdk/",
      "canonical_url": "https://corvusllm.com/faq/which-base-url-should-i-use-in-my-client-or-sdk/",
      "static_file": "faq/which-base-url-should-i-use-in-my-client-or-sdk/index.html",
      "source_file": "faq-data.js",
      "source_key": "api-basics:which-base-url-should-i-use-in-my-client-or-sdk",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "OpenAI-Compatible API / Technical Basics",
        "question": "Which base URL should I use in my client or SDK?",
        "answer_length": 239
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Which base URL should I use in my client or SDK? | CorvusLLM",
        "h1": "Which base URL should I use in my client or SDK?",
        "meta_description": "Use the base URL that CorvusLLM delivers with your order or documents in the relevant setup guide. Do not guess the endpoint from screenshots, because...",
        "canonical_url": "https://corvusllm.com/faq/which-base-url-should-i-use-in-my-client-or-sdk/",
        "word_count": 346,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "224e412b105c216f8de57eeaf3c68ba3a4c534a7b57fa3f11ae4639d05b8b3a1"
      },
      "uniqueness_contract": {
        "identity_hash": "e02994bf8b1d8016a7febe83fb20d59ee130499c844f0e5d5909b5209c0bdf86",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.38,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/do-i-need-to-rewrite-my-prompts-when-moving-a-project-over/",
      "canonical_url": "https://corvusllm.com/faq/do-i-need-to-rewrite-my-prompts-when-moving-a-project-over/",
      "static_file": "faq/do-i-need-to-rewrite-my-prompts-when-moving-a-project-over/index.html",
      "source_file": "faq-data.js",
      "source_key": "api-basics:do-i-need-to-rewrite-my-prompts-when-moving-a-project-over",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "OpenAI-Compatible API / Technical Basics",
        "question": "Do I need to rewrite my prompts when moving a project over?",
        "answer_length": 196
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Rewrite my prompts when moving a project over? | CorvusLLM",
        "h1": "Do I need to rewrite my prompts when moving a project over?",
        "meta_description": "Usually no. Most migrations are configuration changes first, not prompt rewrites first, although you may still want to test model-specific behavior if...",
        "canonical_url": "https://corvusllm.com/faq/do-i-need-to-rewrite-my-prompts-when-moving-a-project-over/",
        "word_count": 315,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "57e91996bd5d18b05a0d78706c04b08b6852ed619cca9aa9d3f235c41e09fb85"
      },
      "uniqueness_contract": {
        "identity_hash": "2ea34c36f7cadac38ce4d75f330490269b453b97adad4dd027e43f6f62e85b15",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.26,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/are-standard-parameters-like-temperature-and-max-tokens-still-relevant/",
      "canonical_url": "https://corvusllm.com/faq/are-standard-parameters-like-temperature-and-max-tokens-still-relevant/",
      "static_file": "faq/are-standard-parameters-like-temperature-and-max-tokens-still-relevant/index.html",
      "source_file": "faq-data.js",
      "source_key": "api-basics:are-standard-parameters-like-temperature-and-max-tokens-still-relevant",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "OpenAI-Compatible API / Technical Basics",
        "question": "Are standard parameters like temperature and max tokens still relevant?",
        "answer_length": 243
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Temperature and Max Tokens | CorvusLLM",
        "h1": "Are standard parameters like temperature and max tokens still relevant?",
        "meta_description": "Yes, the public docs are built around normal configuration concepts such as model choice and standard request parameters. The exact supported behavior...",
        "canonical_url": "https://corvusllm.com/faq/are-standard-parameters-like-temperature-and-max-tokens-still-relevant/",
        "word_count": 330,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "d139fd0fabd7f47104106b0f5e4c4a2653999bdbb2938674a01af512c37b5ae1"
      },
      "uniqueness_contract": {
        "identity_hash": "22ee582f1731c5d42893336885c2ac2ef77d0b182fd2ec3a76ef5ae16612c192",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.32,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/should-i-keep-the-api-key-in-environment-variables-rather-than-hardcoding-it/",
      "canonical_url": "https://corvusllm.com/faq/should-i-keep-the-api-key-in-environment-variables-rather-than-hardcoding-it/",
      "static_file": "faq/should-i-keep-the-api-key-in-environment-variables-rather-than-hardcoding-it/index.html",
      "source_file": "faq-data.js",
      "source_key": "api-basics:should-i-keep-the-api-key-in-environment-variables-rather-than-hardcoding-it",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "OpenAI-Compatible API / Technical Basics",
        "question": "Should I keep the API key in environment variables rather than hardcoding it?",
        "answer_length": 198
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Store API Keys in Environment Variables | CorvusLLM",
        "h1": "Should I keep the API key in environment variables rather than hardcoding it?",
        "meta_description": "Yes, environment variables are the safer default for local development and servers. They reduce the chance of committing secrets and make it easier to...",
        "canonical_url": "https://corvusllm.com/faq/should-i-keep-the-api-key-in-environment-variables-rather-than-hardcoding-it/",
        "word_count": 321,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "e4bac55200d62b4003c089c5e570ba091b9c1eb0c9aff70537d31c0f57d047c6"
      },
      "uniqueness_contract": {
        "identity_hash": "a248ce384f2bc3d7560e8ec2a2a4f490d17d98b8951a91ed5bdca9cb22906ef1",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.28,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-i-use-corvusllm-inside-cursor/",
      "canonical_url": "https://corvusllm.com/faq/can-i-use-corvusllm-inside-cursor/",
      "static_file": "faq/can-i-use-corvusllm-inside-cursor/index.html",
      "source_file": "faq-data.js",
      "source_key": "cursor:can-i-use-corvusllm-inside-cursor",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Cursor",
        "question": "Can I use CorvusLLM inside Cursor?",
        "answer_length": 196
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Can I use CorvusLLM inside Cursor? | CorvusLLM",
        "h1": "Can I use CorvusLLM inside Cursor?",
        "meta_description": "Yes, if your Cursor setup supports a custom base URL and model configuration. The key idea is that you point Cursor at the delivered CorvusLLM endpoint...",
        "canonical_url": "https://corvusllm.com/faq/can-i-use-corvusllm-inside-cursor/",
        "word_count": 316,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "395cf321ae0c226ace3ef5dc2e8afbac442b63a0650b650cb99fbe9544f644ac"
      },
      "uniqueness_contract": {
        "identity_hash": "c8ea3e75f7e2689b1f77ced23650dfb636f0a67b26b109b84cbbd937a10b9ec3",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.26,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/which-model-family-usually-makes-the-most-sense-in-cursor/",
      "canonical_url": "https://corvusllm.com/faq/which-model-family-usually-makes-the-most-sense-in-cursor/",
      "static_file": "faq/which-model-family-usually-makes-the-most-sense-in-cursor/index.html",
      "source_file": "faq-data.js",
      "source_key": "cursor:which-model-family-usually-makes-the-most-sense-in-cursor",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Cursor",
        "question": "Which model family usually makes the most sense in Cursor?",
        "answer_length": 207
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Model family usually makes the most sense in Cursor? | CorvusLLM",
        "h1": "Which model family usually makes the most sense in Cursor?",
        "meta_description": "That depends on whether you prioritize coding depth, cost, or response speed. Cursor users usually compare Claude and GPT-family options first, then...",
        "canonical_url": "https://corvusllm.com/faq/which-model-family-usually-makes-the-most-sense-in-cursor/",
        "word_count": 324,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "ffd1c3c79d3d596fa4d83f6728f3fd9e40e6d2a7df4cb80bebb792ec547c45e5"
      },
      "uniqueness_contract": {
        "identity_hash": "aacdaade3daee69c289bc6d39eb2d95a8f17329a03bd212664fd6a69ed4f008e",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.3,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/why-does-a-model-sometimes-not-show-up-correctly-in-cursor/",
      "canonical_url": "https://corvusllm.com/faq/why-does-a-model-sometimes-not-show-up-correctly-in-cursor/",
      "static_file": "faq/why-does-a-model-sometimes-not-show-up-correctly-in-cursor/index.html",
      "source_file": "faq-data.js",
      "source_key": "cursor:why-does-a-model-sometimes-not-show-up-correctly-in-cursor",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Cursor",
        "question": "Why does a model sometimes not show up correctly in Cursor?",
        "answer_length": 241
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Model sometimes not show up correctly in Cursor? | CorvusLLM",
        "h1": "Why does a model sometimes not show up correctly in Cursor?",
        "meta_description": "The most common reasons are a wrong model ID, a wrong base URL, or a tool-side configuration mismatch. CorvusLLM can be compatible, but compatibility...",
        "canonical_url": "https://corvusllm.com/faq/why-does-a-model-sometimes-not-show-up-correctly-in-cursor/",
        "word_count": 332,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "271e850f72fa9dd0d1da8e5a39ff60999c0b5084b559f885fae760af28cd66ad"
      },
      "uniqueness_contract": {
        "identity_hash": "b55711f514919a2fd75a71ac47c1d8ac856c9b66533f5f3da0d6543bb0fd83fa",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.33,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-i-use-the-same-key-on-multiple-cursor-installs-that-i-personally-control/",
      "canonical_url": "https://corvusllm.com/faq/can-i-use-the-same-key-on-multiple-cursor-installs-that-i-personally-control/",
      "static_file": "faq/can-i-use-the-same-key-on-multiple-cursor-installs-that-i-personally-control/index.html",
      "source_file": "faq-data.js",
      "source_key": "cursor:can-i-use-the-same-key-on-multiple-cursor-installs-that-i-personally-control",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Cursor",
        "question": "Can I use the same key on multiple Cursor installs that I personally control?",
        "answer_length": 250
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Same Key on Multiple Cursor Installs | CorvusLLM",
        "h1": "Can I use the same key on multiple Cursor installs that I personally control?",
        "meta_description": "Technically a single key can be configured in multiple trusted environments, but you should still manage access carefully. If you want cleaner...",
        "canonical_url": "https://corvusllm.com/faq/can-i-use-the-same-key-on-multiple-cursor-installs-that-i-personally-control/",
        "word_count": 331,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "592cda3936b5de3d761ce0ce61b262dfcddd2f30768c876a53ef7fa1c66d20b6"
      },
      "uniqueness_contract": {
        "identity_hash": "836018e5e473d4a378c370c7b465607c61d3d85a47c201c81caead706a185021",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.32,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/where-is-the-full-cursor-setup-walkthrough/",
      "canonical_url": "https://corvusllm.com/faq/where-is-the-full-cursor-setup-walkthrough/",
      "static_file": "faq/where-is-the-full-cursor-setup-walkthrough/index.html",
      "source_file": "faq-data.js",
      "source_key": "cursor:where-is-the-full-cursor-setup-walkthrough",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Cursor",
        "question": "Where is the full Cursor setup walkthrough?",
        "answer_length": 208
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Where is the full Cursor setup walkthrough? | CorvusLLM",
        "h1": "Where is the full Cursor setup walkthrough?",
        "meta_description": "Use the dedicated Cursor setup guide and the compatibility matrix first, then fall back to the docs page if you need lower-level API examples. That...",
        "canonical_url": "https://corvusllm.com/faq/where-is-the-full-cursor-setup-walkthrough/",
        "word_count": 322,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "5f635230886ad8c37b7af63c53293b406f86a9b0a7add846d98afa7911f3a845"
      },
      "uniqueness_contract": {
        "identity_hash": "ce57ff6d0bd6df43b21da41707bbff2ea53e64aef05092a9544659d6c08aebd7",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.29,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-corvusllm-work-with-claude-code-style-workflows/",
      "canonical_url": "https://corvusllm.com/faq/can-corvusllm-work-with-claude-code-style-workflows/",
      "static_file": "faq/can-corvusllm-work-with-claude-code-style-workflows/index.html",
      "source_file": "faq-data.js",
      "source_key": "claude-code:can-corvusllm-work-with-claude-code-style-workflows",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Claude Code",
        "question": "Can CorvusLLM work with Claude Code style workflows?",
        "answer_length": 181
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Can CorvusLLM work with Claude Code style workflows? | CorvusLLM",
        "h1": "Can CorvusLLM work with Claude Code style workflows?",
        "meta_description": "Yes, that is one of the supported public setup paths. The main work is configuring the correct base URL, key, and model references rather than...",
        "canonical_url": "https://corvusllm.com/faq/can-corvusllm-work-with-claude-code-style-workflows/",
        "word_count": 325,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "747d319fa93b14b092f4fc96686b8f3f42f52f0853685fefc1d6852c67469ea0"
      },
      "uniqueness_contract": {
        "identity_hash": "52b6d2f05341966f16126a30decef460f4f38514e8b88fb67a35b85838aac9cd",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.3,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/what-do-i-normally-need-to-change-for-claude-code-setup/",
      "canonical_url": "https://corvusllm.com/faq/what-do-i-normally-need-to-change-for-claude-code-setup/",
      "static_file": "faq/what-do-i-normally-need-to-change-for-claude-code-setup/index.html",
      "source_file": "faq-data.js",
      "source_key": "claude-code:what-do-i-normally-need-to-change-for-claude-code-setup",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Claude Code",
        "question": "What do I normally need to change for Claude Code setup?",
        "answer_length": 184
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Claude Code Setup Changes | CorvusLLM",
        "h1": "What do I normally need to change for Claude Code setup?",
        "meta_description": "Usually the important changes are the access key, the endpoint or base URL, and the selected model. If those three are right, the rest of the...",
        "canonical_url": "https://corvusllm.com/faq/what-do-i-normally-need-to-change-for-claude-code-setup/",
        "word_count": 320,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "1cb2179bc92d525997e45feb8b02f9b103ed4d102c533c97886187ee4a1d6cfd"
      },
      "uniqueness_contract": {
        "identity_hash": "a1e17db5c97568f05eedb7399033b91fd3f34c288a51aab8213a4f1fe462f28b",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.28,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/is-a-claude-focused-pack-a-better-fit-than-a-generic-multi-model-pack-for-claude-code/",
      "canonical_url": "https://corvusllm.com/faq/is-a-claude-focused-pack-a-better-fit-than-a-generic-multi-model-pack-for-claude-code/",
      "static_file": "faq/is-a-claude-focused-pack-a-better-fit-than-a-generic-multi-model-pack-for-claude-code/index.html",
      "source_file": "faq-data.js",
      "source_key": "claude-code:is-a-claude-focused-pack-a-better-fit-than-a-generic-multi-model-pack-for-claude-code",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Claude Code",
        "question": "Is a Claude-focused pack a better fit than a generic multi-model pack for Claude Code?",
        "answer_length": 200
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Claude-Focused vs Multi-Model Packs | CorvusLLM",
        "h1": "Is a Claude-focused pack a better fit than a generic multi-model pack for Claude Code?",
        "meta_description": "Often yes if most of your workload is already centered on Claude-style coding sessions. If you are still exploring between Claude, GPT, and GLM...",
        "canonical_url": "https://corvusllm.com/faq/is-a-claude-focused-pack-a-better-fit-than-a-generic-multi-model-pack-for-claude-code/",
        "word_count": 326,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "53a475c02fefa08f43071d0f7450a827c31dfe0fae73e730f522e5e84f4ca628"
      },
      "uniqueness_contract": {
        "identity_hash": "c00c8dff935fab979dae02d48518f9a4e6c824abfec4f6033eb65093e69b1299",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.3,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/should-i-run-claude-code-or-similar-tools-in-full-access-or-danger-modes/",
      "canonical_url": "https://corvusllm.com/faq/should-i-run-claude-code-or-similar-tools-in-full-access-or-danger-modes/",
      "static_file": "faq/should-i-run-claude-code-or-similar-tools-in-full-access-or-danger-modes/index.html",
      "source_file": "faq-data.js",
      "source_key": "claude-code:should-i-run-claude-code-or-similar-tools-in-full-access-or-danger-modes",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Claude Code",
        "question": "Should I run Claude Code or similar tools in full-access or danger modes?",
        "answer_length": 216
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Claude Code Full-Access Modes | CorvusLLM",
        "h1": "Should I run Claude Code or similar tools in full-access or danger modes?",
        "meta_description": "Only if you understand the local machine risk and the exact permissions you are granting. CorvusLLM can document how to connect the model, but it...",
        "canonical_url": "https://corvusllm.com/faq/should-i-run-claude-code-or-similar-tools-in-full-access-or-danger-modes/",
        "word_count": 329,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "1d100ec589bca60d5986186c2862bb6e88f33f784e125d503e494958d5340557"
      },
      "uniqueness_contract": {
        "identity_hash": "50196f2f626c0e731d40fe7ec42493f01103e9bede813cdcfd32ceaa23d277e4",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.32,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/where-is-the-step-by-step-claude-code-walkthrough/",
      "canonical_url": "https://corvusllm.com/faq/where-is-the-step-by-step-claude-code-walkthrough/",
      "static_file": "faq/where-is-the-step-by-step-claude-code-walkthrough/index.html",
      "source_file": "faq-data.js",
      "source_key": "claude-code:where-is-the-step-by-step-claude-code-walkthrough",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Claude Code",
        "question": "Where is the step-by-step Claude Code walkthrough?",
        "answer_length": 154
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Where is the step-by-step Claude Code walkthrough? | CorvusLLM",
        "h1": "Where is the step-by-step Claude Code walkthrough?",
        "meta_description": "Use the dedicated Claude Code setup page first. It is a better home for terminal-specific setup details than burying everything in one generic FAQ answer.",
        "canonical_url": "https://corvusllm.com/faq/where-is-the-step-by-step-claude-code-walkthrough/",
        "word_count": 304,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "c60cd126960f39d4b20f0055341093806805548aae707e3504926be1729a577d"
      },
      "uniqueness_contract": {
        "identity_hash": "aa7c3f76c9537074c6a16c87a34a69ee83e21a6e05958e994105e054f220f3f7",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.22,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-i-connect-corvusllm-to-open-webui/",
      "canonical_url": "https://corvusllm.com/faq/can-i-connect-corvusllm-to-open-webui/",
      "static_file": "faq/can-i-connect-corvusllm-to-open-webui/index.html",
      "source_file": "faq-data.js",
      "source_key": "open-webui:can-i-connect-corvusllm-to-open-webui",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Open WebUI",
        "question": "Can I connect CorvusLLM to Open WebUI?",
        "answer_length": 168
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Can I connect CorvusLLM to Open WebUI? | CorvusLLM",
        "h1": "Can I connect CorvusLLM to Open WebUI?",
        "meta_description": "Yes, that is one of the supported public compatibility paths. Open WebUI users mainly need the correct base URL, key, and model IDs rather than a...",
        "canonical_url": "https://corvusllm.com/faq/can-i-connect-corvusllm-to-open-webui/",
        "word_count": 317,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "0a8373e9da60af7634f08d45c095ce26d5b7149851d527fb5331ba71da7c7f23"
      },
      "uniqueness_contract": {
        "identity_hash": "bb65fed89462893b30bbcd628b47302ddf3a9a4973ee94c320eab250ae1157a2",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.27,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-i-expose-multiple-model-families-inside-the-same-open-webui-install/",
      "canonical_url": "https://corvusllm.com/faq/can-i-expose-multiple-model-families-inside-the-same-open-webui-install/",
      "static_file": "faq/can-i-expose-multiple-model-families-inside-the-same-open-webui-install/index.html",
      "source_file": "faq-data.js",
      "source_key": "open-webui:can-i-expose-multiple-model-families-inside-the-same-open-webui-install",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Open WebUI",
        "question": "Can I expose multiple model families inside the same Open WebUI install?",
        "answer_length": 189
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Multiple Model Families in Open WebUI | CorvusLLM",
        "h1": "Can I expose multiple model families inside the same Open WebUI install?",
        "meta_description": "Yes, if your purchased access and configuration support those models. The cleanest approach is to verify each model ID one by one instead of assuming...",
        "canonical_url": "https://corvusllm.com/faq/can-i-expose-multiple-model-families-inside-the-same-open-webui-install/",
        "word_count": 316,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "07806fc83eef4e53bceed6cfa3f7166c096afc0c32f0596c76aebfb1c29d49ba"
      },
      "uniqueness_contract": {
        "identity_hash": "fd493747e4fd15ec9b9a460a4d5f02d119b54bcfd92de35fdf3cfb7f4d388089",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.26,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/is-corvusllm-suitable-for-internal-chat-workspaces-in-open-webui/",
      "canonical_url": "https://corvusllm.com/faq/is-corvusllm-suitable-for-internal-chat-workspaces-in-open-webui/",
      "static_file": "faq/is-corvusllm-suitable-for-internal-chat-workspaces-in-open-webui/index.html",
      "source_file": "faq-data.js",
      "source_key": "open-webui:is-corvusllm-suitable-for-internal-chat-workspaces-in-open-webui",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Open WebUI",
        "question": "Is CorvusLLM suitable for internal chat workspaces in Open WebUI?",
        "answer_length": 201
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Suitable for internal chat workspaces in Open WebUI? | CorvusLLM",
        "h1": "Is CorvusLLM suitable for internal chat workspaces in Open WebUI?",
        "meta_description": "It can be, but you still need to manage your own internal access controls, prompt policies, and data-handling rules. CorvusLLM helps with model access...",
        "canonical_url": "https://corvusllm.com/faq/is-corvusllm-suitable-for-internal-chat-workspaces-in-open-webui/",
        "word_count": 322,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "c34ab0b1d42c44f17b770dc9b8613b976917b937ee7ecff93d055220fafdd0c7"
      },
      "uniqueness_contract": {
        "identity_hash": "3fe5c8854e8843355b455831e3fc455161c3c5fd6d09f028d0555612255fa202",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.29,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/why-do-some-requests-fail-in-open-webui-even-though-the-key-is-valid/",
      "canonical_url": "https://corvusllm.com/faq/why-do-some-requests-fail-in-open-webui-even-though-the-key-is-valid/",
      "static_file": "faq/why-do-some-requests-fail-in-open-webui-even-though-the-key-is-valid/index.html",
      "source_file": "faq-data.js",
      "source_key": "open-webui:why-do-some-requests-fail-in-open-webui-even-though-the-key-is-valid",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Open WebUI",
        "question": "Why do some requests fail in Open WebUI even though the key is valid?",
        "answer_length": 209
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Open WebUI Request Failures | CorvusLLM",
        "h1": "Why do some requests fail in Open WebUI even though the key is valid?",
        "meta_description": "The usual causes are wrong model names, wrong base URL, or a mismatch between requested features and the selected model. When debugging, reduce...",
        "canonical_url": "https://corvusllm.com/faq/why-do-some-requests-fail-in-open-webui-even-though-the-key-is-valid/",
        "word_count": 321,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "246c03d5629da3b2897362e198f76161cecac4cc758b27c8cceec48fc315480e"
      },
      "uniqueness_contract": {
        "identity_hash": "1076f8f9a4c42774c1e3fa0ffc91550167eaf3d6dd48a3d63b9408226b07542e",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.28,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/which-type-of-pack-makes-the-most-sense-for-open-webui-setups/",
      "canonical_url": "https://corvusllm.com/faq/which-type-of-pack-makes-the-most-sense-for-open-webui-setups/",
      "static_file": "faq/which-type-of-pack-makes-the-most-sense-for-open-webui-setups/index.html",
      "source_file": "faq-data.js",
      "source_key": "open-webui:which-type-of-pack-makes-the-most-sense-for-open-webui-setups",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Open WebUI",
        "question": "Which type of pack makes the most sense for Open WebUI setups?",
        "answer_length": 243
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Pack makes the most sense for Open WebUI setups? | CorvusLLM",
        "h1": "Which type of pack makes the most sense for Open WebUI setups?",
        "meta_description": "That depends on whether you want a single family for one consistent experience or a broader pack for side-by-side comparison. Multi-model access makes...",
        "canonical_url": "https://corvusllm.com/faq/which-type-of-pack-makes-the-most-sense-for-open-webui-setups/",
        "word_count": 334,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "6a9fe0569134b32cb0f7ffc49c5ad6d1229c2c408fe5bb1c4c2a89d7a0f28a72"
      },
      "uniqueness_contract": {
        "identity_hash": "d692b724ad654dab26eb013e1e9ce87ab53c3755416bfab03b22d63c9fd16c37",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.34,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/does-corvusllm-work-with-langchain-and-similar-orchestration-libraries/",
      "canonical_url": "https://corvusllm.com/faq/does-corvusllm-work-with-langchain-and-similar-orchestration-libraries/",
      "static_file": "faq/does-corvusllm-work-with-langchain-and-similar-orchestration-libraries/index.html",
      "source_file": "faq-data.js",
      "source_key": "developer-integrations:does-corvusllm-work-with-langchain-and-similar-orchestration-libraries",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "LangChain / SDK / Developer Integrations",
        "question": "Does CorvusLLM work with LangChain and similar orchestration libraries?",
        "answer_length": 212
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "LangChain and Orchestration Support | CorvusLLM",
        "h1": "Does CorvusLLM work with LangChain and similar orchestration libraries?",
        "meta_description": "Yes, if the library can talk to an OpenAI-compatible endpoint or lets you override the client configuration. In practice, most integration work is...",
        "canonical_url": "https://corvusllm.com/faq/does-corvusllm-work-with-langchain-and-similar-orchestration-libraries/",
        "word_count": 324,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "72e2a4331f1620f428754550e4744cc7bb491fc7556cf6a4994cac9b9db9e810"
      },
      "uniqueness_contract": {
        "identity_hash": "c2985dc8e86c13ed19241cdb1454b6c28a648983b7e2a728190b6596ad590751",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.3,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-i-keep-using-the-official-openai-sdk-in-my-app/",
      "canonical_url": "https://corvusllm.com/faq/can-i-keep-using-the-official-openai-sdk-in-my-app/",
      "static_file": "faq/can-i-keep-using-the-official-openai-sdk-in-my-app/index.html",
      "source_file": "faq-data.js",
      "source_key": "developer-integrations:can-i-keep-using-the-official-openai-sdk-in-my-app",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "LangChain / SDK / Developer Integrations",
        "question": "Can I keep using the official OpenAI SDK in my app?",
        "answer_length": 189
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Can I keep using the official OpenAI SDK in my app? | CorvusLLM",
        "h1": "Can I keep using the official OpenAI SDK in my app?",
        "meta_description": "Often yes, if your setup supports a base URL override and the relevant request shapes. That is the main reason the OpenAI-compatible positioning is...",
        "canonical_url": "https://corvusllm.com/faq/can-i-keep-using-the-official-openai-sdk-in-my-app/",
        "word_count": 320,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "784bbefb1efc3d0f00c58a29b775730e21c351fb6fa5fc4e889247a64f52fade"
      },
      "uniqueness_contract": {
        "identity_hash": "b2e7c5074e07d7b59b5f04d0f45e1fc6b0954cc72c3c81c0bc0d3c78a5de0ef6",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.28,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/should-i-put-the-key-in-server-environment-variables-for-production-apps/",
      "canonical_url": "https://corvusllm.com/faq/should-i-put-the-key-in-server-environment-variables-for-production-apps/",
      "static_file": "faq/should-i-put-the-key-in-server-environment-variables-for-production-apps/index.html",
      "source_file": "faq-data.js",
      "source_key": "developer-integrations:should-i-put-the-key-in-server-environment-variables-for-production-apps",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "LangChain / SDK / Developer Integrations",
        "question": "Should I put the key in server environment variables for production apps?",
        "answer_length": 128
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Production API Key Storage | CorvusLLM",
        "h1": "Should I put the key in server environment variables for production apps?",
        "meta_description": "Yes, that is the normal secure default. Avoid hardcoding keys in frontend bundles, public repos, or client-side browser storage.",
        "canonical_url": "https://corvusllm.com/faq/should-i-put-the-key-in-server-environment-variables-for-production-apps/",
        "word_count": 297,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "b2ebc218ae163a93b9643e0d1c406e7d76492c4cec7e71c6586de3d59e40663e"
      },
      "uniqueness_contract": {
        "identity_hash": "338be2f03e114ccaab8d64bae5ce6f6964b7543c8dcbe86ea8ffba0d347ee390",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.19,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-i-use-corvusllm-in-n8n-cron-jobs-or-backend-scripts/",
      "canonical_url": "https://corvusllm.com/faq/can-i-use-corvusllm-in-n8n-cron-jobs-or-backend-scripts/",
      "static_file": "faq/can-i-use-corvusllm-in-n8n-cron-jobs-or-backend-scripts/index.html",
      "source_file": "faq-data.js",
      "source_key": "developer-integrations:can-i-use-corvusllm-in-n8n-cron-jobs-or-backend-scripts",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "LangChain / SDK / Developer Integrations",
        "question": "Can I use CorvusLLM in n8n, cron jobs, or backend scripts?",
        "answer_length": 215
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Use CorvusLLM in n8n, cron jobs, or backend scripts? | CorvusLLM",
        "h1": "Can I use CorvusLLM in n8n, cron jobs, or backend scripts?",
        "meta_description": "Yes, as long as the tool can call a compatible API endpoint and you manage the key securely. CorvusLLM is often most useful when it slips into an...",
        "canonical_url": "https://corvusllm.com/faq/can-i-use-corvusllm-in-n8n-cron-jobs-or-backend-scripts/",
        "word_count": 329,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "3177a172ee3ec5c127ec121b7793b3189e5cafe2d9b840422b173a455b60dae8"
      },
      "uniqueness_contract": {
        "identity_hash": "2edc6d35b00f2f714218f145ca3c3fe5ef25a354a8ebeeab125909cf15680783",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.32,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/how-should-i-separate-development-and-production-usage/",
      "canonical_url": "https://corvusllm.com/faq/how-should-i-separate-development-and-production-usage/",
      "static_file": "faq/how-should-i-separate-development-and-production-usage/index.html",
      "source_file": "faq-data.js",
      "source_key": "developer-integrations:how-should-i-separate-development-and-production-usage",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "LangChain / SDK / Developer Integrations",
        "question": "How should I separate development and production usage?",
        "answer_length": 197
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Separate development and production usage? | CorvusLLM",
        "h1": "How should I separate development and production usage?",
        "meta_description": "Use different keys or separate orders when possible, especially for business projects. Clean environment separation makes troubleshooting, revocation...",
        "canonical_url": "https://corvusllm.com/faq/how-should-i-separate-development-and-production-usage/",
        "word_count": 297,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "a37daa120f65762faed7a9c9e81edcee8c07d734d62f71fddee4512250e16063"
      },
      "uniqueness_contract": {
        "identity_hash": "0bb7edd147cf36fc1d71337654774bdd2279c4d2ea3ec91204499e06b35fd412",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.19,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/what-personal-data-do-you-actually-need-to-process-a-public-order/",
      "canonical_url": "https://corvusllm.com/faq/what-personal-data-do-you-actually-need-to-process-a-public-order/",
      "static_file": "faq/what-personal-data-do-you-actually-need-to-process-a-public-order/index.html",
      "source_file": "faq-data.js",
      "source_key": "privacy:what-personal-data-do-you-actually-need-to-process-a-public-order",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Data Handling & Privacy",
        "question": "What personal data do you actually need to process a public order?",
        "answer_length": 257
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Personal Data Needed for Orders | CorvusLLM",
        "h1": "What personal data do you actually need to process a public order?",
        "meta_description": "The public checkout mainly needs the delivery email address plus order and payment metadata required to match the transfer and send the access details...",
        "canonical_url": "https://corvusllm.com/faq/what-personal-data-do-you-actually-need-to-process-a-public-order/",
        "word_count": 332,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "ec222bd130434c32a7e7685d3252d5bc1bc051a5a520972c0d25b32e914b9880"
      },
      "uniqueness_contract": {
        "identity_hash": "2e08e5679fedf3ab1682df2a9864b371280bc3d0d62b9aa6ff6f04d99d36eaa5",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.33,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/do-you-store-any-credit-card-information/",
      "canonical_url": "https://corvusllm.com/faq/do-you-store-any-credit-card-information/",
      "static_file": "faq/do-you-store-any-credit-card-information/index.html",
      "source_file": "faq-data.js",
      "source_key": "privacy:do-you-store-any-credit-card-information",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Data Handling & Privacy",
        "question": "Do you store any credit card information?",
        "answer_length": 296
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Do you store any credit card information? | CorvusLLM",
        "h1": "Do you store any credit card information?",
        "meta_description": "CorvusLLM does not store card numbers. When card, wallet, PayPal, Klarna, bank transfer, or similar hosted checkout methods are available, the payment...",
        "canonical_url": "https://corvusllm.com/faq/do-you-store-any-credit-card-information/",
        "word_count": 342,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "6d53ae4c0a1afcfe2e85e262ccb93274b94bcbe0593bc125b02b376de8b0afc1"
      },
      "uniqueness_contract": {
        "identity_hash": "0a8b0952151e9e68fa571af3bc6fc834517b8e5d0c4f693d257c7d36828f111f",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.37,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/does-the-browser-keep-my-key-or-full-checkout-data-in-local-storage/",
      "canonical_url": "https://corvusllm.com/faq/does-the-browser-keep-my-key-or-full-checkout-data-in-local-storage/",
      "static_file": "faq/does-the-browser-keep-my-key-or-full-checkout-data-in-local-storage/index.html",
      "source_file": "faq-data.js",
      "source_key": "privacy:does-the-browser-keep-my-key-or-full-checkout-data-in-local-storage",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Data Handling & Privacy",
        "question": "Does the browser keep my key or full checkout data in local storage?",
        "answer_length": 184
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Browser Storage for Keys and Checkout | CorvusLLM",
        "h1": "Does the browser keep my key or full checkout data in local storage?",
        "meta_description": "The public checkout is intentionally careful about client-side storage. It avoids storing API keys in the browser and keeps checkout recovery state...",
        "canonical_url": "https://corvusllm.com/faq/does-the-browser-keep-my-key-or-full-checkout-data-in-local-storage/",
        "word_count": 313,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "8d69d476ff171a6892af3b070ab81e307139d524c06404419225601bcb1d7728"
      },
      "uniqueness_contract": {
        "identity_hash": "003520789c0872faf8ef49147a3b381cc70b56e3dd18c684e740dde394122f7b",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.25,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/should-i-send-highly-sensitive-prompts-or-company-secrets-through-corvusllm/",
      "canonical_url": "https://corvusllm.com/faq/should-i-send-highly-sensitive-prompts-or-company-secrets-through-corvusllm/",
      "static_file": "faq/should-i-send-highly-sensitive-prompts-or-company-secrets-through-corvusllm/index.html",
      "source_file": "faq-data.js",
      "source_key": "privacy:should-i-send-highly-sensitive-prompts-or-company-secrets-through-corvusllm",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Data Handling & Privacy",
        "question": "Should I send highly sensitive prompts or company secrets through CorvusLLM?",
        "answer_length": 232
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Sensitive Prompts and Company Secrets | CorvusLLM",
        "h1": "Should I send highly sensitive prompts or company secrets through CorvusLLM?",
        "meta_description": "Only if that fits your own internal risk standards. Teams handling sensitive information should treat CorvusLLM like any other third-party technical...",
        "canonical_url": "https://corvusllm.com/faq/should-i-send-highly-sensitive-prompts-or-company-secrets-through-corvusllm/",
        "word_count": 322,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "ab8327927a7bd5d60749efa04ea05309f4695630802a3b90e134e90d170bd889"
      },
      "uniqueness_contract": {
        "identity_hash": "f1c5b523048ae5fb7b1c55d329d1f2f15bbcd67a0bed887d3404fa55865c9332",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.29,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/where-can-i-read-the-actual-privacy-policy-instead-of-just-marketing-copy/",
      "canonical_url": "https://corvusllm.com/faq/where-can-i-read-the-actual-privacy-policy-instead-of-just-marketing-copy/",
      "static_file": "faq/where-can-i-read-the-actual-privacy-policy-instead-of-just-marketing-copy/index.html",
      "source_file": "faq-data.js",
      "source_key": "privacy:where-can-i-read-the-actual-privacy-policy-instead-of-just-marketing-copy",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Data Handling & Privacy",
        "question": "Where can I read the actual privacy policy instead of just marketing copy?",
        "answer_length": 154
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Where to Read the Privacy Policy | CorvusLLM",
        "h1": "Where can I read the actual privacy policy instead of just marketing copy?",
        "meta_description": "Use the Datenschutz page. That page is the right place for data-processing detail, while the FAQ is only meant to summarize the practical buyer questions.",
        "canonical_url": "https://corvusllm.com/faq/where-can-i-read-the-actual-privacy-policy-instead-of-just-marketing-copy/",
        "word_count": 306,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "b1b1b6e07671dd4a5b1df067beaf66eb3851318fdf6a4aa6259133a49a84e691"
      },
      "uniqueness_contract": {
        "identity_hash": "98bb996e665a7e7f116463ae1f324b77785490705e674924fc770ddb47ce5757",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.22,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/is-corvusllm-automatically-suitable-for-regulated-or-compliance-heavy-workloads/",
      "canonical_url": "https://corvusllm.com/faq/is-corvusllm-automatically-suitable-for-regulated-or-compliance-heavy-workloads/",
      "static_file": "faq/is-corvusllm-automatically-suitable-for-regulated-or-compliance-heavy-workloads/index.html",
      "source_file": "faq-data.js",
      "source_key": "security-limitations:is-corvusllm-automatically-suitable-for-regulated-or-compliance-heavy-workloads",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Security / Limitations / Compliance",
        "question": "Is CorvusLLM automatically suitable for regulated or compliance-heavy workloads?",
        "answer_length": 239
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Regulated Workload Suitability | CorvusLLM",
        "h1": "Is CorvusLLM automatically suitable for regulated or compliance-heavy workloads?",
        "meta_description": "No product should be treated that way by default. If you have strict compliance, vendor review, or regulated-data requirements, you need to evaluate...",
        "canonical_url": "https://corvusllm.com/faq/is-corvusllm-automatically-suitable-for-regulated-or-compliance-heavy-workloads/",
        "word_count": 328,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "d7baeb41df260b6109c39ca2b4ba73365697fe1d6e0d0a47a7e261f9571b9879"
      },
      "uniqueness_contract": {
        "identity_hash": "bbebc63bd3e26c8957ed911426cbb0eb8495281705f16706574e249fd1158a88",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.31,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/does-the-browser-confirm-payments-on-its-own/",
      "canonical_url": "https://corvusllm.com/faq/does-the-browser-confirm-payments-on-its-own/",
      "static_file": "faq/does-the-browser-confirm-payments-on-its-own/index.html",
      "source_file": "faq-data.js",
      "source_key": "security-limitations:does-the-browser-confirm-payments-on-its-own",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Security / Limitations / Compliance",
        "question": "Does the browser confirm payments on its own?",
        "answer_length": 208
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Does the browser confirm payments on its own? | CorvusLLM",
        "h1": "Does the browser confirm payments on its own?",
        "meta_description": "No, the browser should not be treated as the source of truth for payment confirmation. The payment state needs server-side or backend-backed...",
        "canonical_url": "https://corvusllm.com/faq/does-the-browser-confirm-payments-on-its-own/",
        "word_count": 323,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "04e82d04b480a0eb922221244c63b9739a3f49da512a0abec713ff8ecd9d29c4"
      },
      "uniqueness_contract": {
        "identity_hash": "87a1a6295fa218f1c5b10772995ff25dcf705c273046f1c7e0d7b8d62c0a087a",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.29,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/does-the-public-site-promise-an-enterprise-sla/",
      "canonical_url": "https://corvusllm.com/faq/does-the-public-site-promise-an-enterprise-sla/",
      "static_file": "faq/does-the-public-site-promise-an-enterprise-sla/index.html",
      "source_file": "faq-data.js",
      "source_key": "security-limitations:does-the-public-site-promise-an-enterprise-sla",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Security / Limitations / Compliance",
        "question": "Does the public site promise an enterprise SLA?",
        "answer_length": 216
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Does the public site promise an enterprise SLA? | CorvusLLM",
        "h1": "Does the public site promise an enterprise SLA?",
        "meta_description": "No public enterprise SLA is promised on the marketing site. If your buying decision depends on formal uptime commitments, you should treat that as a...",
        "canonical_url": "https://corvusllm.com/faq/does-the-public-site-promise-an-enterprise-sla/",
        "word_count": 330,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "6f43bd9d3e6d3ed07cf46a162d8ae468655f52cd01080d4fc07c5bf1a3bd313e"
      },
      "uniqueness_contract": {
        "identity_hash": "3be2cfe6d1370c9622a1f2be85483bf45c63265ead72c8470e762b150ed1e7b9",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.32,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-i-rely-on-corvusllm-outputs-for-legal-medical-or-other-high-stakes-decisions-without-review/",
      "canonical_url": "https://corvusllm.com/faq/can-i-rely-on-corvusllm-outputs-for-legal-medical-or-other-high-stakes-decisions-without-review/",
      "static_file": "faq/can-i-rely-on-corvusllm-outputs-for-legal-medical-or-other-high-stakes-decisions-without-review/index.html",
      "source_file": "faq-data.js",
      "source_key": "security-limitations:can-i-rely-on-corvusllm-outputs-for-legal-medical-or-other-high-stakes-decisions-without-review",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Security / Limitations / Compliance",
        "question": "Can I rely on CorvusLLM outputs for legal, medical, or other high-stakes decisions without review?",
        "answer_length": 144
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "High-Stakes Output Review | CorvusLLM",
        "h1": "Can I rely on CorvusLLM outputs for legal, medical, or other high-stakes decisions without review?",
        "meta_description": "No. Model output should still be reviewed by a qualified human where stakes are high, whether the access path is CorvusLLM or a direct provider.",
        "canonical_url": "https://corvusllm.com/faq/can-i-rely-on-corvusllm-outputs-for-legal-medical-or-other-high-stakes-decisions-without-review/",
        "word_count": 304,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "a3bc9b79934ecda6af5ed90837dd5a4bea2a598827fb467314be51d20fa48e49"
      },
      "uniqueness_contract": {
        "identity_hash": "7216f1a571255931c969963cce1c999638adea5f52052fc53f9cdd94c94b771d",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.22,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/are-there-clear-usage-boundaries-on-what-i-should-not-do-with-the-service/",
      "canonical_url": "https://corvusllm.com/faq/are-there-clear-usage-boundaries-on-what-i-should-not-do-with-the-service/",
      "static_file": "faq/are-there-clear-usage-boundaries-on-what-i-should-not-do-with-the-service/index.html",
      "source_file": "faq-data.js",
      "source_key": "security-limitations:are-there-clear-usage-boundaries-on-what-i-should-not-do-with-the-service",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Security / Limitations / Compliance",
        "question": "Are there clear usage boundaries on what I should not do with the service?",
        "answer_length": 183
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Service Usage Boundaries | CorvusLLM",
        "h1": "Are there clear usage boundaries on what I should not do with the service?",
        "meta_description": "Yes. Use should stay lawful, policy-compliant, and operationally reasonable, and buyers should not expect the public site to bless abusive or risky use...",
        "canonical_url": "https://corvusllm.com/faq/are-there-clear-usage-boundaries-on-what-i-should-not-do-with-the-service/",
        "word_count": 310,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "1b47abe3d7a0328400898de3f347cf1573c6b2f33581dd267865ccd34a2196c5"
      },
      "uniqueness_contract": {
        "identity_hash": "20b7c32d475f6f8f84c83c960100aaf496ee9d4f6551626e43c6b15482c90795",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.24,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/is-there-a-status-page-i-can-check-before-opening-support/",
      "canonical_url": "https://corvusllm.com/faq/is-there-a-status-page-i-can-check-before-opening-support/",
      "static_file": "faq/is-there-a-status-page-i-can-check-before-opening-support/index.html",
      "source_file": "faq-data.js",
      "source_key": "reliability-status:is-there-a-status-page-i-can-check-before-opening-support",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Reliability / Status / Rate Limits",
        "question": "Is there a status page I can check before opening support?",
        "answer_length": 122
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "A status page I can check before opening support? | CorvusLLM",
        "h1": "Is there a status page I can check before opening support?",
        "meta_description": "Yes. The status page is the fastest place to look when you want to know whether a broader issue is already known publicly.",
        "canonical_url": "https://corvusllm.com/faq/is-there-a-status-page-i-can-check-before-opening-support/",
        "word_count": 303,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "f2c16b9cf4ce0b665392ab827433f0d47858e4a7d7bccef7b6cecf42c9ac4842"
      },
      "uniqueness_contract": {
        "identity_hash": "92177711b4e834cf335eb7af5a535de4f369f4b4da1d6cc199d3fb1079af1733",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.21,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/what-happens-if-an-upstream-model-or-provider-has-an-outage/",
      "canonical_url": "https://corvusllm.com/faq/what-happens-if-an-upstream-model-or-provider-has-an-outage/",
      "static_file": "faq/what-happens-if-an-upstream-model-or-provider-has-an-outage/index.html",
      "source_file": "faq-data.js",
      "source_key": "reliability-status:what-happens-if-an-upstream-model-or-provider-has-an-outage",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Reliability / Status / Rate Limits",
        "question": "What happens if an upstream model or provider has an outage?",
        "answer_length": 236
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "An upstream model or provider has an outage? | CorvusLLM",
        "h1": "What happens if an upstream model or provider has an outage?",
        "meta_description": "CorvusLLM cannot make an upstream outage disappear, but it can surface the situation and support alternative paths where available. That is one reason...",
        "canonical_url": "https://corvusllm.com/faq/what-happens-if-an-upstream-model-or-provider-has-an-outage/",
        "word_count": 327,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "436a57736c8b359d2dcf188bf246e8ee4d24d554b4927cb26f66309ce3184186"
      },
      "uniqueness_contract": {
        "identity_hash": "1bbdc75b167ae9d8162def29bc84395821cf5a439f017c4dfea0fc67e298432c",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.31,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/are-there-rate-limits-or-fairness-protections/",
      "canonical_url": "https://corvusllm.com/faq/are-there-rate-limits-or-fairness-protections/",
      "static_file": "faq/are-there-rate-limits-or-fairness-protections/index.html",
      "source_file": "faq-data.js",
      "source_key": "reliability-status:are-there-rate-limits-or-fairness-protections",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Reliability / Status / Rate Limits",
        "question": "Are there rate limits or fairness protections?",
        "answer_length": 215
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Are there rate limits or fairness protections? | CorvusLLM",
        "h1": "Are there rate limits or fairness protections?",
        "meta_description": "Yes, infrastructure protections and fair-use boundaries can exist even when a plan feels generous. If your workflow is unusually heavy, design with...",
        "canonical_url": "https://corvusllm.com/faq/are-there-rate-limits-or-fairness-protections/",
        "word_count": 316,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "532b4bb2bf41eb48a36d1ffe981f780db63a9d6d9258633a0bc68297c55756c6"
      },
      "uniqueness_contract": {
        "identity_hash": "07c92fa779bdfc21b8dd04658916b84eb4cecb8efead19202e15d9d2051bcfc0",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.26,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/why-can-payment-status-stay-on-waiting-for-a-while-even-after-i-sent-funds/",
      "canonical_url": "https://corvusllm.com/faq/why-can-payment-status-stay-on-waiting-for-a-while-even-after-i-sent-funds/",
      "static_file": "faq/why-can-payment-status-stay-on-waiting-for-a-while-even-after-i-sent-funds/index.html",
      "source_file": "faq-data.js",
      "source_key": "reliability-status:why-can-payment-status-stay-on-waiting-for-a-while-even-after-i-sent-funds",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Reliability / Status / Rate Limits",
        "question": "Why can payment status stay on waiting for a while even after I sent funds?",
        "answer_length": 234
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Payment Waiting Status After Transfer | CorvusLLM",
        "h1": "Why can payment status stay on waiting for a while even after I sent funds?",
        "meta_description": "Because crypto settlement and monitoring are not the same thing as a card authorization popup. Chain confirmations, webhook timing, and backend...",
        "canonical_url": "https://corvusllm.com/faq/why-can-payment-status-stay-on-waiting-for-a-while-even-after-i-sent-funds/",
        "word_count": 323,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "7589faf41fe60ae2319f0728bfdebd4beec89376ce70aee5934accd539aa474a"
      },
      "uniqueness_contract": {
        "identity_hash": "87bc8506d2923e2c61e7a15c3c86381d012802f6287a8fe779e4aca5e25896d7",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.29,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/what-should-i-do-if-an-order-still-looks-stuck-after-the-transfer-is-confirmed-on-chain/",
      "canonical_url": "https://corvusllm.com/faq/what-should-i-do-if-an-order-still-looks-stuck-after-the-transfer-is-confirmed-on-chain/",
      "static_file": "faq/what-should-i-do-if-an-order-still-looks-stuck-after-the-transfer-is-confirmed-on-chain/index.html",
      "source_file": "faq-data.js",
      "source_key": "reliability-status:what-should-i-do-if-an-order-still-looks-stuck-after-the-transfer-is-confirmed-on-chain",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Reliability / Status / Rate Limits",
        "question": "What should I do if an order still looks stuck after the transfer is confirmed on-chain?",
        "answer_length": 239
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Stuck Order After Confirmed Transfer | CorvusLLM",
        "h1": "What should I do if an order still looks stuck after the transfer is confirmed on-chain?",
        "meta_description": "Keep the order number and transaction proof, then use the built-in status check and contact support if the state does not move after a reasonable...",
        "canonical_url": "https://corvusllm.com/faq/what-should-i-do-if-an-order-still-looks-stuck-after-the-transfer-is-confirmed-on-chain/",
        "word_count": 338,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "c3af6d6d356b0338e561b011ad8a53202a10f2f3a89486863ef268b70dadb2e8"
      },
      "uniqueness_contract": {
        "identity_hash": "04c24c848aa90f7ae2fc734d0a672b223ed44edb5a08b60bc4b06546d3f7d171",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.35,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/how-can-i-vet-corvusllm-before-placing-a-larger-order/",
      "canonical_url": "https://corvusllm.com/faq/how-can-i-vet-corvusllm-before-placing-a-larger-order/",
      "static_file": "faq/how-can-i-vet-corvusllm-before-placing-a-larger-order/index.html",
      "source_file": "faq-data.js",
      "source_key": "trust-verification:how-can-i-vet-corvusllm-before-placing-a-larger-order",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Trust / Verification / Legitimacy",
        "question": "How can I vet CorvusLLM before placing a larger order?",
        "answer_length": 226
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Vet CorvusLLM before placing a larger order? | CorvusLLM",
        "h1": "How can I vet CorvusLLM before placing a larger order?",
        "meta_description": "Use the verification, trust, proof, compatibility, and status pages together rather than trusting any single page in isolation. The safest pattern is...",
        "canonical_url": "https://corvusllm.com/faq/how-can-i-vet-corvusllm-before-placing-a-larger-order/",
        "word_count": 321,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "67ff776925de7b5800bf80bf9c7a961795e9ad32e9464911ec01bd421cf01f00"
      },
      "uniqueness_contract": {
        "identity_hash": "434e6105475b31ed3879477b72e640b82b8d30e4473bf79477db57cfdd7a6e13",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.28,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/which-payment-methods-are-currently-available/",
      "canonical_url": "https://corvusllm.com/faq/which-payment-methods-are-currently-available/",
      "static_file": "faq/which-payment-methods-are-currently-available/index.html",
      "source_file": "faq-data.js",
      "source_key": "trust-verification:which-payment-methods-are-currently-available",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Trust / Verification / Legitimacy",
        "question": "Which payment methods are currently available?",
        "answer_length": 241
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Which payment methods are currently available? | CorvusLLM",
        "h1": "Which payment methods are currently available?",
        "meta_description": "The checkout shows the currently enabled payment methods before you create an order. Cryptocurrency is currently accepted, and any card or wallet...",
        "canonical_url": "https://corvusllm.com/faq/which-payment-methods-are-currently-available/",
        "word_count": 323,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "fca1a21666db2598c2d79b093a2b6df1e40ab76713505bb696c9b7145058062f"
      },
      "uniqueness_contract": {
        "identity_hash": "7ec1ac06aa81e6a27cafd39b9076fbca19a887e01fd3c522bb950e34bbf96245",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.29,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/do-you-publish-fake-reviews-or-fake-rating-averages-to-look-bigger-than-you-are/",
      "canonical_url": "https://corvusllm.com/faq/do-you-publish-fake-reviews-or-fake-rating-averages-to-look-bigger-than-you-are/",
      "static_file": "faq/do-you-publish-fake-reviews-or-fake-rating-averages-to-look-bigger-than-you-are/index.html",
      "source_file": "faq-data.js",
      "source_key": "trust-verification:do-you-publish-fake-reviews-or-fake-rating-averages-to-look-bigger-than-you-are",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Trust / Verification / Legitimacy",
        "question": "Do you publish fake reviews or fake rating averages to look bigger than you are?",
        "answer_length": 215
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Fake Reviews and Rating Claims | CorvusLLM",
        "h1": "Do you publish fake reviews or fake rating averages to look bigger than you are?",
        "meta_description": "No. The customer stories page is intentionally designed to stay sparse until real moderated feedback exists, and aggregate rating claims stay hidden...",
        "canonical_url": "https://corvusllm.com/faq/do-you-publish-fake-reviews-or-fake-rating-averages-to-look-bigger-than-you-are/",
        "word_count": 312,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "d1cae07ed235661b06cd19246a0532edcfb20ef7d33675f312e1e3ad1715ab9b"
      },
      "uniqueness_contract": {
        "identity_hash": "a213f5f67e79158cc6dc390969cd8a199e14d1c18e1b6854120767849cb9dfea",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.25,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/is-there-proof-beyond-testimonials-and-nice-looking-ui/",
      "canonical_url": "https://corvusllm.com/faq/is-there-proof-beyond-testimonials-and-nice-looking-ui/",
      "static_file": "faq/is-there-proof-beyond-testimonials-and-nice-looking-ui/index.html",
      "source_file": "faq-data.js",
      "source_key": "trust-verification:is-there-proof-beyond-testimonials-and-nice-looking-ui",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Trust / Verification / Legitimacy",
        "question": "Is there proof beyond testimonials and nice-looking UI?",
        "answer_length": 214
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Proof beyond testimonials and nice-looking UI? | CorvusLLM",
        "h1": "Is there proof beyond testimonials and nice-looking UI?",
        "meta_description": "Yes, that is why the site includes pages like Trust Center, Verify CorvusLLM, Proof of Operations, Service Status, and Compatibility Matrix. Those...",
        "canonical_url": "https://corvusllm.com/faq/is-there-proof-beyond-testimonials-and-nice-looking-ui/",
        "word_count": 314,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "112aad780116e7671f64927e66a28e9f1a667d2b7d001296e9e09e62637adae5"
      },
      "uniqueness_contract": {
        "identity_hash": "969b5d56b151ebe5f093ccdddb252d5dc3400d5be07ed2e4619d8aa70286ba9b",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.26,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/are-these-real-claude-models/",
      "canonical_url": "https://corvusllm.com/faq/are-these-real-claude-models/",
      "static_file": "faq/are-these-real-claude-models/index.html",
      "source_file": "faq-data.js",
      "source_key": "trust-verification:are-these-real-claude-models",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Trust / Verification / Legitimacy",
        "question": "Are these real Claude models?",
        "answer_length": 350
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Are these real Claude models? | CorvusLLM",
        "h1": "Are these real Claude models?",
        "meta_description": "Yes. The Claude models available on CorvusLLM are the same Claude models developed by Anthropic, including Claude Opus 4.7, Claude Sonnet 4.6, and...",
        "canonical_url": "https://corvusllm.com/faq/are-these-real-claude-models/",
        "word_count": 346,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "e4219e4595ef3e259a8585cbecdcb4cfc5e04efca7c32a50c24eb99db6d3bf04"
      },
      "uniqueness_contract": {
        "identity_hash": "e1c0bfecbd42f7ae4c60176dbbf194e1b8acbefbacd73f3259d5706de485c8ab",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.38,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/why-does-the-model-sometimes-say-its-name-is-kiro/",
      "canonical_url": "https://corvusllm.com/faq/why-does-the-model-sometimes-say-its-name-is-kiro/",
      "static_file": "faq/why-does-the-model-sometimes-say-its-name-is-kiro/index.html",
      "source_file": "faq-data.js",
      "source_key": "trust-verification:why-does-the-model-sometimes-say-its-name-is-kiro",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Trust / Verification / Legitimacy",
        "question": "Why does the model sometimes say its name is Kiro?",
        "answer_length": 372
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Why does the model sometimes say its name is Kiro? | CorvusLLM",
        "h1": "Why does the model sometimes say its name is Kiro?",
        "meta_description": "The upstream AWS routing layer can include a system-level context from the Kiro environment. That can occasionally cause the model to identify itself...",
        "canonical_url": "https://corvusllm.com/faq/why-does-the-model-sometimes-say-its-name-is-kiro/",
        "word_count": 387,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "79fca1c7c28adc40ef8758d36d06489bbad0cd4be88f058765b40b0e78dc8d02"
      },
      "uniqueness_contract": {
        "identity_hash": "668a78dc3252f19f122870cd1034a24b498c6872825c07bd89f5331399c2dd09",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.55,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/how-do-i-know-it-is-the-same-claude-as-on-claude-ai/",
      "canonical_url": "https://corvusllm.com/faq/how-do-i-know-it-is-the-same-claude-as-on-claude-ai/",
      "static_file": "faq/how-do-i-know-it-is-the-same-claude-as-on-claude-ai/index.html",
      "source_file": "faq-data.js",
      "source_key": "trust-verification:how-do-i-know-it-is-the-same-claude-as-on-claude-ai",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Trust / Verification / Legitimacy",
        "question": "How do I know it is the same Claude as on claude.ai?",
        "answer_length": 298
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "How do I know it is the same Claude as on claude.ai? | CorvusLLM",
        "h1": "How do I know it is the same Claude as on claude.ai?",
        "meta_description": "The practical way to verify it is to test it yourself. Send a harder coding task, math problem, or reasoning question and compare the output quality to...",
        "canonical_url": "https://corvusllm.com/faq/how-do-i-know-it-is-the-same-claude-as-on-claude-ai/",
        "word_count": 359,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "1b864506ba6303953637e1289f5b1f71725e8aa0497947e7b9338a29fa68329f"
      },
      "uniqueness_contract": {
        "identity_hash": "d9ea7ed2c0c2ee47ea0c6db2dda0dff2d99243050d795c4dcc79b6a7986b8c7f",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.44,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-i-verify-tool-compatibility-before-i-buy/",
      "canonical_url": "https://corvusllm.com/faq/can-i-verify-tool-compatibility-before-i-buy/",
      "static_file": "faq/can-i-verify-tool-compatibility-before-i-buy/index.html",
      "source_file": "faq-data.js",
      "source_key": "trust-verification:can-i-verify-tool-compatibility-before-i-buy",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Trust / Verification / Legitimacy",
        "question": "Can I verify tool compatibility before I buy?",
        "answer_length": 145
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Can I verify tool compatibility before I buy? | CorvusLLM",
        "h1": "Can I verify tool compatibility before I buy?",
        "meta_description": "Yes, and you should. The compatibility matrix, docs, examples, and dedicated setup pages are there so buyers can check fit before spending money.",
        "canonical_url": "https://corvusllm.com/faq/can-i-verify-tool-compatibility-before-i-buy/",
        "word_count": 296,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "8f0597e4a89482c2e57e19259476fb80266c2a8e141dc5e3f5ecd1e7cbc8c5ca"
      },
      "uniqueness_contract": {
        "identity_hash": "acb711c8b99f6830d0377389741486721c4bd10e37b44ffd6ed75bb5b49ed73e",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.18,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/my-order-still-says-awaiting-payment-even-though-i-sent-the-transfer-what-now/",
      "canonical_url": "https://corvusllm.com/faq/my-order-still-says-awaiting-payment-even-though-i-sent-the-transfer-what-now/",
      "static_file": "faq/my-order-still-says-awaiting-payment-even-though-i-sent-the-transfer-what-now/index.html",
      "source_file": "faq-data.js",
      "source_key": "troubleshooting:my-order-still-says-awaiting-payment-even-though-i-sent-the-transfer-what-now",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Troubleshooting",
        "question": "My order still says awaiting payment even though I sent the transfer. What now?",
        "answer_length": 261
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Awaiting Payment After Transfer | CorvusLLM",
        "h1": "My order still says awaiting payment even though I sent the transfer. What now?",
        "meta_description": "First confirm that you used the exact amount, exact address, and exact network shown by the order. If the chain transaction is confirmed and the order...",
        "canonical_url": "https://corvusllm.com/faq/my-order-still-says-awaiting-payment-even-though-i-sent-the-transfer-what-now/",
        "word_count": 358,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "f5811dc498650ebb78da21c669357c011fe7416cf438b231f94ee8e8041d06cc"
      },
      "uniqueness_contract": {
        "identity_hash": "bff15f3ffcbe8f52989eaa25db6d70d530bd841835c5941deb6936879ec556d2",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.43,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/i-never-received-the-confirmation-or-delivery-email-what-should-i-check-first/",
      "canonical_url": "https://corvusllm.com/faq/i-never-received-the-confirmation-or-delivery-email-what-should-i-check-first/",
      "static_file": "faq/i-never-received-the-confirmation-or-delivery-email-what-should-i-check-first/index.html",
      "source_file": "faq-data.js",
      "source_key": "troubleshooting:i-never-received-the-confirmation-or-delivery-email-what-should-i-check-first",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Troubleshooting",
        "question": "I never received the confirmation or delivery email. What should I check first?",
        "answer_length": 204
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Missing Confirmation or Delivery Email | CorvusLLM",
        "h1": "I never received the confirmation or delivery email. What should I check first?",
        "meta_description": "Check the inbox you entered at checkout, then spam or junk, then confirm the order number with support. If the email address was entered wrong, support...",
        "canonical_url": "https://corvusllm.com/faq/i-never-received-the-confirmation-or-delivery-email-what-should-i-check-first/",
        "word_count": 340,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "abe2e189bf3d82e8c714db19bc3d013cfbb81595884188593612f1031c5a43a7"
      },
      "uniqueness_contract": {
        "identity_hash": "d13ed5d4825311e41562a61049ceffa269b63e1f4aa1165d6264ec9da21a0fa3",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.36,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/my-key-works-in-one-tool-but-not-another-does-that-mean-the-service-is-broken/",
      "canonical_url": "https://corvusllm.com/faq/my-key-works-in-one-tool-but-not-another-does-that-mean-the-service-is-broken/",
      "static_file": "faq/my-key-works-in-one-tool-but-not-another-does-that-mean-the-service-is-broken/index.html",
      "source_file": "faq-data.js",
      "source_key": "troubleshooting:my-key-works-in-one-tool-but-not-another-does-that-mean-the-service-is-broken",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Troubleshooting",
        "question": "My key works in one tool but not another. Does that mean the service is broken?",
        "answer_length": 181
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Key Works in One Tool but Not Another | CorvusLLM",
        "h1": "My key works in one tool but not another. Does that mean the service is broken?",
        "meta_description": "Not necessarily. It usually means one tool is configured correctly and the other has a wrong base URL, wrong model name, or a feature mismatch that...",
        "canonical_url": "https://corvusllm.com/faq/my-key-works-in-one-tool-but-not-another-does-that-mean-the-service-is-broken/",
        "word_count": 337,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "930746a301824aacb643fae8bfb8e7c7b83bb7cb9ddd19ad142f3c8686d665c3"
      },
      "uniqueness_contract": {
        "identity_hash": "d2b3289ddedc89cee37ec922e249a9aadb851d5324ccbb9fbf088324922513f5",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.35,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/my-quote-expired-while-i-was-still-trying-to-pay-should-i-use-the-old-amount-anyway/",
      "canonical_url": "https://corvusllm.com/faq/my-quote-expired-while-i-was-still-trying-to-pay-should-i-use-the-old-amount-anyway/",
      "static_file": "faq/my-quote-expired-while-i-was-still-trying-to-pay-should-i-use-the-old-amount-anyway/index.html",
      "source_file": "faq-data.js",
      "source_key": "troubleshooting:my-quote-expired-while-i-was-still-trying-to-pay-should-i-use-the-old-amount-anyway",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Troubleshooting",
        "question": "My quote expired while I was still trying to pay. Should I use the old amount anyway?",
        "answer_length": 143
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Expired Quote During Payment | CorvusLLM",
        "h1": "My quote expired while I was still trying to pay. Should I use the old amount anyway?",
        "meta_description": "No, the safe path is to create a new order with a fresh quote. An expired quote means the original locked amount should not be trusted anymore.",
        "canonical_url": "https://corvusllm.com/faq/my-quote-expired-while-i-was-still-trying-to-pay-should-i-use-the-old-amount-anyway/",
        "word_count": 327,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "4cb51071cd11820c196c6cf40007294c2fea3ee9a767980c77b91da3eaa305da"
      },
      "uniqueness_contract": {
        "identity_hash": "27cc7df9e24bf4d426e47b9ac111544d813892df507345dc5dd859648c4c25d9",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.31,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/i-am-getting-model-not-found-unauthorized-or-similar-api-errors-where-should-i-look-first/",
      "canonical_url": "https://corvusllm.com/faq/i-am-getting-model-not-found-unauthorized-or-similar-api-errors-where-should-i-look-first/",
      "static_file": "faq/i-am-getting-model-not-found-unauthorized-or-similar-api-errors-where-should-i-look-first/index.html",
      "source_file": "faq-data.js",
      "source_key": "troubleshooting:i-am-getting-model-not-found-unauthorized-or-similar-api-errors-where-should-i-look-first",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Troubleshooting",
        "question": "I am getting model not found, unauthorized, or similar API errors. Where should I look first?",
        "answer_length": 209
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Model Not Found and Auth Errors | CorvusLLM",
        "h1": "I am getting model not found, unauthorized, or similar API errors. Where should I look first?",
        "meta_description": "Start with the basics: correct key, correct base URL, correct model ID, and a minimal test request. Most integration failures look mysterious at first...",
        "canonical_url": "https://corvusllm.com/faq/i-am-getting-model-not-found-unauthorized-or-similar-api-errors-where-should-i-look-first/",
        "word_count": 339,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "2c7354d6e69d0e2da4e53be3227fefdb34cbc7978e53383b89e5804b336f2e83"
      },
      "uniqueness_contract": {
        "identity_hash": "3ede182f713a06f6331783b9c17e637391bb0ceb4d9b828b1e7bbba677ca165f",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.36,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-a-team-use-corvusllm-for-internal-work/",
      "canonical_url": "https://corvusllm.com/faq/can-a-team-use-corvusllm-for-internal-work/",
      "static_file": "faq/can-a-team-use-corvusllm-for-internal-work/index.html",
      "source_file": "faq-data.js",
      "source_key": "teams-business:can-a-team-use-corvusllm-for-internal-work",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Teams / Business Use",
        "question": "Can a team use CorvusLLM for internal work?",
        "answer_length": 224
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Can a team use CorvusLLM for internal work? | CorvusLLM",
        "h1": "Can a team use CorvusLLM for internal work?",
        "meta_description": "Yes, teams can use it for internal workflows if their own security, procurement, and reliability standards allow it. The important part is treating...",
        "canonical_url": "https://corvusllm.com/faq/can-a-team-use-corvusllm-for-internal-work/",
        "word_count": 326,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "5067a9b26e789a893207d427c5eac45c0635557ce2cc7f21eb980c629dabfed6"
      },
      "uniqueness_contract": {
        "identity_hash": "6b23c0eeb796353b26b6fb749266361a0fd59a1ddbace8bef804761b8a46ae7d",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.3,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-we-buy-multiple-keys-for-different-users-or-environments/",
      "canonical_url": "https://corvusllm.com/faq/can-we-buy-multiple-keys-for-different-users-or-environments/",
      "static_file": "faq/can-we-buy-multiple-keys-for-different-users-or-environments/index.html",
      "source_file": "faq-data.js",
      "source_key": "teams-business:can-we-buy-multiple-keys-for-different-users-or-environments",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Teams / Business Use",
        "question": "Can we buy multiple keys for different users or environments?",
        "answer_length": 206
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Multiple Keys for Users or Environments | CorvusLLM",
        "h1": "Can we buy multiple keys for different users or environments?",
        "meta_description": "Yes, that is usually the cleaner approach when more than one person or environment needs access. Separate keys make revocation, auditing, and support...",
        "canonical_url": "https://corvusllm.com/faq/can-we-buy-multiple-keys-for-different-users-or-environments/",
        "word_count": 315,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "13b914fd9f48ed5e4e656ed40498cd0c684684f7345da4da75998a52cf0a7ccc"
      },
      "uniqueness_contract": {
        "identity_hash": "43a404c76f6687634eacb1ca639f03bb863c20b721e976bd189124018ae44b40",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.26,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/is-the-public-crypto-checkout-a-good-fit-for-companies-that-need-traditional-invoicing-or-procurement-approval/",
      "canonical_url": "https://corvusllm.com/faq/is-the-public-crypto-checkout-a-good-fit-for-companies-that-need-traditional-invoicing-or-procurement-approval/",
      "static_file": "faq/is-the-public-crypto-checkout-a-good-fit-for-companies-that-need-traditional-invoicing-or-procurement-approval/index.html",
      "source_file": "faq-data.js",
      "source_key": "teams-business:is-the-public-crypto-checkout-a-good-fit-for-companies-that-need-traditional-invoicing-or-procurement-approval",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Teams / Business Use",
        "question": "Is the public checkout a good fit for companies that need traditional invoicing or procurement approval?",
        "answer_length": 230
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Public Checkout for Company Procurement | CorvusLLM",
        "h1": "Is the public checkout a good fit for companies that need traditional invoicing or procurement approval?",
        "meta_description": "Often not by default. If your company needs formal invoicing, purchase orders, procurement approval, or a specific billing workflow, that is a real...",
        "canonical_url": "https://corvusllm.com/faq/is-the-public-crypto-checkout-a-good-fit-for-companies-that-need-traditional-invoicing-or-procurement-approval/",
        "word_count": 322,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "b22a8fca8b80b270ae920e41260958c6e2eca631c32878fbf6961724c8e5efe9"
      },
      "uniqueness_contract": {
        "identity_hash": "4d6210927e239bd58024772e2b10bb7f3834e2dd2a0946fb7730fc433fa57809",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.29,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/should-a-whole-team-share-one-key/",
      "canonical_url": "https://corvusllm.com/faq/should-a-whole-team-share-one-key/",
      "static_file": "faq/should-a-whole-team-share-one-key/index.html",
      "source_file": "faq-data.js",
      "source_key": "teams-business:should-a-whole-team-share-one-key",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Teams / Business Use",
        "question": "Should a whole team share one key?",
        "answer_length": 178
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Should a whole team share one key? | CorvusLLM",
        "h1": "Should a whole team share one key?",
        "meta_description": "That is usually not the cleanest long-term setup. Shared keys are harder to rotate, harder to audit, and harder to attribute when something breaks or...",
        "canonical_url": "https://corvusllm.com/faq/should-a-whole-team-share-one-key/",
        "word_count": 310,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "31d8e20c84fed2b2f6a76b517b1cf8dce0e956555b83da64f5c4bc512c3ca690"
      },
      "uniqueness_contract": {
        "identity_hash": "f23557fe0fd60cd35626ea64745fb0b664361bb3bd53cc34f4fddfd979d1ed1b",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.24,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-support-help-us-roll-corvusllm-out-across-several-tools/",
      "canonical_url": "https://corvusllm.com/faq/can-support-help-us-roll-corvusllm-out-across-several-tools/",
      "static_file": "faq/can-support-help-us-roll-corvusllm-out-across-several-tools/index.html",
      "source_file": "faq-data.js",
      "source_key": "teams-business:can-support-help-us-roll-corvusllm-out-across-several-tools",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Teams / Business Use",
        "question": "Can support help us roll CorvusLLM out across several tools?",
        "answer_length": 206
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Can support help us roll out across several tools? | CorvusLLM",
        "h1": "Can support help us roll CorvusLLM out across several tools?",
        "meta_description": "Support can help clarify setup questions, but you should still start with the docs, compatibility matrix, and examples to narrow the problem first...",
        "canonical_url": "https://corvusllm.com/faq/can-support-help-us-roll-corvusllm-out-across-several-tools/",
        "word_count": 319,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "b3cec500b5e9c8d4281fd1a59a49b10dba3cb20387ce247ebb5e15993cb582fc"
      },
      "uniqueness_contract": {
        "identity_hash": "e9e069e9c19c938a9558eed56ed8bb8535d7601a5d77c498419d0590e3b05163",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.28,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/which-model-family-is-usually-strongest-for-coding-work/",
      "canonical_url": "https://corvusllm.com/faq/which-model-family-is-usually-strongest-for-coding-work/",
      "static_file": "faq/which-model-family-is-usually-strongest-for-coding-work/index.html",
      "source_file": "faq-data.js",
      "source_key": "model-selection:which-model-family-is-usually-strongest-for-coding-work",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Model Selection / Choosing the Right Model",
        "question": "Which model family is usually strongest for coding work?",
        "answer_length": 269
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Model family is usually strongest for coding work? | CorvusLLM",
        "h1": "Which model family is usually strongest for coding work?",
        "meta_description": "That depends on your style of coding, the tool you use, and whether you care more about deep reasoning or lower cost. The practical answer is to...",
        "canonical_url": "https://corvusllm.com/faq/which-model-family-is-usually-strongest-for-coding-work/",
        "word_count": 359,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "caeaac77340a571a51e4ce11219722fe379685cb74bdfd4ace4cb7540f825fd7"
      },
      "uniqueness_contract": {
        "identity_hash": "9757c71324ab04e43885f8c64d4c9d020e03eb6c80f6903951a48c82f4efac67",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "low",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.44,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/what-should-i-choose-for-cost-sensitive-automation-rather-than-premium-reasoning/",
      "canonical_url": "https://corvusllm.com/faq/what-should-i-choose-for-cost-sensitive-automation-rather-than-premium-reasoning/",
      "static_file": "faq/what-should-i-choose-for-cost-sensitive-automation-rather-than-premium-reasoning/index.html",
      "source_file": "faq-data.js",
      "source_key": "model-selection:what-should-i-choose-for-cost-sensitive-automation-rather-than-premium-reasoning",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Model Selection / Choosing the Right Model",
        "question": "What should I choose for cost-sensitive automation rather than premium reasoning?",
        "answer_length": 232
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Cost-Sensitive Automation Models | CorvusLLM",
        "h1": "What should I choose for cost-sensitive automation rather than premium reasoning?",
        "meta_description": "Look for lower-cost model options and packs that prioritize throughput over prestige. If your workload is repetitive or structured, the cheapest...",
        "canonical_url": "https://corvusllm.com/faq/what-should-i-choose-for-cost-sensitive-automation-rather-than-premium-reasoning/",
        "word_count": 333,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "ca33abd6f11a368f26b9b0b1a4d0c09d747dd202ab0ae43b4b919d130d3e29b9"
      },
      "uniqueness_contract": {
        "identity_hash": "a7a9f867f1e0ea8f80a8004196f01335b1e91583c7c7a5f0da5f5b7e8b8ca246",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.33,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/what-is-the-safest-choice-for-general-purpose-use-when-i-am-unsure/",
      "canonical_url": "https://corvusllm.com/faq/what-is-the-safest-choice-for-general-purpose-use-when-i-am-unsure/",
      "static_file": "faq/what-is-the-safest-choice-for-general-purpose-use-when-i-am-unsure/index.html",
      "source_file": "faq-data.js",
      "source_key": "model-selection:what-is-the-safest-choice-for-general-purpose-use-when-i-am-unsure",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Model Selection / Choosing the Right Model",
        "question": "What is the safest choice for general-purpose use when I am unsure?",
        "answer_length": 229
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Safest General-Purpose Model Choice | CorvusLLM",
        "h1": "What is the safest choice for general-purpose use when I am unsure?",
        "meta_description": "A balanced model family or a multi-model pack is usually the safest starting point because it lets you compare rather than commit blindly. Buyers who...",
        "canonical_url": "https://corvusllm.com/faq/what-is-the-safest-choice-for-general-purpose-use-when-i-am-unsure/",
        "word_count": 329,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "8e2035a4c5fe17c8d7cd39ee9c83fccdeb39ab315d31fb96a8bbb76058d76b83"
      },
      "uniqueness_contract": {
        "identity_hash": "ef992efeb84511509f96d00005cfc95ca0e01d25f8e5c2bd8a3579329f83c5ff",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.32,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/when-should-i-buy-a-single-family-pack-instead-of-an-all-in-one-style-pack/",
      "canonical_url": "https://corvusllm.com/faq/when-should-i-buy-a-single-family-pack-instead-of-an-all-in-one-style-pack/",
      "static_file": "faq/when-should-i-buy-a-single-family-pack-instead-of-an-all-in-one-style-pack/index.html",
      "source_file": "faq-data.js",
      "source_key": "model-selection:when-should-i-buy-a-single-family-pack-instead-of-an-all-in-one-style-pack",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Model Selection / Choosing the Right Model",
        "question": "When should I buy a single-family pack instead of an all-in-one style pack?",
        "answer_length": 222
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Single-Family vs All-in-One Packs | CorvusLLM",
        "h1": "When should I buy a single-family pack instead of an all-in-one style pack?",
        "meta_description": "Choose a family-specific pack when you already know which ecosystem you prefer and want to stay focused. Choose broader access when you want...",
        "canonical_url": "https://corvusllm.com/faq/when-should-i-buy-a-single-family-pack-instead-of-an-all-in-one-style-pack/",
        "word_count": 325,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "07716f55c4b026e6630b0cc54ab2a5556f76f0c2f31c54ff11ce4259c5b62a85"
      },
      "uniqueness_contract": {
        "identity_hash": "39bebcd11ee4a9ec9f381a69f115b960fed41790dfdc0c188a5b4a9bc44e5266",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.3,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/where-can-i-compare-models-before-i-buy/",
      "canonical_url": "https://corvusllm.com/faq/where-can-i-compare-models-before-i-buy/",
      "static_file": "faq/where-can-i-compare-models-before-i-buy/index.html",
      "source_file": "faq-data.js",
      "source_key": "model-selection:where-can-i-compare-models-before-i-buy",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Model Selection / Choosing the Right Model",
        "question": "Where can I compare models before I buy?",
        "answer_length": 215
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Where can I compare models before I buy? | CorvusLLM",
        "h1": "Where can I compare models before I buy?",
        "meta_description": "Start with the models directory, then use examples and compatibility pages to translate that comparison into real tool choices. A model comparison is...",
        "canonical_url": "https://corvusllm.com/faq/where-can-i-compare-models-before-i-buy/",
        "word_count": 333,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "bceed8e82a3fb147725594d4f3a622f861e34787b09b796e256c2ed59bb756e3"
      },
      "uniqueness_contract": {
        "identity_hash": "acbb88de0a7d01d16217c002db11a5e16f6c8673364cc44f3986ef24f8e326ec",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.33,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/how-hard-is-it-to-switch-an-existing-openai-based-project-to-corvusllm/",
      "canonical_url": "https://corvusllm.com/faq/how-hard-is-it-to-switch-an-existing-openai-based-project-to-corvusllm/",
      "static_file": "faq/how-hard-is-it-to-switch-an-existing-openai-based-project-to-corvusllm/index.html",
      "source_file": "faq-data.js",
      "source_key": "migration:how-hard-is-it-to-switch-an-existing-openai-based-project-to-corvusllm",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Migration from Other Providers",
        "question": "How hard is it to switch an existing OpenAI-based project to CorvusLLM?",
        "answer_length": 192
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Switch an OpenAI Project to CorvusLLM | CorvusLLM",
        "h1": "How hard is it to switch an existing OpenAI-based project to CorvusLLM?",
        "meta_description": "Usually it is a configuration change before it is a code rewrite. If the project already supports a custom base URL and model name, the migration path...",
        "canonical_url": "https://corvusllm.com/faq/how-hard-is-it-to-switch-an-existing-openai-based-project-to-corvusllm/",
        "word_count": 321,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "e6488853965d2ec95ad1a7c1259472e2fc31a1477e0c53ba7b5af6622266189a"
      },
      "uniqueness_contract": {
        "identity_hash": "b6eb035ddae06945a1a8aae44805bf5991c1416c43d01050cb1d74178ae6d19e",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.28,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/how-do-i-move-over-from-direct-anthropic-usage/",
      "canonical_url": "https://corvusllm.com/faq/how-do-i-move-over-from-direct-anthropic-usage/",
      "static_file": "faq/how-do-i-move-over-from-direct-anthropic-usage/index.html",
      "source_file": "faq-data.js",
      "source_key": "migration:how-do-i-move-over-from-direct-anthropic-usage",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Migration from Other Providers",
        "question": "How do I move over from direct Anthropic usage?",
        "answer_length": 215
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "How do I move over from direct Anthropic usage? | CorvusLLM",
        "h1": "How do I move over from direct Anthropic usage?",
        "meta_description": "Start by listing the exact models and workflows you depend on, then compare them against the current CorvusLLM lineup and docs. Migration is easier...",
        "canonical_url": "https://corvusllm.com/faq/how-do-i-move-over-from-direct-anthropic-usage/",
        "word_count": 335,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "cdc041bc04751bf85a61e379d16c49dee27c8d9c961cfb01f7cdcd63de8a06c9"
      },
      "uniqueness_contract": {
        "identity_hash": "e2eed3c123cc1dd267c5a3ae07d9b7319253e0cb0c71c0a6eae439c484b3d866",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.34,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/do-i-usually-need-to-rewrite-prompts-when-migrating/",
      "canonical_url": "https://corvusllm.com/faq/do-i-usually-need-to-rewrite-prompts-when-migrating/",
      "static_file": "faq/do-i-usually-need-to-rewrite-prompts-when-migrating/index.html",
      "source_file": "faq-data.js",
      "source_key": "migration:do-i-usually-need-to-rewrite-prompts-when-migrating",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Migration from Other Providers",
        "question": "Do I usually need to rewrite prompts when migrating?",
        "answer_length": 171
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Do I usually need to rewrite prompts when migrating? | CorvusLLM",
        "h1": "Do I usually need to rewrite prompts when migrating?",
        "meta_description": "Usually no, but you should still test. Prompt behavior can shift between model families even when the API interface feels familiar, so a light staging...",
        "canonical_url": "https://corvusllm.com/faq/do-i-usually-need-to-rewrite-prompts-when-migrating/",
        "word_count": 314,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "e761577b015b306d525e52eaebbb9e3d7c46a68a48fdf1b5da8ddd7f76dcca4c"
      },
      "uniqueness_contract": {
        "identity_hash": "002c5c09fd302f0aa896e4c1e922077d5ab92bf506bb5a72c780d9c0cdd05bb9",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.26,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-i-keep-my-current-client-libraries-and-agent-tooling/",
      "canonical_url": "https://corvusllm.com/faq/can-i-keep-my-current-client-libraries-and-agent-tooling/",
      "static_file": "faq/can-i-keep-my-current-client-libraries-and-agent-tooling/index.html",
      "source_file": "faq-data.js",
      "source_key": "migration:can-i-keep-my-current-client-libraries-and-agent-tooling",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Migration from Other Providers",
        "question": "Can I keep my current client libraries and agent tooling?",
        "answer_length": 194
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Keep my current client libraries and agent tooling? | CorvusLLM",
        "h1": "Can I keep my current client libraries and agent tooling?",
        "meta_description": "Often yes, especially when those libraries already support compatible endpoints. The most common migration task is configuration cleanup rather than...",
        "canonical_url": "https://corvusllm.com/faq/can-i-keep-my-current-client-libraries-and-agent-tooling/",
        "word_count": 313,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "2a95052ba543a0d5d382b05a1a64ce6c483a883241249cd9f8f9d020b13faff6"
      },
      "uniqueness_contract": {
        "identity_hash": "d83a478ab2940e695e8c798514f56297a45e6793175ceb7c94d6ad9a5726197e",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.25,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/what-is-the-safest-migration-plan-if-i-do-not-want-to-break-production/",
      "canonical_url": "https://corvusllm.com/faq/what-is-the-safest-migration-plan-if-i-do-not-want-to-break-production/",
      "static_file": "faq/what-is-the-safest-migration-plan-if-i-do-not-want-to-break-production/index.html",
      "source_file": "faq-data.js",
      "source_key": "migration:what-is-the-safest-migration-plan-if-i-do-not-want-to-break-production",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Migration from Other Providers",
        "question": "What is the safest migration plan if I do not want to break production?",
        "answer_length": 235
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Safe Migration Plan for Production | CorvusLLM",
        "h1": "What is the safest migration plan if I do not want to break production?",
        "meta_description": "Start with a small plan, test in staging, compare output and latency in one real workflow, then move production traffic only after the basics are...",
        "canonical_url": "https://corvusllm.com/faq/what-is-the-safest-migration-plan-if-i-do-not-want-to-break-production/",
        "word_count": 341,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "4e520d524adbef5e7bc325dc444242d9eb3029cd5d564ccf766c76a7c2cc83ca"
      },
      "uniqueness_contract": {
        "identity_hash": "e5af013d80547b9d934648b4aff9c6fc8b54403be43d5938ab1fca74c23256ae",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.36,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-i-top-up-before-my-balance-runs-low/",
      "canonical_url": "https://corvusllm.com/faq/can-i-top-up-before-my-balance-runs-low/",
      "static_file": "faq/can-i-top-up-before-my-balance-runs-low/index.html",
      "source_file": "faq-data.js",
      "source_key": "misc-practical:can-i-top-up-before-my-balance-runs-low",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Miscellaneous Practical Questions",
        "question": "Can I top up before my balance runs low?",
        "answer_length": 204
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Can I top up before my balance runs low? | CorvusLLM",
        "h1": "Can I top up before my balance runs low?",
        "meta_description": "Yes, you do not need to wait until the last minute. Topping up earlier is often smarter if you know a busy week or launch window is coming and you do...",
        "canonical_url": "https://corvusllm.com/faq/can-i-top-up-before-my-balance-runs-low/",
        "word_count": 331,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "2f683ad1c3ffbc35a05bb62d108fd66d64e4c46c7f2045e338ecd1bcf60a0ebe"
      },
      "uniqueness_contract": {
        "identity_hash": "9634de5b8c9940601f08fb3b5225fc5897cceec51617ec134bec72bb93dc9d8d",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.32,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-i-place-an-order-on-weekends-or-outside-normal-business-hours/",
      "canonical_url": "https://corvusllm.com/faq/can-i-place-an-order-on-weekends-or-outside-normal-business-hours/",
      "static_file": "faq/can-i-place-an-order-on-weekends-or-outside-normal-business-hours/index.html",
      "source_file": "faq-data.js",
      "source_key": "misc-practical:can-i-place-an-order-on-weekends-or-outside-normal-business-hours",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Miscellaneous Practical Questions",
        "question": "Can I place an order on weekends or outside normal business hours?",
        "answer_length": 239
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Orders on Weekends and Outside Hours | CorvusLLM",
        "h1": "Can I place an order on weekends or outside normal business hours?",
        "meta_description": "Yes, the public checkout is not limited to a weekday office schedule. Access is normally provisioned automatically after matching payment confirmation...",
        "canonical_url": "https://corvusllm.com/faq/can-i-place-an-order-on-weekends-or-outside-normal-business-hours/",
        "word_count": 332,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "21d32022016cf1ed5c7be5ae95336e0b7da19eeae13f427c02e2e29d441eacdf"
      },
      "uniqueness_contract": {
        "identity_hash": "17ca53f0c9c919bd374208c1139ad3780d224549877529c652bad47d725df8d9",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.33,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/is-there-a-minimum-purchase-size/",
      "canonical_url": "https://corvusllm.com/faq/is-there-a-minimum-purchase-size/",
      "static_file": "faq/is-there-a-minimum-purchase-size/index.html",
      "source_file": "faq-data.js",
      "source_key": "misc-practical:is-there-a-minimum-purchase-size",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Miscellaneous Practical Questions",
        "question": "Is there a minimum purchase size?",
        "answer_length": 193
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Is there a minimum purchase size? | CorvusLLM",
        "h1": "Is there a minimum purchase size?",
        "meta_description": "The practical minimum is the smallest pack currently shown in the live pricing UI. If you want to reduce risk, starting there is usually better than...",
        "canonical_url": "https://corvusllm.com/faq/is-there-a-minimum-purchase-size/",
        "word_count": 317,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "060903c8773a26f188cf6752b3c200ba9ef51866387b4dbf734f82bc2d8c2c00"
      },
      "uniqueness_contract": {
        "identity_hash": "e1a913ee1dc34270800bbc5f3239764434284a415843d651eb904bfefde54d0e",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.27,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/can-i-use-the-same-email-address-for-multiple-different-orders/",
      "canonical_url": "https://corvusllm.com/faq/can-i-use-the-same-email-address-for-multiple-different-orders/",
      "static_file": "faq/can-i-use-the-same-email-address-for-multiple-different-orders/index.html",
      "source_file": "faq-data.js",
      "source_key": "misc-practical:can-i-use-the-same-email-address-for-multiple-different-orders",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Miscellaneous Practical Questions",
        "question": "Can I use the same email address for multiple different orders?",
        "answer_length": 148
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Same Email for Multiple Orders | CorvusLLM",
        "h1": "Can I use the same email address for multiple different orders?",
        "meta_description": "Yes, that is normal. Just keep each order number separately so support can tell which purchase you mean if you ever need help on one specific order.",
        "canonical_url": "https://corvusllm.com/faq/can-i-use-the-same-email-address-for-multiple-different-orders/",
        "word_count": 309,
        "static_anchor_count": 7,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "724900626faa32286b0f0e699e2fe50f2d25410ee7c9493cf4fafe2eefb73aff"
      },
      "uniqueness_contract": {
        "identity_hash": "82322572782c59315f4c76924a688cf80fd4dc31b1890a50663aac2ae6fbc187",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.24,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    },
    {
      "family": "faq_detail_pages",
      "path": "/faq/what-is-the-fastest-support-path-when-something-feels-wrong/",
      "canonical_url": "https://corvusllm.com/faq/what-is-the-fastest-support-path-when-something-feels-wrong/",
      "static_file": "faq/what-is-the-fastest-support-path-when-something-feels-wrong/index.html",
      "source_file": "faq-data.js",
      "source_key": "misc-practical:what-is-the-fastest-support-path-when-something-feels-wrong",
      "generated_by": "scripts/generate-faq-detail-pages.js",
      "indexation_intent": "Longtail support and buyer-question page generated from the FAQ source of truth.",
      "source_fields": {
        "category": "Miscellaneous Practical Questions",
        "question": "What is the fastest support path when something feels wrong?",
        "answer_length": 234
      },
      "required_modules": [
        "single H1",
        "canonical detail URL",
        "FAQ hub backlink",
        "related public routes",
        "static crawlable answer"
      ],
      "html_signals": {
        "title": "Fastest Support Path | CorvusLLM",
        "h1": "What is the fastest support path when something feels wrong?",
        "meta_description": "Start with the order number, then use the support channel referenced on the site rather than sending vague messages from multiple places. Clear...",
        "canonical_url": "https://corvusllm.com/faq/what-is-the-fastest-support-path-when-something-feels-wrong/",
        "word_count": 323,
        "static_anchor_count": 8,
        "schema_types": [
          "Answer",
          "BreadcrumbList",
          "FAQPage",
          "ListItem",
          "Question",
          "WebPage"
        ],
        "content_fingerprint": "1e9cdefdab5d21ea5ddbeb8cb0bc5b8d09b2bdd676963a22e376b2f0c3a74224"
      },
      "uniqueness_contract": {
        "identity_hash": "3b40d8defd79db0727fc59c1074361dca149515df88605db93f8893ce9beaacd",
        "has_source_specific_identity": true,
        "route_is_public": true,
        "canonical_matches_route": true
      },
      "quality_signals": {
        "search_intent_contract": "Longtail support and buyer-question page generated from the FAQ source of truth.",
        "intent_fit": "single_intent_with_supporting_sources",
        "thin_content_risk": "watch",
        "duplicate_template_risk": "controlled",
        "content_depth_score": 1.29,
        "unique_source_field_count": 3,
        "required_module_count": 5,
        "canonical_support_sources": [
          "/data/programmatic-seo-index.json",
          "/data/public-pages.json",
          "/data/public-query-index.json",
          "/data/public-route-matrix.json",
          "/data/public-route-taxonomy.json",
          "/data/faq-index.json"
        ],
        "public_route_state": "generated_public_indexable"
      }
    }
  ],
  "expansion_policies": [
    {
      "family": "model_tool_pages",
      "candidate_count": 96,
      "status": "candidate_only_not_sitemaped",
      "required_before_generation": [
        "tool-specific screenshots or steps",
        "distinct setup caveats",
        "model fit notes",
        "no duplicate template-only pages"
      ],
      "policy": "Only generate when each model-tool pair has distinct guidance beyond swapped names."
    },
    {
      "family": "provider_tool_pages",
      "candidate_count": 24,
      "generated_count": 18,
      "status": "generated_public_subset",
      "required_before_generation": [
        "provider-specific endpoint behavior",
        "tool compatibility detail",
        "copy-paste configuration"
      ],
      "policy": "Generated as a public subset only where provider-specific endpoint behavior and tool compatibility detail are distinct; remaining candidates stay ungenerated until they have real setup differences."
    },
    {
      "family": "use_case_landing_pages",
      "candidate_count": 6,
      "generated_count": 6,
      "status": "generated_public_subset",
      "required_before_generation": [
        "distinct user intent",
        "fit and no-fit guardrails",
        "setup proof links",
        "pricing and trust verification"
      ],
      "policy": "Generated only for use cases with distinct audience, setup risk, cost behavior, and verification paths beyond swapped keywords."
    },
    {
      "family": "price_comparison_pages",
      "candidate_count": 11,
      "generated_count": 4,
      "status": "generated_public_subset",
      "required_before_generation": [
        "source-linked official price fields",
        "cache-token handling",
        "calculator link",
        "freshness date"
      ],
      "policy": "Generated only where the page has distinct price, cache, source, and workload-fit context rather than thin keyword swaps."
    },
    {
      "family": "troubleshooting_error_pages",
      "candidate_count": 9,
      "generated_count": 9,
      "status": "generated_public_subset",
      "required_before_generation": [
        "real error wording",
        "cause matrix",
        "fix steps",
        "related status/support routing"
      ],
      "policy": "Generated only for recurring, distinct support-error families with specific error wording, causes, fixes, verification steps, and support-routing context."
    }
  ]
}
