AGENT MARKETINGSCHOOL

How to Clean Duplicate Contacts in Your CRM Using ChatGPT

Use ChatGPT to flag likely duplicate contacts and organize a human review queue before changing your CRM. This privacy-first workflow keeps the original export untouched, minimizes uploaded data, and requires approval before any merge or import.

TAThe AMS TeamEditorial Team · September 1, 2026
Red and black line-art contact records being compared beside a review checklist and house floor plan

Contact lists collect records from open house sign-ins, website forms, referrals, and spreadsheet imports. The same person can appear more than once under a nickname, a different email address, or a phone number formatted another way. ChatGPT can help flag likely matches for review, but the workflow matters more than the prompt.

Step 1: Export a clean copy and keep it untouched

Before you touch anything, export your contacts from your CRM and save the file somewhere you will not accidentally overwrite it. This is your safety net. If the dedupe process removes something important or a merge goes sideways, you restore from this file and start over.

If your CRM offers an Export or Download option, choose the contact fields you need and save the file with a name that includes the date: `contacts-backup-2026-09-01.csv`. Do not edit this copy. Set it aside and create a working copy for the cleanup.

If you use Keller Williams Command, see our guide on How To Export Contacts In KW Command for step-by-step export instructions.

Step 2: Minimize the data before you share it

ChatGPT can analyze spreadsheets you upload (OpenAI, Data Analysis with ChatGPT), but you should not hand over more data than necessary. The Federal Trade Commission recommends businesses collect only what they need, keep it safe, and dispose of it securely (FTC, Privacy and Security).

Open a copy of your export and strip out everything ChatGPT does not need to find duplicates. Keep first name, last name, email address, phone number, and any ID field your CRM uses. Remove fields like:

  • Social Security numbers or tax IDs
  • Full street addresses (a zip code or city alone may help matching; full addresses are rarely needed)
  • Notes fields that contain conversation details or private client information
  • Financial information, transaction amounts, or commission splits

Save this reduced file as a separate document. You will upload the minimized version to ChatGPT, not the full export.

Step 3: Configure ChatGPT's data controls

OpenAI offers controls for how ChatGPT uses conversations. In your ChatGPT account settings, under Data Controls, turn off "Improve the model for everyone" if that matches your brokerage policy. OpenAI says conversations will remain in chat history but will not be used to train ChatGPT when this setting is off (OpenAI, Data Controls FAQ).

For an additional layer of separation, use a Temporary Chat. OpenAI states that temporary chats are deleted after 30 days, are not used for training, and are not saved in your chat history, though they may be reviewed for safety purposes (OpenAI, Data Controls FAQ).

If your brokerage provides an approved business workspace, follow its privacy and data-handling policy. OpenAI states that content submitted through business offerings such as its API and ChatGPT Enterprise is not used to improve model performance (OpenAI, File Uploads FAQ). Check with your broker or team lead before uploading contact data.

The National Association of Realtors recommends working with a state-licensed attorney on data privacy and security policies because data protection laws vary by jurisdiction (NAR, Data Privacy and Security). The configuration steps above reduce data exposure, but they are not legal advice.

Step 4: Define your match rules before you ask AI

ChatGPT does a better job finding duplicates when you tell it exactly what a duplicate looks like. Give it specific rules. Common match rules for real estate contacts include:

  • Two contacts with the same email address are a duplicate regardless of name differences.
  • Two contacts with the same phone number are a likely duplicate, flag for review.
  • Names that match after normalizing (e.g., removing middle initials, standardizing "Bob" and "Robert") with a shared phone or email are a likely duplicate.
  • Do not flag contacts as duplicates based on name alone unless another field also matches.

Writing these rules down before you upload the file also gives you a record of what matching logic the AI applied. If someone asks why two contacts were flagged, you can point to the rule.

Step 5: Upload the file and ask ChatGPT to flag duplicates, not merge them

Open a new chat or Temporary Chat in ChatGPT. Make sure the file upload option is available (it appears in the message input area on the ChatGPT interface). Upload your minimized contact spreadsheet, then paste a prompt that tells ChatGPT what to do. Here is the reusable prompt:

I am uploading a contact list exported from my CRM. Do not modify this file. Instead, read it and flag pairs or groups of rows that appear to be duplicate contacts. Use these match rules:
- Same email address = definite duplicate.
- Same phone number = likely duplicate.
- Names that match after normalizing (remove middle initials, standardize nicknames) plus a matching phone or email = likely duplicate.
- Do not flag on name alone.
For each flagged group, return: the row numbers or IDs of the matching contacts, which fields matched, your confidence level (definite or likely), and which record looks most complete and should be kept. Group the results in a table I can review before I make any changes.

This prompt tells ChatGPT to flag rather than merge. OpenAI recommends reviewing outputs before acting on them, because AI can make mistakes or assumptions you would not agree with (OpenAI, Data Analysis with ChatGPT).

If ChatGPT's first pass misses obvious duplicates, refine the match rules and re-upload. You are training the review process, not handing over the final decision.

Step 6: Review the flagged duplicates and build a merge plan

