{
  "facebook": {
    "purpose": "Plan facebook output without claiming execution.",
    "allowed_source_types": [
      "verified_source",
      "campaign_brief",
      "service_page",
      "show_page",
      "landing_page",
      "internal_note"
    ],
    "required_evidence": "Validated source asset, routing QA, and downstream confirmation before any live claim.",
    "cta_rules": "Shopper CTAs must point to pricerightrv.com. Do not imply sale, send, appointment, conversion, or launch.",
    "utm_medium": "social",
    "style_constraints": "No hype, no unsupported claims, preserve source meaning, keep channel-appropriate length.",
    "blocked_when": [
      "source evidence is missing",
      "review moderation is missing for review proof",
      "inventory or pricing claim is unverified",
      "downstream confirmation is missing for live placement"
    ],
    "requires_downstream_confirmation_for_live_claim": true
  },
  "instagram": {
    "purpose": "Plan instagram output without claiming execution.",
    "allowed_source_types": [
      "verified_source",
      "campaign_brief",
      "service_page",
      "show_page",
      "landing_page",
      "internal_note"
    ],
    "required_evidence": "Validated source asset, routing QA, and downstream confirmation before any live claim.",
    "cta_rules": "Shopper CTAs must point to pricerightrv.com. Do not imply sale, send, appointment, conversion, or launch.",
    "utm_medium": "social",
    "style_constraints": "No hype, no unsupported claims, preserve source meaning, keep channel-appropriate length.",
    "blocked_when": [
      "source evidence is missing",
      "review moderation is missing for review proof",
      "inventory or pricing claim is unverified",
      "downstream confirmation is missing for live placement"
    ],
    "requires_downstream_confirmation_for_live_claim": true
  },
  "google_business_profile": {
    "purpose": "Plan google_business_profile output without claiming execution.",
    "allowed_source_types": [
      "verified_source",
      "campaign_brief",
      "service_page",
      "show_page",
      "landing_page",
      "internal_note"
    ],
    "required_evidence": "Validated source asset, routing QA, and downstream confirmation before any live claim.",
    "cta_rules": "Shopper CTAs must point to pricerightrv.com. Do not imply sale, send, appointment, conversion, or launch.",
    "utm_medium": "gbp",
    "style_constraints": "No hype, no unsupported claims, preserve source meaning, keep channel-appropriate length.",
    "blocked_when": [
      "source evidence is missing",
      "review moderation is missing for review proof",
      "inventory or pricing claim is unverified",
      "downstream confirmation is missing for live placement"
    ],
    "requires_downstream_confirmation_for_live_claim": true
  },
  "youtube": {
    "purpose": "Plan youtube output without claiming execution.",
    "allowed_source_types": [
      "verified_source",
      "campaign_brief",
      "service_page",
      "show_page",
      "landing_page",
      "internal_note"
    ],
    "required_evidence": "Validated source asset, routing QA, and downstream confirmation before any live claim.",
    "cta_rules": "Shopper CTAs must point to pricerightrv.com. Do not imply sale, send, appointment, conversion, or launch.",
    "utm_medium": "youtube",
    "style_constraints": "No hype, no unsupported claims, preserve source meaning, keep channel-appropriate length.",
    "blocked_when": [
      "source evidence is missing",
      "review moderation is missing for review proof",
      "inventory or pricing claim is unverified",
      "downstream confirmation is missing for live placement"
    ],
    "requires_downstream_confirmation_for_live_claim": true
  },
  "youtube_shorts": {
    "purpose": "Plan youtube_shorts output without claiming execution.",
    "allowed_source_types": [
      "verified_source",
      "campaign_brief",
      "service_page",
      "show_page",
      "landing_page",
      "internal_note"
    ],
    "required_evidence": "Validated source asset, routing QA, and downstream confirmation before any live claim.",
    "cta_rules": "Shopper CTAs must point to pricerightrv.com. Do not imply sale, send, appointment, conversion, or launch.",
    "utm_medium": "shorts",
    "style_constraints": "No hype, no unsupported claims, preserve source meaning, keep channel-appropriate length.",
    "blocked_when": [
      "source evidence is missing",
      "review moderation is missing for review proof",
      "inventory or pricing claim is unverified",
      "downstream confirmation is missing for live placement"
    ],
    "requires_downstream_confirmation_for_live_claim": true
  },
  "newsletter": {
    "purpose": "Plan newsletter output without claiming execution.",
    "allowed_source_types": [
      "verified_source",
      "campaign_brief",
      "service_page",
      "show_page",
      "landing_page",
      "internal_note"
    ],
    "required_evidence": "Validated source asset, routing QA, and downstream confirmation before any live claim.",
    "cta_rules": "Shopper CTAs must point to pricerightrv.com. Do not imply sale, send, appointment, conversion, or launch.",
    "utm_medium": "email",
    "style_constraints": "No hype, no unsupported claims, preserve source meaning, keep channel-appropriate length.",
    "blocked_when": [
      "source evidence is missing",
      "review moderation is missing for review proof",
      "inventory or pricing claim is unverified",
      "downstream confirmation is missing for live placement"
    ],
    "requires_downstream_confirmation_for_live_claim": true
  },
  "sms": {
    "purpose": "Plan sms output without claiming execution.",
    "allowed_source_types": [
      "verified_source",
      "campaign_brief",
      "service_page",
      "show_page",
      "landing_page",
      "internal_note"
    ],
    "required_evidence": "Validated source asset, routing QA, and downstream confirmation before any live claim.",
    "cta_rules": "Shopper CTAs must point to pricerightrv.com. Do not imply sale, send, appointment, conversion, or launch.",
    "utm_medium": "sms",
    "style_constraints": "No hype, no unsupported claims, preserve source meaning, keep channel-appropriate length.",
    "blocked_when": [
      "source evidence is missing",
      "review moderation is missing for review proof",
      "inventory or pricing claim is unverified",
      "downstream confirmation is missing for live placement"
    ],
    "requires_downstream_confirmation_for_live_claim": true
  },
  "paid_search": {
    "purpose": "Plan paid_search output without claiming execution.",
    "allowed_source_types": [
      "verified_source",
      "campaign_brief",
      "service_page",
      "show_page",
      "landing_page",
      "internal_note"
    ],
    "required_evidence": "Validated source asset, routing QA, and downstream confirmation before any live claim.",
    "cta_rules": "Shopper CTAs must point to pricerightrv.com. Do not imply sale, send, appointment, conversion, or launch.",
    "utm_medium": "ppc",
    "style_constraints": "No hype, no unsupported claims, preserve source meaning, keep channel-appropriate length.",
    "blocked_when": [
      "source evidence is missing",
      "review moderation is missing for review proof",
      "inventory or pricing claim is unverified",
      "downstream confirmation is missing for live placement"
    ],
    "requires_downstream_confirmation_for_live_claim": true
  },
  "paid_social": {
    "purpose": "Plan paid_social output without claiming execution.",
    "allowed_source_types": [
      "verified_source",
      "campaign_brief",
      "service_page",
      "show_page",
      "landing_page",
      "internal_note"
    ],
    "required_evidence": "Validated source asset, routing QA, and downstream confirmation before any live claim.",
    "cta_rules": "Shopper CTAs must point to pricerightrv.com. Do not imply sale, send, appointment, conversion, or launch.",
    "utm_medium": "paid_social",
    "style_constraints": "No hype, no unsupported claims, preserve source meaning, keep channel-appropriate length.",
    "blocked_when": [
      "source evidence is missing",
      "review moderation is missing for review proof",
      "inventory or pricing claim is unverified",
      "downstream confirmation is missing for live placement"
    ],
    "requires_downstream_confirmation_for_live_claim": true
  },
  "landing_page": {
    "purpose": "Plan landing_page output without claiming execution.",
    "allowed_source_types": [
      "verified_source",
      "campaign_brief",
      "service_page",
      "show_page",
      "landing_page",
      "internal_note"
    ],
    "required_evidence": "Validated source asset, routing QA, and downstream confirmation before any live claim.",
    "cta_rules": "Shopper CTAs must point to pricerightrv.com. Do not imply sale, send, appointment, conversion, or launch.",
    "utm_medium": "referral",
    "style_constraints": "No hype, no unsupported claims, preserve source meaning, keep channel-appropriate length.",
    "blocked_when": [
      "source evidence is missing",
      "review moderation is missing for review proof",
      "inventory or pricing claim is unverified",
      "downstream confirmation is missing for live placement"
    ],
    "requires_downstream_confirmation_for_live_claim": true
  },
  "internal_only": {
    "purpose": "Plan internal_only output without claiming execution.",
    "allowed_source_types": [
      "verified_source",
      "campaign_brief",
      "service_page",
      "show_page",
      "landing_page",
      "internal_note"
    ],
    "required_evidence": "Validated source asset, routing QA, and downstream confirmation before any live claim.",
    "cta_rules": "Shopper CTAs must point to pricerightrv.com. Do not imply sale, send, appointment, conversion, or launch.",
    "utm_medium": "internal",
    "style_constraints": "No hype, no unsupported claims, preserve source meaning, keep channel-appropriate length.",
    "blocked_when": [
      "source evidence is missing",
      "review moderation is missing for review proof",
      "inventory or pricing claim is unverified",
      "downstream confirmation is missing for live placement"
    ],
    "requires_downstream_confirmation_for_live_claim": true
  }
}
