A CRM you can trust,without the quarterly cleanup
Duplicates merged, job changes caught and fixes written back on a schedule. Your coding agent builds it in your repo. Cargo runs it and logs every change.
Trusted by GTM teams at
Augment Code
Weights & Biases
Dust
WorkOS
Braintrust
Descript
Alaan
Engine
Scaleway
Preply
DataDome
Oneflow
Exact matches merge, the rest wait for a person
Duplicates are found on hard identifiers, never on a company name.
A deduplication play
Searches the live CRM before every merge decision.
Review in Slack
A decline or no answer keeps the records separate.
Review CRM account merge into Northwind (9813472210)
Review CRM account merge into Globex (9813472871)
Northwind approved. Same company, the old record is from an import.
Globex: no answer in 24 hours. The records stay separate.
One key per person, across every tool
Records that share an email, a domain or a LinkedIn ID get one canonical ID, with every source ID kept.
The unified record
The HubSpot contact and the Salesforce contact are one Ada.
What counts as a match
Each source maps its columns to references like email.
Configuration
Pick the columns that uniquely identify a record in this model.
Catch the records that went stale
People change jobs and rows stop being refreshed. A schedule finds both.
Job changes
Each contact comes back moved, left, no change or unknown.
Freshness stamps
Every write records when it happened, so stale rows are one filter away.
Rules in your repo, every change on record
Your coding agent writes the plays as TypeScript. Cargo runs them and logs each record they touch.
The play, in code
Reviewed in a pull request, deployed disabled until a pilot passes.
$ cargo-ai project add cookbook/crm-deduplication// infra/plays/deduplicate-accounts.tsif (score.score >= automaticMergeScore &&evidence.autoEligible) {uses.crm.mergeRecords({objectType: "companies",primaryId: evidence.primaryId,idsToMerge: evidence.idsToMerge,});}// ...export const deduplicateAccounts = definePlay("deduplicate_accounts", {model: crmAccounts,workflow: deduplicateCrmAccount,limit: 15,isEnabled: false,changeKinds: ["added", "updated"],schedule: { type: "cron", cron: "0 7 * * *" },});
Every run
Open any record to see each step it took and what it wrote.
Cookbooks that keep a CRM clean
Deduplication and identifier fill, ready to install in your repo.
Frequently Asked Questions
Can't find the answer here? Contact our team.
Build the self-driving GTM engine
Your coding agents build it on Cargo.Or our team builds, operates and improves it with you.