Outreach Resolve
Run the resolve stage for one outreach run: turn the sourced segment into clean golden records. This is a bulk stage. The per-person identity decision, merge, and write belong to twenty-engine-sync; this skill owns batch scope, caps, checkpoints, and the QA gate.
References
Read these first:
references/CONTEXT.mdreferences/docs/outreach-operator/run-contract.mdreferences/docs/outreach-operator/control-plane.md
Open when checkpointing to Paperclip or choosing a surface:
references/docs/outreach-operator/workflow.mdreferences/docs/paperclip-operator/cli-contract.mdreferences/docs/paperclip-operator/integration-matrix.md
Process
Follow the bulk-stage pattern in run-contract.md. The per-person work is twenty-engine-sync.
- Resume. Read the Run Record. Confirm
resolveis in the run's stage scope and read its checkpoint. Confirmsourceisdone.- Done when you can state whether this is a fresh resolve or a resume, and the current counts.
- Read the sourced segment from Twenty: the run's leads that have been ingested but not yet resolved.
- Resolve through
twenty-engine-sync. For each contact, run identity match, precedence, and golden-record merge. Send ambiguous pairs to its fuzzy-match human-QA queue rather than auto-merging.- Auto-merge only the matches
twenty-engine-syncreturns as confident; never auto-merge a fuzzy match. - Stop and checkpoint as
stoppedif a cap or stop condition trips.
- Auto-merge only the matches
- Human-QA review. For fuzzy matches, run the per-item review loop from
run-contract.md: one ambiguous pair at a time, with the operator's merge-or-split decision. This is operator-gated; do not merge a fuzzy pair without approval. - Checkpoint. Write resolve counts (merged, created, queued for QA, errored) and move
resolvetoqa.- Done when every sourced lead is a golden record, queued for QA, or carries an explicit skip reason, and the counts sum to the sourced total.
- QA gate. Present the resolved batch and the fuzzy-QA outcomes against the run's QA gate. On pass, set
resolvetodone. On fail, set it toreviseorstoppedwith a comment.
Boundaries
- Bulk stage. Resolve dedupes and merges; it does not enrich or send.
- The verdict belongs to
twenty-engine-sync. Do not reimplement identity rules or write Twenty directly. - Never auto-merge fuzzy matches. Route them to human QA; merges there are operator-gated.
- Honor caps and stop conditions, and stay within the run's segment.