CRM
Fuzzy Duplicate Contact Detector with Human Approval Queue
Scans HubSpot and Attio for likely-duplicate contacts that share no exact email match, scores each candidate pair.
How it runs
The automated pipeline, trigger to output.
- TriggerScheduled scan starts
- ActionPull unmatched contacts from both CRMsHubSpot
- LogicScore candidate pairs on name/domain/phone
- LogicBranch by confidence (auto / review / discard)
- ActionPost review pairs to Slack approval queueSlack
- ActionMerge approved pairs in Attio + HubSpotAttio
- OutputWrite decision + merge to Postgres auditPostgres
What it does
Catches the duplicates exact-email matching misses: typo'd addresses, personal vs work email, or the same person across both CRMs under different addresses. It scores candidate pairs on name, domain, phone, and company similarity, auto-confirms only the highest-confidence matches, and routes the rest to a Slack approval queue so a human decides before anything is merged.
When to use it
When your contact base has messy, human-entered data and you want dedup safety: never silently merge two real people, but don't make ops eyeball thousands of rows.
How it works
- 1A schedule kicks off the scan.
- 2Pull contacts from HubSpot and Attio that lack a clean cross-system email match.
- 3Generate candidate pairs and score similarity across name, domain, phone, and company.
- 4Branch by score: high-confidence auto-merge, mid-confidence to review, low discarded.
- 5Post mid-confidence pairs to Slack with Approve/Reject actions.
- 6On approval, merge the records in Attio and HubSpot.
- 7Append the decision and merge result to the Postgres audit table.
Set it up
What you configure once, before turning it on.
- 1Connect HubSpotCRM, deals, marketing, support.
- 2Connect AttioReal-time CRM with structured data + powerful views.
- 3Connect SlackChannels, DMs, threads, mentions.
- 4Connect PostgresAny Postgres URL — query, write, migrate.
- 5Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
- 6Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
- 7Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.
More CRM workflows
Spin up a Monday handoff board for a departing rep's deals
When a rep is deactivated in Salesforce, this creates a Monday.com board with one item per open opportunity so the manager can manually triage and assign each handoff.
Dormant Account Check-In Call Scheduler
On the anniversary of an account's last touch, books a tentative check-in call on the owner's Google Calendar and emails the contact a scheduling invite.
Daily orphaned-opportunity sweep with manager Slack digest
Each morning this scans Salesforce for open opportunities owned by inactive users and posts a per-manager digest in Slack listing the orphaned deals that need a new owner.
Reassign a departed rep's open pipeline by territory
When a Salesforce user is deactivated, this finds all of their open opportunities and reassigns each one to the active rep who owns its territory, then logs the moves.
Escalate opportunities still owned by an inactive rep after grace period
Checks daily for open opportunities that have stayed with an inactive owner past a grace window and escalates each to the regional director by email and Slack with deal context.
AI-Personalized Dormant Account Win-Back
On a dormancy anniversary, an agent researches the account's history and recent public signals, drafts a genuinely personalized win-back email.
Run it inside a business
This workflow drops into a full company template. Import the org, and this is one of the playbooks its agents run.

Run this workflow in your colony.
14-day trial. No DevOps. No Sales call. Provisioned in under a minute.
