CRM
Dual-CRM Duplicate Company Detector with Merge-Review Queue
Scans new and updated company records flowing between Salesforce and HubSpot, scores likely duplicates with an LLM.
How it runs
The automated pipeline, trigger to output.
- TriggerSalesforce company created or updatedSalesforce
- ActionSearch HubSpot for matching companies by domain and nameHubSpot
- ActionScore duplicate confidence and explain the matchOpenAI
- LogicKeep only high-confidence duplicate pairs
- ActionAppend pair to Coda merge-review queueCoda
- OutputNotify review channel with link to queued rowSlack
What it does
After an acquisition leaves you with two CRMs, this workflow continuously catches company records that exist in both Salesforce and HubSpot and flags the pairs that are probably the same account. Instead of auto-merging, it builds a human review queue in Coda so a RevOps reviewer makes the final call.
When to use it
Run this in the weeks after merging two go-to-market orgs, when both CRMs are still live and sales is creating records in each. It is the safe middle ground: catch duplicates early without trusting a fuzzy match to silently overwrite customer data.
How it works
- 1A record-changed event from Salesforce fires whenever a company is created or edited.
- 2The flow pulls the candidate company and searches HubSpot for companies with a similar domain or name.
- 3An OpenAI step compares the pair (domain, legal name, billing address, EIN) and returns a duplicate-confidence score with reasoning.
- 4A logic branch drops low-confidence pairs and keeps only likely matches.
- 5The matched pair plus the score is written as a new row in a Coda merge-review table.
- 6A Slack message pings the review channel with a deep link to the queued row.
Set it up
What you configure once, before turning it on.
- 1Connect SalesforceAccounts, opportunities, cases.
- 2Connect HubSpotCRM, deals, marketing, support.
- 3Connect OpenAIModels, embeddings, files.
- 4Connect CodaDocs, packs, automations.
- 5Connect SlackChannels, DMs, threads, mentions.
- 6Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
- 7Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
- 8Test, 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.