ChatGPT returns a list of flagged duplicates with row numbers and confidence levels. Work through them methodically:

  1. Start with the high-confidence matches (same email address). Verify a few manually to confirm the logic is sound.
  2. Move to likely matches (same phone number, similar names). These need more judgment. Check whether the phone number is a shared office line or personal cell before merging.
  3. For each group, pick the most complete record as the survivor. Look for the entry with the most filled-in fields: notes, tags, lead source, last contact date.
  4. Copy any unique data from the non-survivors into the survivor record (a note field saying "previously also listed as [old email]" can be useful).
  5. Build a clean list: one row per contact, normalized fields, no duplicates.

Step 7: Normalize fields before importing back into your CRM

After merging, normalize your data so future imports do not create new duplicates. Standardize:

  • Phone numbers to a consistent format (e.g., (555) 123-4567 or 5551234567, whichever your CRM expects)
  • Names to title case ("Bob Smith," not "bob smith" or "BOB SMITH")
  • Email addresses to lowercase
  • Any custom fields your CRM uses for lead source, status, or tags

A consistent format also makes later reviews easier because the same kind of value is written the same way in every row.

Step 8: Validate a small batch before importing everything

Do not import the entire cleaned list at once. Take ten contacts, import them into a test list or a sandbox if your CRM supports one, and verify that:

  • All fields landed in the right columns
  • No contacts split or merged unexpectedly
  • Tags, notes, and lead source data survived the round trip

Once those ten look correct, import the rest. If your CRM is KW Command, see Import Contacts into Command for the import steps. If you are adding individual contacts manually, see Adding Contacts In KW Command.

Step 9: Delete uploaded files from ChatGPT

When the job is done, clean up. Open the chat that contains your uploaded file and delete the chat from your ChatGPT history. OpenAI states that once a chat is deleted, the associated file is deleted within 30 days, subject to stated exceptions (OpenAI, File Uploads FAQ). This closes the loop on the data minimization principle from Step 2.

Why this is a review workflow, not a one-click fix

AI is good at pattern matching but bad at knowing your business. It does not know that "Mary Johnson" at one email is your past client and "Mary Johnson" at another is a new lead from last week's open house. The workflow above keeps you in the decision seat. ChatGPT flags candidates. You approve or reject. The backup from Step 1 means you can always undo.

For agents who are newer to using ChatGPT for real estate tasks, see How to Use ChatGPT for Real Estate Listing Preparation for a walkthrough of uploading property data and writing prompts that produce useful output.

Sources

  • OpenAI. "Data Analysis with ChatGPT." https://help.openai.com/en/articles/8437071-data-analysis-with-chatgpt
  • OpenAI. "Data Controls FAQ." https://help.openai.com/en/articles/7730893-data-controls-faq
  • OpenAI. "File Uploads FAQ." https://help.openai.com/en/articles/8555545-file-uploads-faq
  • Federal Trade Commission. "Privacy and Security." https://www.ftc.gov/business-guidance/privacy-security
  • National Association of Realtors. "Data Privacy and Security." https://www.nar.realtor/data-privacy-security

Related Articles

Frequently asked questions

Will ChatGPT mix up contacts that are not actually duplicates?+

It can flag false positives. Treat every result as a candidate, then confirm or reject it using your written match rules. ChatGPT should not make the final merge decision.

What if my CRM has thousands of contacts?+

File and usage limits vary by plan and account settings. If your export cannot be processed as one file, split a minimized working copy into smaller batches and apply the same matching rules to each batch.

Can I do this with the free version of ChatGPT?+

OpenAI says file uploads are available on Free and paid ChatGPT plans, subject to plan-specific usage limits and account settings. Check the current File Uploads FAQ and confirm that your account can upload and analyze a spreadsheet.

What happens to my data after I delete the chat?+

OpenAI states that once a chat is deleted, the associated file is deleted from its systems within 30 days, subject to the exceptions described in its File Uploads FAQ. Review the current retention policy and your brokerage policy before uploading contact data.

Keep reading

Related reading.

Layered editorial collage showing a laptop with an AI chat interface, a tablet displaying an AI-powered listing presentation with a modern house, and a smartphone showing market comparison data, all over an architectural floor plan background

Listing Marketing

9 min read

How to Build an AI-Powered Listing Presentation for Real Estate Clients

Winning listings starts with a strong listing presentation that shows sellers you know their market and their home. This guide shows you how to use AI tools like Claude and ChatGPT to research comparable properties, draft compelling presentation copy, and assemble a professional deck faster.

TAThe AMS Team
Architectural line-art under-contract timeline with message bubbles, approval checkpoints, calendar entries, and contract documents on a floor plan background

AI for Real Estate Agents

8 min read

How to Set Up Automated Under-Contract Check-In Sequences Using AI

Build a structured under-contract check-in system that uses ChatGPT to draft milestone messages for your review and approval. This guide walks real estate agents through the milestones, message templates, scheduling setup, and the approval gate that keeps every send accurate and professional.

TAThe AMS Team
Layered editorial collage showing a client contact card with purchase history, a quarterly follow-up calendar, a ChatGPT nurture message interface, and a referral request form over an architectural floor-plan background

AI for Real Estate Agents

6 min read

How to Nurture Past Real Estate Clients at Scale Using AI

Use ChatGPT to build a repeatable past-client nurture system that sends personalized check-ins, market updates, and referral requests without overwhelming your calendar. This guide covers the client data setup, message templates, and automated scheduling workflow.

TAThe AMS Team