Skip to main content

Cleaning Up 20,000+ School Records with a 30-Property Match Script

Client: a K-12 education company. What I did: designed and ran the cleanup end to end. Tools: Python script built with Claude, HubSpot data quality tool.

The Problem

The CRM had a lot of duplicate company records. In this setup, companies are schools, and a separate custom object holds districts. Schools are hard to dedupe because of their names. There's a Jefferson High School in nearly every state, and not every record had a domain, so matching on name or domain alone didn't work.

What I Changed

I used Claude to write a Python script that compares records across more than 30 properties to find true matches. Once the matches were identified, I deduped them with HubSpot's native data quality tool.

Results

  • More than 20,000 school records needed cleanup. 60% were merged. The rest were re-associated, re-tagged as non-US public, private, or charter schools, or deleted.
  • The school cleanup took two months, and the district cleanup took a month. Contact records are next.
  • The database now holds 14,000 districts, 120,000 schools, and 160,000 contacts.

Have a messy CRM? Let's talk.

Connect on LinkedIn