Case study · Customer insight & ICP

An enrichment engine that cleans the CRM instead of polluting it

Enrichment can degrade a CRM: it overwrites good data with worse, burns credits re-processing the same records, and leaves reps on stale information. A governed HubSpot, Clay, and n8n pipeline enriches raw records, scores them against an ICP, and writes back under strict field-level rules, leaving the CRM cleaner on every run. Built and run live in HubSpot; every number here comes from the live run.

HubSpotClayn8n
ICP scoringField-level governanceRevOps automation
12
raw records enriched
100%
Clay match rate
7 / 3 / 2
ICP tiers A / B / C
0
critical fields overwritten
The problem

Enrichment usually makes a CRM worse, not better

Bad enrichment costs more than missing data: it overwrites good fields with worse ones and burns credits re-buying records you already have. The fix is governance, a system that knows what to write, what to protect, and what to skip, so every run leaves the CRM cleaner than it found it.

Architecture

Three layers, clean separation of concerns

Layer 1 · System of Record

HubSpot

Owns contacts, companies, deals. The final authority on “truth.” Feeds sales and marketing execution. Never treated as a processing scratchpad.

Layer 2 · Intelligence

Clay

A temporary working layer, not a database. It pulls raw records, enriches them (industry, headcount, revenue), validates, scores against the ICP, and decides what actually gets written back.

Layer 3 · Orchestration & Governance

n8n (self-hosted)

Controls when enrichment runs, what gets written back, how often data refreshes, and what gets blocked. On a $0 stack, n8n also bridges Clay↔HubSpot via API, replacing both HubSpot’s paid workflows and Clay’s paid native sync.

The pipeline

Eight steps from raw record to routed account

Trigger / schedule Pull raw records Pre-enrichment validation Enrich (Clay) Normalize + ICP score Write-back governance Sync to HubSpot Route / activate

Pre-enrichment validation skips already-enriched records, so the system does not burn credits re-processing data it already has.

Write-back governance

What gets written, and what gets protected

Empty field
Always write.
Existing field
Overwrite only if enrichment confidence is above threshold.
Critical (domain, name)
Never overwrite. Identity is protected.
Derived field
Always write (it is computed, not authored).
Signals
Append and timestamp. Never clobber a time series.
The run

12 accounts, enriched and scored A / B / C

Demo ICP: B2B software, roughly 50–2,000 employees, sales-led, real revenue traction. Scoring is rule-based and explainable on purpose.

CompanyIndustryEmployeesRevenueICP
ApolloSoftware504$500M–1BA
LemlistSoftware247$75M–200MA
InstantlySoftware292$75M–200MA
ClaySoftware1,367$500M–1BA
SalesloftSoftware1,106$500M–1BA
OutreachSoftware1,608$500M–1BA
GongSoftware2,556$500M–1BA
SmartleadSoftware138$5M–10MB
NotionSoftware6,420$1B–10BB
SalesforceSoftware83,794$10B–100BB
RampFinancial Services2,469$1B–10BC
StripeTech / Internet15,871$1B–10BC

The model discriminates as designed: sales-SaaS in the sweet spot rises to A; under-revenue (Smartlead), over-size (Notion, Salesforce), and out-of-industry (Ramp, Stripe) fall to B/C and route to nurture instead of an SDR.

Going further

What I’d add, and why it is three systems in one

What I’d add for production

Error handling and retries with alerting · a compliance / suppression check (GDPR/CCPA, opt-outs) before enrichment · per-run credit caps · a closed loop that writes outcomes back to refine the ICP score over time · concurrency-safe locking so the scheduled, inbound, and outbound triggers cannot double-enrich a record.

Why it is three systems, not one

The same engine runs three ways by swapping the trigger: outbound (scraped and signal lists), inbound (form / webinar capture, routed instantly with async enrichment so hot leads do not go cold), and scheduled CRM hygiene (this build). One spine, three deliverables.

The data layer of the stack.

Governed enrichment and ICP scoring that keep a CRM trustworthy as it grows. Have a look at the rest of the stack, or get in touch.