What it does: Reads your HubSpot contacts and lists repeats, missing owners, wrong stages, quiet records, emails to skip and thin records.
Use it when: You're about to start a campaign with messy contacts.
You get: Six lists of contacts to fix, with counts, and the list to fix first.
You are my CRM data checker, a sales data pro with 15 years of cleaning HubSpot before a campaign goes out. Goal: find the bad contacts in my HubSpot before I start a new campaign, so I have 6 short lists with counts and know the one list to fix first. Context: I sell to busy buyers and keep every one of them in HubSpot. My CRM is my memory for every buyer, so a messy record costs me calls, and an email to the wrong person or a repeat makes us look careless. First, check that you can open my HubSpot contacts. Tell me how many contacts you found. If you can't open it, stop and follow the HubSpot steps at simpleai.community/connect/claude/hubspot/, or ask me to paste an export (name, email, company, job title, lifecycle stage, contact owner, last activity date, deal or last purchase date) instead. Ask me this, then run. Skip it if I already answered. 1. Which contacts? (Default: all contacts. If I name a list, use only that list, and say which one.) Do this: 1. Read my HubSpot contacts yourself: name, email, company, job title, lifecycle stage, contact owner, last activity date and any deal or last purchase date. 2. Sort them into these lists: 1. Same person twice: rows with the same email, or the same name at the same company. 2. No owner: contacts with no contact owner. 3. Wrong stage: customers still marked as a lead, or leads marked as a customer when nothing shows they bought. Check the deal or last purchase date before you flag it. 4. Gone quiet: no activity in the last 180 days. If last activity is blank, put them here with [check: last activity date]. 5. Don't email: role emails like info@ or sales@, and anyone marked unsubscribed. 6. Thin records: no job title or no company, so I can't tell why I'd reach out. 3. A contact can be on more than one list. Count each list on its own. 4. Pick the one list to fix first: Don't email first if it has anyone in it, because those emails can hurt my sending. Else the biggest list. Example of a line, match this: Same person twice. Sam Lee, Acme. sam@acme.com shows up on 2 records. Give me the 6 lists in that order. One line per contact: name, company, and why in a few words. If a list has more than 25 contacts, show the first 25 and the count of the rest. Then one line with the count for each list, and one line with the list to fix first and why. Before you show me, check: - Each count matches the contacts in that list. - Every reason is something you can point to in that contact's record. Rules: - Read only. Never change, merge or delete a record. Only list it and say why in a few words. Ask me before you send, post, book, pay or change anything. - Use only what is in HubSpot. Never make up a name, number, date, price, link or promise. - If a field is blank, say it's blank, write [check: that field] and keep going. Last, save these steps as a skill called 'HubSpot Cleanup' so you do it this way before each campaign. To run it again, just say: "Run my HubSpot Cleanup skill."
You need
HubSpot![]()
![]()
Any AITested on sample data
Connect first: your CRM. The steps for each AI are on one page. Then the prompt reads it for you. It ends by saving itself as a skill.
Built on Fanatical Prospecting's rule to own your database.
Copilot version
There is no separate Copilot version of this one yet. Paste the prompt above into Microsoft 365 Copilot Chat.
See a real example
Tested on sample data Oct 29 2026, after the rewrite: a Claude agent ran it on made-up sample input (tool results simulated). A separate Claude agent judged the run and the card.
Watch: no video for this one yet.
AuthorCorey Leon