{
  "registry_version": "1.0.0",
  "data": {
    "title": "Automated Keyword / Qualification Filter",
    "status": "active",
    "evidence_ids": [
      "evidence.hidden_workers_untapped_talent_hbs_accenture",
      "evidence.a_rejection_issued_without_human_involvement_is_regulated_in_the_eu_gdpr_art_22"
    ],
    "content": "# Automated Keyword / Qualification Filter\n\nDeterministic filter rejecting applications missing exact acronyms, certifications, or specific years-of-experience thresholds.\n\n### Structural Context\n- **Actor:** `system`\n- **Nature:** `rule`\n- **Removability:** `candidate`\n\n### Causal Relations\n- Amplifies `mech.employment_gap_downranking_bias` — Employment Gap Downranking Bias\n- Amplifies `mech.mid_process_role_requirement_redefinition` — Mid-Process Role Requirement Redefinition\n\n### Non-Inferences\n- Passing keyword filters does not guarantee interview invitation.",
    "aliases": [
      "M-008"
    ],
    "id": "mech.automated_keyword_qualification_filter",
    "type": "mechanism",
    "summary": "Deterministic filter rejecting applications missing exact acronyms, certifications, or specific years-of-experience thresholds.",
    "operates_at": [
      "bar.automated_filter_parser_threshold"
    ],
    "emissions": [
      {
        "artifact": "obs.rejection_within_minutes_of_application_submission",
        "fidelity": "direct",
        "likelihood": "high",
        "evidence": [
          "evidence.hidden_workers_untapped_talent_hbs_accenture"
        ],
        "observed_at": [
          "ingestion"
        ]
      },
      {
        "artifact": "obs.generic_closer_alignment_rejection_template",
        "fidelity": "euphemism",
        "likelihood": "high",
        "evidence": [
          "evidence.hidden_workers_untapped_talent_hbs_accenture"
        ],
        "observed_at": [
          "ingestion"
        ]
      }
    ],
    "facets": {
      "actor": "system",
      "nature": "rule",
      "visibility": "inferable",
      "removability": "candidate"
    },
    "amplifies": [
      "mech.employment_gap_downranking_bias",
      "mech.mid_process_role_requirement_redefinition"
    ],
    "masks": [],
    "evidence_level": "proven",
    "honest_baseline": false,
    "specimens": [
      {
        "kind": "ats",
        "label": "Screening rules, as they ran",
        "lines": [
          {
            "at": "+0.4s",
            "text": "Rule 1: must_contain(\"Kubernetes\") — PASS",
            "tell": false
          },
          {
            "at": "+0.4s",
            "text": "Rule 2: must_contain(\"CKA\") — candidate holds CKAD — FAIL",
            "tell": true
          },
          {
            "at": "+0.4s",
            "text": "Rule 3: not evaluated (short-circuit)",
            "tell": false
          },
          {
            "at": "+0.5s",
            "text": "Status: Rejected — does not meet minimum criteria",
            "tell": false
          }
        ],
        "reading": "An adjacent certification is not a near miss to a string match; it is a miss. The filter compares tokens, not competence."
      }
    ],
    "perspectives": [
      {
        "actor": "actor.ats_vendor",
        "sees": "The rule as the customer configured it and the string it tests for, evaluated against the parsed fields of one application. Whether an adjacent qualification sits in those fields is not something a string comparison can represent.",
        "reads": "The rule ran to specification: the token is present or it is absent. A failed knockout is a determinate result, not a low score.",
        "does": "Writes the rejection status in the same session and emits the notification the customer configured. The rule stays on until a customer turns it off."
      },
      {
        "actor": "actor.hiring_manager",
        "sees": "The shortlist that reaches the review, and the requirements as they were written into the posting. What that wording removed before the shortlist is not in the view.",
        "reads": "A thin pipeline reads as scarcity of the skill in the market rather than as the reach of the requirement as it was written.",
        "does": "Holds the bar and asks for more sourcing, or rewrites the requirements once the search runs long."
      },
      {
        "actor": "actor.candidate",
        "sees": "A rejection that arrives minutes after submission, in template wording that names no field.",
        "reads": "The interval is the only evidence about how the application was read, and the message does not distinguish a rule from a person.",
        "does": "Records the interval between submission and reply, and carries the exact strings the posting names into the next application."
      }
    ],
    "non_inferences": [
      "Passing keyword filters does not guarantee interview invitation."
    ],
    "agency_zones": {
      "ats-vendor": "medium",
      "hiring-manager": "low",
      "candidate": "medium"
    }
  }
}
