eligibility-gate
Eligibility Gate
The single decision authority for "should we act on this person for this
campaign, and how." Every person entering the outbound loop passes the gate
first and lands on exactly one verdict: reuse, re-enrich, source,
suppress, or skip, plus a routing hint for the actionable three.
The gate is deterministic code, not agent judgment — same inputs, same
verdict, every run. The agent orchestrates (fetch the batch, act on the verdict
table, raise exceptions to a human); the verdict itself comes from
demo/eligibility_gate.py, never from per-lead reasoning. This is the decision
counterpart to twenty-engine-sync (which owns the reads/writes) and the
identity resolver (RL-439, which owns match / no-match / fuzzy / collision).
Decision-only. The gate never writes Twenty, never enriches, never contacts, never changes schema or skills. Reads are free.