{
  "id": "MSG-FIELD-SIMILARITY",
  "slug": "msg-field-similarity",
  "title": "Description, message flow, and samples must not be the same text",
  "statement": "The description, message flow, and sample messages must each contain distinct content rather than repeated boilerplate.",
  "rationale": "These three fields answer different questions — what the campaign is, how consent is collected, and what gets sent. Pasting the same paragraph into all three leaves two of those questions unanswered and is explicitly coded as a rejection reason.",
  "layer": "MESSAGE_CONTENT",
  "layerSlug": "message-content",
  "object": "campaign.description + campaign.message_flow + campaign.sample[]",
  "severity": "HIGH",
  "detectability": [
    "AI_FORM"
  ],
  "failureClass": "RETRY_FIELD",
  "authorities": [
    "Twilio",
    "TCR"
  ],
  "codes": [
    {
      "provider": "Twilio",
      "code": "30911",
      "remediable": true,
      "generation": "gen2"
    }
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Write each field to its own purpose: the description explains the program, the message flow explains consent collection, and the samples show real messages.",
  "example": "Description: what the program sends and to whom. Message flow: \"Customers opt in at acmecoffee.com/signup by ticking…\". Samples: the actual texts.",
  "catalogIds": [
    "MSG-030"
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/message-content/msg-field-similarity/",
  "markdown": "https://ekas.io/rules/10dlc/message-content/msg-field-similarity.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
