CRM Enrichment Playbook
Fill every gap in your CRM without overwriting what your reps know. Claude Code audits every field and guards every write, and Freckle finds what is missing.

Tools used
HubSpot
Salesforce
Claude Code
Freckle
Apollo
TheirStack
Jev
LeadMagic
Findymail
BetterContact
MillionVerifier
BounceBan
Slack
How it works
Claude Code reads the CRM through its API and writes the field map before any data is bought.
- Claude Code pulls every company and contact field from HubSpot or Salesforce:
- Its type and allowed values
- How often it is filled
- When it was last updated, and by whom
- It flags duplicates, fields nobody fills, and fields that contradict each other.
- It compares your won and lost deals, so the map starts from the fields that separate them.
- Each field in the map gets four rules:
- Allowed values: the exact options the CRM accepts
- Source of truth: where the value should come from
- Refresh cadence: how fast it goes stale
- Overwrite rule: who may replace it
- The field map and overwrite rules follow Jacob Tuwiner's HubSpot enrichment series, rebuilt for coding agents.
Claude Code
HubSpot
Salesforce
- Claude Code pulls every company and contact field from HubSpot or Salesforce:
A value a person put in the CRM beats anything a vendor finds, so the overwrite rules are set before the first run.
- A blank field is filled automatically.
- A value a rep typed in, or one your product collected, stays. A mobile number a customer gave your rep beats any vendor's.
- A rep's value can only be replaced once it is stale, for example after nine months with no update, and only after review.
- Customers and open deals get the strictest rules. The rest of the database can be filled more freely.
- HubSpot records where every value came from, so the rules can tell a rep's entry from an import. In Salesforce, turn on field history tracking for the fields you protect.
- Back up the CRM before the first write.
HubSpot
Salesforce
The CRM loads into a Freckle workbook on a schedule, and only records with a blank or stale field go through.
- Freckle imports a HubSpot list or filter, or a Salesforce view or query, on a schedule.
- Later imports update the same records, so nothing is duplicated.
- A value the CRM already has is reused, never bought again.
Freckle
HubSpot
Salesforce
Company fields fill through a waterfall. Providers run in order of precision, and each one only sees what the one before it missed.
- Apollo fills headcount, industry and location. TheirStack fills the tech stack.
- Freckle's research agent is the last step for anything the providers miss.
- The company's LinkedIn page is found two ways, from the URL already in the CRM and from the domain:
- They match: done
- They differ: the research agent decides by your rule, such as the brand's own page over its parent company's
- The tiebreak only runs when the two disagree, so the check stays cheap.
Freckle
Apollo
TheirStack
Some fields only exist in your own definitions. Freckle's research agent reads each company's site and answers them.
- Typical questions:
- Does it sell to businesses, consumers, or both?
- Which of your own categories and subcategories fits it?
- Is it a franchise brand or the parent company?
- The agent gathers its own evidence first, like who the company sells to and what it offers, then answers.
- Every answer is checked against the CRM field's allowed values. Anything else is left blank.
Freckle
- Typical questions:
Jev sorts each account into your tiers from the data the row now holds.
- Jev runs inside Freckle as its decision agent. It classifies and scores only, and never looks anything up.
- It flags a row it can't decide, so nothing is tiered on a guess.
- The tier sets how deep the contact search goes:
- Deep: customers, open deals and tier one get every field, mobiles included
- Light: everyone else gets the few fields that route them
Jev
Emails and mobiles come from a waterfall, and every email is checked twice before it is written.
- Work emails come from LeadMagic, then Findymail for the ones it misses.
- Mobiles, for the deep tier only, come from Freckle's own finder first, then BetterContact.
- A research agent can't reliably find emails or phone numbers on the open web, so the contact waterfall ends at its last provider.
- MillionVerifier checks every address first, then BounceBan checks every address that passes. Freckle calls both through its HTTP step.
- An address that fails is never written. The contact keeps a flag instead, so nobody is silently dropped.
LeadMagic
Findymail
BetterContact
MillionVerifier
BounceBan
Nothing runs on the whole database until it matches what you already know.
- Pick 20 to 40 records you know well, like current customers, and fill in their fields by hand.
- Freckle runs the workflow on a sample first and forecasts the credits for the full run.
- Claude Code compares every field with the hand-checked answers. Each field has to be right at least 90% of the time.
- A field below that bar gets a better prompt or another provider, then it is tested again.
- The hand-checked answers always come from a person, so no model grades its own work.
Freckle
Claude Code
Every change is compared with the live record, and only safe changes go straight in.
- Claude Code builds the writer on the CRM's API. Each record is read again right before the write, so an edit a rep made mid-run is never lost.
- Each change is sorted:
- Blank field: filled automatically
- Different value: reviewed field by field in Slack before anything is written
- Set by a rep: left as it is
- Every write is logged with the old value, the new one and the rule that allowed it, so any field can be put back.
Claude Code
HubSpot
Salesforce
Slack
Records are re-enriched when something changes, and each field refreshes on its own schedule.
- New records are enriched as they arrive.
- Freckle watches your contacts for job changes and your accounts for new hires.
- A job change re-enriches that person and alerts the account owner in Slack.
- Fields past their refresh date go back through the workflow. Slow fields, like business model, are filled once.
Freckle
Slack
Want this running for your market?
We build it on your data and your offer, then run it with your team. It starts with a 30-minute strategy call.
Book a strategy call

