[
  {
    "name": "signal_id",
    "type": "string",
    "required": true,
    "description": "Unique identifier for the keyword signal."
  },
  {
    "name": "canonical_signal",
    "type": "string",
    "required": true,
    "description": "Standard normalized signal term."
  },
  {
    "name": "signal_category",
    "type": "string",
    "required": true,
    "description": "Keyword classification category."
  },
  {
    "name": "aliases",
    "type": "string",
    "required": true,
    "description": "Semicolon-separated text variations."
  },
  {
    "name": "example_phrases",
    "type": "string",
    "required": true,
    "description": "Semicolon-separated invented sentences showing usage."
  },
  {
    "name": "role_families",
    "type": "string",
    "required": true,
    "description": "Applicable role clusters."
  },
  {
    "name": "requirement_hint",
    "type": "string",
    "required": true,
    "description": "Default strength of requirement (required, preferred, contextual)."
  },
  {
    "name": "importance_weight",
    "type": "integer",
    "required": true,
    "description": "Relative matching weight (0 to 5)."
  },
  {
    "name": "inflation_countable",
    "type": "boolean",
    "required": true,
    "description": "Whether this keyword contributes to JD inflation score."
  },
  {
    "name": "ambiguity_level",
    "type": "string",
    "required": true,
    "description": "Contextual ambiguity (low, medium, high)."
  },
  {
    "name": "suppression_rule",
    "type": "boolean",
    "required": true,
    "description": "Whether to hide it from top tailoring keywords summaries."
  },
  {
    "name": "anti_stuffing_note",
    "type": "string",
    "required": true,
    "description": "Guidelines on how to write evidence instead of keyword stuffing."
  },
  {
    "name": "source_basis",
    "type": "string",
    "required": true,
    "description": "Reference taxonomies or surveys."
  },
  {
    "name": "version_added",
    "type": "string",
    "required": true,
    "description": "Added dataset version."
  },
  {
    "name": "status",
    "type": "string",
    "required": true,
    "description": "Active, review, or deprecated status."
  }
]
