{
  "version": "2026-09-10",
  "principle": "Never infer performance failure from missing data. Visibility gaps require measured observations. Structural evidence gaps may be identified from the existing Evidence Layer.",
  "scoring": {
    "query_priority": {
      "5": 40,
      "4": 25,
      "3": 15,
      "2": 8,
      "1": 4
    },
    "measured_gap_weights": {
      "competitor_preferred": 25,
      "no_ai_citation": 20,
      "no_ai_mention": 18,
      "wrong_pawpulse_url": 15,
      "answer_gap": 20,
      "evidence_gap": 15,
      "local_gap": 12,
      "comparison_gap": 12,
      "action_gap": 10,
      "no_search_visibility": 10,
      "tracking_gap": 0
    },
    "search_signal_bonus": {
      "impressions_100_plus": 20,
      "impressions_20_to_99": 12,
      "impressions_1_to_19": 6
    },
    "score_cap": 100
  },
  "classification_rules": [
    {
      "gap_type": "no_ai_mention",
      "trigger": "AI observation exists and brand_mentioned is explicitly false.",
      "remediation": [
        "strengthen answer-first response",
        "improve entity/context clarity",
        "improve evidence coverage",
        "check whether mapped canonical is the correct intent target"
      ]
    },
    {
      "gap_type": "no_ai_citation",
      "trigger": "AI observation exists, PawPulse is mentioned or relevant, but pawpulse_url_cited is explicitly false.",
      "remediation": [
        "strengthen source-backed answer block",
        "make evidence references more explicit",
        "improve canonical page completeness",
        "review crawlability and machine-readable links"
      ]
    },
    {
      "gap_type": "wrong_pawpulse_url",
      "trigger": "AI observation cites a PawPulse URL different from the mapped canonical URL.",
      "remediation": [
        "improve canonical intent mapping",
        "strengthen internal links to preferred canonical",
        "remove ambiguous duplicate intent signals",
        "check canonical/hreflang consistency"
      ]
    },
    {
      "gap_type": "competitor_preferred",
      "trigger": "AI observation explicitly records a competitor citation while PawPulse is not cited.",
      "remediation": [
        "compare competitor evidence depth",
        "fill missing answer/evidence elements",
        "add primary or authoritative sources where justified",
        "strengthen decision/action usefulness"
      ]
    },
    {
      "gap_type": "no_search_visibility",
      "trigger": "A measured GSC/Bing observation explicitly records zero visibility for the query/page in the supplied observation window.",
      "remediation": [
        "verify indexability",
        "review intent match",
        "review title/H1/answer-first coverage",
        "inspect internal linking and evidence strength"
      ]
    },
    {
      "gap_type": "evidence_gap",
      "trigger": "Known structural state: mapped Decision Object has no externally verified Level A claim, or measured review finds weak evidence.",
      "remediation": [
        "attach claim-level authoritative sources",
        "promote only directly supported claims",
        "keep cost/provider claims unverified until directly sourced"
      ]
    },
    {
      "gap_type": "answer_gap",
      "trigger": "Measured/manual review explicitly marks that the mapped page does not answer the query.",
      "remediation": [
        "add concise answer-first coverage to existing canonical page",
        "do not create a new URL unless intent is genuinely distinct"
      ]
    },
    {
      "gap_type": "local_gap",
      "trigger": "Measured/manual review explicitly identifies weak or unsupported local intent.",
      "remediation": [
        "add real local logistics/evidence",
        "avoid city-name substitution",
        "noindex local variant if meaningful differentiation cannot be supported"
      ]
    },
    {
      "gap_type": "comparison_gap",
      "trigger": "Measured/manual review explicitly identifies missing comparison factors.",
      "remediation": [
        "add side-by-side decision criteria",
        "clarify tradeoffs",
        "avoid forced winner where evidence does not support one"
      ]
    },
    {
      "gap_type": "action_gap",
      "trigger": "Measured/manual review explicitly identifies that the answer lacks a useful next action.",
      "remediation": [
        "connect to calculator/checklist/comparison/emergency guidance",
        "only add transactional actions when a real integration exists"
      ]
    }
  ]
}