CRM dedupe + enrichment with LLMs (L3)

Clay + LLM merges duplicate accounts, fills missing firmographics, normalizes job titles. Pays for itself in 30 days.

WORKFLOW1Audit and Import CRM DataManual2Apply LLM Disambiguation …ogicManual3Select Survivors and Enri…h RecordsManual4Normalize and Standardize…DataManual5Log Merges and Execute Sy…cManual
5 steps, in order, with the tool that owns each one.
Adoption ladderSix levels from Starter to Rebuilt. This item sits at level 3.L1 StarterOne tool, no workflow changeL2 AssistedAI drafts, humans approveL3 IntegratedWired into CRM and SlackL4 OrchestratedMulti-step, owned, measuredL5 AutonomousAgent runs, human auditsL6 RebuiltThe process itself changes
This playbook belongs at L3 Integrated. Running it above your level is how pilots stall.
Measures of successduplicate rate; field completeness; time savedPROVE IT WORKEDduplicate ratefield completenesstime saved

The steps

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Share this playbook

Posting to Instagram or TikTok? Copy the link, it carries the title, summary and share image.

Arrives weekly by email. Free. Unsubscribe anytime. By subscribing you agree to our Privacy policy and Terms. We never sell or share the list.