CRM dedupe + enrichment with LLMs (L3)
Clay + LLM merges duplicate accounts, fills missing firmographics, normalizes job titles. Pays for itself in 30 days.
The steps
- 01
Audit and Import CRM Data
To understand the scope, first export your entire Account/Company list from your CRM (Salesforce, HubSpot, or Pipedrive) into a CSV. You are looking for 'The Mess',duplicate records hiding under slightly different names. • Go to your CRM's reporting module and create an 'All Accounts' report. • Include these columns: Account Name, Website/Domain, Billing City, Industry, LinkedIn URL, and the unique Record ID. • Open a new Workspace in Clay and click 'Create New Table' > 'Import from CSV'. • Once imported, click 'Add Column' > 'Formulas' and use an 'Exact Match' check on the 'Website' column to identify immediate duplicates. • Owner: RevOps Lead or CRM Admin. • Time Estimate: 45-60 minutes. • Pitfall: Ignoring records with no website. Ensure you handle 'blank' domains separately so they don't all 'match' each other. • Definition of Done: A master list in Clay flagged with at least one 'duplicate' indicator (like a shared domain) and a total count of potentially redundant records.
- 02
Apply LLM Disambiguation Logic
Simple exact matches miss 40% of duplicates (e.g., 'IBM' vs 'International Business Machines'). We use an LLM to think like a human. • In your Clay table, group rows by Domain. For groups with >1 record, add the 'Run ChatGPT' enrichment. • Use this specific prompt: 'Compare these two entities: {{Company Name 1}} and {{Company Name 2}}. Given their industries ({{Industry 1}}, {{Industry 2}}) and locations ({{City 1}}, {{City 2}}), are these the same legal entity? Answer only "True" or "False".' • Use GPT-4o for this step; it is more reliable for entity disambiguation than GPT-3.5. • Set a 'Conditional' in Clay to only run this if the domains are an exact match or if the names have a high 'Fuzzy Match' score (using the 'String Similarity' tool in Clay). • Owner: RevOps Analyst. • Time Estimate: 2 hours of configuration and testing. • Pitfall: High costs if you run LLMs on every single row; only run it on rows that share a domain or have high name similarity. • Definition of Done: Each potential duplicate is labeled 'True' (Merge) or 'False' (Keep) by the AI.
- 03
Select Survivors and Enrich Records
Before merging, you must decide which record 'wins'. Usually, this is the record with the most recent activity or the one owned by an active Sales Rep. • Create a 'Survivor Score' column using a Formula in Clay. Award points for: Has an assigned owner (+10), Has been updated in the last 90 days (+10), Has a LinkedIn URL (+5). • Use the 'Filter' tool in Clay to separate the 'Survivors' (highest score) from the 'Duplicates' (lower scores). • Now, run Clay's 'Enrich Company' action only on the Survivor records. Use the LinkedIn Company API or Clearbit integration within Clay to pull fresh Firmographics: Employee Count, Revenue, Tech Stack, and HQ Address. • Owner: CRM Admin. • Time Estimate: 1-2 hours. • Pitfall: Automerging based on 'Created Date' alone,often the oldest record has the messiest data. Use 'Last Activity Date' instead. • Definition of Done: A 'Survivor' record is identified for every duplicate set, enriched with 100% field completeness.
- 04
Normalize and Standardize Data
Raw data from APIs is often messy (e.g., 'VP of Sales & Marketing' vs 'Vice President Sales'). Use an LLM to clean this for your SDR team. • In your Clay table, add another 'Run ChatGPT' column. • Purpose: Normalize Job Titles and Industry categories. • Prompt: 'Normalize these fields for a CRM. Input Job Title: {{Title}}. Output a sanitized version (e.g., "VP Sales"). Input Industry: {{Industry}}. Map it to one of these: [SaaS, Manufacturing, Healthcare, Finance, Other]. Return as JSON.' • This ensures your segmented email lists and reports are perfectly clean. • Owner: Marketing Ops. • Time Estimate: 1 hour. • Pitfall: Letting the LLM be too creative. Always provide a fixed list of 'Allowed Categories' in the prompt to prevent the AI from inventing new industry names. • Definition of Done: All survivors have 'normalized' industry and title fields ready for CRM upload.
- 05
Log Merges and Execute Sync
Never delete records initially. You must create a 'Merge Log' to allow for reversals if a mistake is made. • Create a 'Log' table in your CRM or a Google Sheet. • Record: Master Record ID (Survivor), Duplicate Record ID (Victim), Date of Merge, and the 'Reasoning' provided by the LLM in Step 2. • Use the Clay 'Push to CRM' integration to update the Master record with the new enriched data. • For the duplicates, use an 'Update Record' action to change their status to 'Inactive' or 'Merged' and add a note: 'Merged into {{Survivor_ID}} on [Date]'. • After 30 days of no complaints from the sales team, you can safely delete the 'Inactive' records. • Owner: RevOps Lead. • Time Estimate: 2-3 hours for setup and sync. • Pitfall: Deleting records immediately. If the LLM makes a mistake, deleting the data makes it unrecoverable without a costly backup restore. • Definition of Done: Enriched data is live in the CRM, duplicates are deactivated/flagged, and a log exists for every change made.
Next playbooks
Unfamiliar terms are defined in the AI and Revenue Dictionary. Related frameworks live in the framework library.
