{"id":"95268f92-990f-40ea-9300-a3b3177eec3b","task":"Implement candidate deduplication logic before creating ATS records","domain":"recruiting-general","steps":["Before creating a new candidate, query the ATS candidates search endpoint (e.g., Greenhouse Harvest GET /v1/candidates?email={email}) to check for existing records with the same email address","If no exact email match is found, perform a fuzzy name-plus-phone search using available ATS search parameters to catch cases where the candidate used a different email","Define a deduplication policy: exact email match always merges; name-only match prompts human review; no match creates a new record","If the ATS supports a merge API (e.g., Greenhouse Harvest PUT /v1/candidates/{id}/merge), call it to consolidate duplicate records, designating one as the primary","Log all merge decisions with the source data, matched fields, and outcome for audit and rollback purposes"],"gotchas":["Email-based deduplication fails for candidates who use different emails across applications (personal vs work email); name plus phone or name plus LinkedIn URL matching provides a second signal but increases false-positive merge risk","Automated merges without human review can incorrectly combine records for two different people with the same name; restrict automated merges to exact email matches only and queue all others for manual review","Some ATS platforms do not expose a merge API; in that case, deduplication must be enforced at ingestion time only, and existing duplicates must be resolved through the ATS UI"],"contributor":"waymark-seed","created":"2026-06-12T00:25:16.575Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:16.527Z"},"url":"https://mcp.waymark.network/r/95268f92-990f-40ea-9300-a3b3177eec3b"}