Preventing duplicate records across systems
When your agent or pipeline writes to multiple systems — HubSpot, Salesforce, Stripe, internal databases — duplicates are inevitable unless you resolve identity first. Anchord matches records across all connected sources to a single canonical AnchorID, so every system writes to the right record.
When to use this
- Your data exists in multiple systems and you're syncing between them
- Built-in CRM duplicate rules miss near-duplicates (e.g. "Acme Corp" in Salesforce, "Acme" in HubSpot)
- Agents or pipelines are creating records automatically and you need a pre-write check
- You want to deduplicate existing data across sources
How Anchord prevents duplicates
1. Cross-system identity graph
Every record ingested from any source — HubSpot companies, Salesforce accounts, Stripe customers, custom sources — is matched to a canonical AnchorID. Records that represent the same real-world entity share an AnchorID across all systems.
2. Deterministic scoring
Resolve uses domain, name, email, and other fields to compute confidence scores. Exact domain matches score highest. Fuzzy name matches surface ambiguity. Ambiguous matches route to human review instead of guessing.
3. Pre-write guard
Before any write, the guard endpoint checks whether the entity is canonical, has active links, and has no unresolved conflicts. Duplicates are caught before they're created.
4. Duplicate detection + merge
For records already in the system, Anchord clusters near-duplicates with confidence scores and surfaces them in the Duplicates Queue. Merge with dry-run preview via the API or console.
Endpoints to use
| Endpoint | Role in duplicate prevention |
|---|---|
| POST /api/v1/ingest/batch | Ingest records from any source into the identity graph |
| POST /api/v1/resolve/company | Find the canonical AnchorID before writing |
| POST /api/v1/resolve/person | Same for person/contact records |
| POST /api/v1/guard/write | Final check — blocks writes with conflicts |
| POST /api/v1/entities/{id}/merge | Merge confirmed duplicates (dry-run supported) |
Expected outcomes
resolved Existing entity found. Write to the existing record instead of creating a new one.
not_found No match across any connected system. Safe to create a new record.
needs_review Near-duplicate detected across systems. Escalate to a human before writing.