How a $10M AI Agent SaaS Turned Raw Inbound Into a Real-Time RevOps Enrichment Engine
This case study features a $10M seed-funded AI agent SaaS building an enterprise AI workforce technology. As inbound demand scaled in 2025, the contacts hitting HubSpot were arriving raw, no titles, no work emails, no firmographic context. By summer 2025, the team had a backlog of 18,120 unenriched contacts and no way to act on them. Growth Today built a real-time enrichment engine on top of Clay and HubSpot to fix it.
Growth Today built a Clay-powered enrichment engine sitting between inbound and HubSpot. Every new inbound contact runs through it within 24 hours, comes out enriched and scored, and lands in HubSpot ready for sales to work on.
Impact TL;DR
- 18,120-contact backlog cleared in two weeks of pipeline runs (mid-to-late July 2025)
- Every new inbound contact gets enriched within 24 hours of landing in HubSpot, no queue, no lag, no SDR research
- Every contact comes out scored: Complete (work email, mobile, LinkedIn, and company data, ready to work), Partial (incomplete, flagged for re-enrichment), or Trash (no recoverable signal). Sales never opens an inbox blind anymore.
- LinkedIn, work email, mobile, and company data all run through multi-provider waterfalls, validated before the data writes back to HubSpot
- Zero manual research required from the team after go-live
- HubSpot company records get created automatically when a contact's domain doesn't match an existing account, and no orphan contacts are created
The problem
Inbound was hitting HubSpot, but nobody knew what to do with it
The team had real inbound demand. Sign-ups, demo requests, and content downloads are all flowing into HubSpot. But what landed there was barely useful: names without titles, personal email addresses with no work email match, companies without a domain or size. There was no way to tell which contact ran a 5,000-person enterprise and which one signed up from their personal Gmail to play with the free tier.
For the SDR team, that meant every contact was literally a guessing game. They couldn't tell who to reach out to first, what level of effort to put in, or whether a contact was even worth opening. So they did one of two things: either spent 5+ minutes researching the contact on LinkedIn before any outreach (slow, manual, inconsistent across the team), or skipped contacts entirely because they didn't look promising on the surface.
Both options = missed opportunities.
By summer 2025, this had compounded into an 18,120-contact backlog. Too many records to research manually. Too messy to act on. Growing every day with new inbound.
The Solution:
Growth Today built a Clay table that sits between HubSpot and the SDR team. Every new inbound contact runs through it. The pipeline pulls the contact, runs six enrichment stages on it, scores what came out, and pushes the result back into HubSpot, all automatically, in 24-hour cycles.
The goal wasn't to do another one-time CRM cleanup. It was to build something that would keep working long after we set it up. So we designed it around five system properties:
- Inbound gets enriched in real time, not batched up for someone to process later
- Every contact comes out scored, so SDRs know what they're looking at before they open it
- Account context lands with the contact, not as a separate research step (firmographics, domain match, exclusion check)
- The pipeline doesn't waste credits: each stage only runs if the previous stage produced something useful
- Nobody on the team has to research a contact again once the system is live
For any of this to work, we needed a clean trigger architecture and a multi-provider data layer underneath:
- Continuous Clay-to-HubSpot sync on a 24-hour active cycle
- Six-stage enrichment pipeline with conditional logic between stages
- Multi-provider waterfalls for LinkedIn, work email, mobile, and company data
- Validation layer that only lets verified, safe-to-send data write back
- Automated write-back that classifies the contact and creates the company record if it doesn't exist
The goal: turn raw inbound into a CRM that sales can actually work from.
Use case 1
The 6-stage enrichment pipeline
The pipeline runs as a Clay table feeding HubSpot, on a 24-hour cycle. Each stage only runs if the previous one produced something useful, so credits don't get spent on dead leads.
- Source. The pipeline pulls every new contact from HubSpot that's flagged as needing enrichment. The list refreshes every 24 hours.
- LinkedIn discovery. Two parallel waterfalls try to match each contact to a LinkedIn profile, using work email and company domain as inputs. If neither finds a match, the contact gets flagged Partial and the pipeline skips ahead.
- Person enrichment. Once the LinkedIn match is found, the pipeline pulls name, job title, company, role context, and country directly from the profile.
- Company enrichment. A multi-step domain waterfall finds the right company record. Then firmographic providers fill in employee count and annual revenue. The pipeline also runs the company against an exclusion list (low-fit accounts, marketplaces, ineligible categories).
- Work email and mobile. Multi-provider waterfalls find work email and mobile number. A validation layer checks both before they're written back: work email has to be safe-to-send (no risky bounces). Mobile has to be a real, active mobile number (not a landline, not disconnected).
- Write-back. The pipeline classifies the contact as Complete, Partial, or Trash, then writes back to HubSpot with everything it found. If the contact's company doesn't exist as a HubSpot record, it gets created automatically with the enriched company data attached.
By the time a contact comes out the other side, HubSpot has its full identity (name, title), LinkedIn (URL plus role context), work email and secondary email, phone and mobile, country, and full company picture (name, domain, employee count, revenue), plus a HubSpot company record if one didn't exist before.
This is the architecture every other use case sits on top of.
Use case 2
Clearing the inbound backlog
The first thing to do was clear the 18,120-contact backlog that had piled up through mid-July 2025. Real inbound leads, sitting in HubSpot for weeks or months, with partial fields and no way to tell who was worth opening.
We loaded the full backlog into the pipeline and let it run. About two weeks later, every contact had been processed. Each one came out tagged Complete, Partial, or Trash, with work email, mobile, LinkedIn, company size, and revenue written back to HubSpot.
Use case 3
Real-time enrichment on net-new inbound
Once the backlog was processed, the pipeline shifted into steady-state. A HubSpot active list keeps every new inbound contact flowing into Clay automatically. The moment the pipeline finishes processing a contact, it falls off the list, no duplicates, no records stuck in limbo.
By August 2025, the queue depth had dropped to near zero and has stayed there since. Every new inbound contact gets enriched within 24 hours of landing in HubSpot.
That changes what each team can do:
- SDRs open up HubSpot in the morning and see contacts they can actually act on. No more 5-minute LinkedIn lookups before sending a message.
- RevOps has a clean source of truth. Reporting actually reflects reality.
- Marketing can finally segment based on firmographics that exist in the CRM, instead of writing emails to "everyone who downloaded a thing".
Use case 4
Account intelligence is built into the funnel
Knowing the contact isn't enough. To prioritize, sales need to know what kind of company they're in. Is this a 50-person Shopify store or a 5,000-employee enterprise? Are they in a relevant industry, or are they a marketplace we don't sell to anyway?
The pipeline answers all of that as part of the same run. Every contact gets matched to a HubSpot company record (and if no company exists yet, one gets created), enriched with employee count and revenue, and run against an exclusion list before anything writes back to HubSpot.
That means every inbound contact lands with the company picture already attached: confirmed domain, company size, revenue band, and a clean exclusion check.
Account-level enrichment stops being a quarterly cleanup project and becomes a property of every contact, applied the moment it shows up.
Why this matters for the business
Normalizing the top of the funnel makes everything downstream work better.
- Speed-to-lead: enriched contacts get routed and worked the same day they land. Unenriched contacts wait in a queue until someone has time to research them. (Often, that day never comes.)
- Pipeline hygiene: Trash contacts get flagged before they pollute pipeline reporting. Partials get flagged for re-enrichment instead of just disappearing into the CRM.
- Sales productivity: SDRs don't spend the first 5 minutes of every contact looking up the company on LinkedIn. That's roughly 5+ hours saved per SDR per week, and it goes back into actual selling.
- Segmentation: Marketing can segment by firmographics that actually exist in the CRM, not by guesses or generic everyone-list emails.
- Ops cost: What used to need a research analyst (or just didn't get done) now runs as a 24-hour cycle with zero human involvement.
Results & Impact
RevOps Impact
- The CRM became an accurate source of truth, not just a data collector tool. Every contact carries firmographic and ICP context.
- Data quality stays clean continuously, without anyone working on it. Trash and Partial get flagged automatically before they hit reporting.
- Zero manual research overhead. What used to need a dedicated research analyst (or just didn't get done) now runs as a 24-hour cycle.
Sales Impact
- Enriched, scored contacts ready for outreach the same day they land
- 5+ hours saved per SDR per week, no more morning LinkedIn lookups before every send
- Real prioritization: tier and ICP fit visible at point of capture, not figured out manually after the fact
Leadership Impact
- The inbound funnel actually works now. Every downstream motion (sales, marketing, RevOps) runs on clean data.
- The infrastructure is reusable. The same pipeline that runs inbound enrichment can power outbound and TAM expansion when the team is ready to scale further.
- The CRM stopped being a place where contacts go to wait. It became something the business actually runs on.
Explore more customers
Ready to accelerate your pipeline?
Reach out to discuss how we can help your GTM team scale with automation and expertise.


