A Series B B2B SaaS company (~80 employees, US-based) came to me with a problem that I see over and over: they were paying $2,000+ per month for Apollo and ZoomInfo subscriptions, and the data was costing them deals. SDRs were spending 3-4 hours per day manually qualifying leads before they could even touch the CRM. A campaign targeting a specific sub-vertical returned only 200 leads from Apollo — the team knew there were 2,000+ out there. The data gap was real, measurable, and painful. This is the story of how I replaced that subscription with a custom pipeline that costs a fraction of the price and produces fresher data.
The before state
Before we touched anything, the client's lead sourcing stack looked like this:
- Apollo — $1,200/month, used for outbound prospecting
- ZoomInfo — $800/month, used for enrichment and intent data
- Two SDRs manually researching each account in LinkedIn before CRM entry
- Manual CSV imports into HubSpot when the team ran targeted campaigns
- Lead data was 60-90 days stale for their specific niche — Apollo and ZoomInfo simply did not have the long-tail vertical coverage they needed
The trigger
A campaign targeting 'US recruiting agencies hiring SDRs' returned 200 leads from Apollo. The team estimated the real market was 2,000+ companies. They were leaving 90% of their addressable market on the table because the data simply wasn't there.
The architecture we built
The pipeline has four stages: source, enrich, score, sync. Each stage is a discrete component that can be swapped out without rebuilding the others.
Stage 1 — Sourcing
Apollo and ZoomInfo are weak for niche verticals because they aggregate from public business registries, which under-index small B2B services firms. We replaced this with a multi-source sourcing layer:
- Google Maps API for location-bound verticals (recruiting agencies, brokerages, clinics) — gives us business name, address, phone, website, and category
- Custom Python scrapers for niche directories (BuiltWith for tech stack, Clutch for agency reviews, niche industry directories)
- LinkedIn Sales Navigator searches for buyer-title enrichment only (not for sourcing) — much cheaper than full LinkedIn scraping
- Apollo's API kept around for fallback email validation, but no longer the primary source
Stage 2 — Enrichment (in Clay)
Raw records from sourcing flow into a Clay table. Clay's waterfall enrichment runs in this order, stopping as soon as a field is filled:
1. Find work email — try Apollo, then Hunter, then custom domain pattern guesser
2. Verify email — NeverBounce API (98%+ deliverability guarantee)
3. Find LinkedIn URL — Google site:linkedin.com/in search via Serper API
4. Pull company tech stack — BuiltWith API (gives us CRM, marketing tools, hiring signals)
5. Pull recent news — Google News API for last 90 days, filtered to company name
6. Pull hiring signals — company careers page scraped weekly
7. LLM enrichment — GPT-4o-mini reads all the above and produces:
- One-sentence company summary
- Top 3 likely pain points based on tech stack + news + hiring
- Buyer title recommendation (HR? Ops? Founder?)
- Personalization hook for cold outreachWhy Clay and not a custom Python script?
Clay's waterfall enrichment is non-trivial to rebuild. Each provider has its own API quirks, rate limits, and error modes. Clay handles all of that and gives a UI for the SDR team to manually tweak enrichment rules without touching code. We could have built this in Python, but the maintenance overhead would have killed the ROI.
Stage 3 — Scoring
Each enriched record gets a score from 0-100 based on weighted signals:
- Industry fit (15 pts) — does the vertical match our ICP?
- Employee count 10-75 (10 pts) — sweet spot for our offer
- US/UAE/UK location (10 pts) — geographies we can serve
- Buyer title found (10 pts) — can we actually reach a decision-maker?
- Manual ops signal (15 pts) — are they hiring for SDR/admin/data-entry roles?
- CRM/tool signal (10 pts) — do they use HubSpot, Salesforce, or no CRM at all?
- Hiring signal (10 pts) — are they growing?
- No internal engineering team (5 pts) — they'll need us
- LLM-assigned pain score (15 pts) — does the LLM see specific pain in their news/tech stack?
Anything scoring 80+ goes to the SDR team for personalized outreach. 60-79 goes into a nurture sequence. Under 60 is dropped. This scoring runs automatically on every new record.
Stage 4 — Sync to HubSpot
Qualified records (score 60+) push to HubSpot via n8n. The push includes:
- All enrichment fields as custom HubSpot properties
- Lead source = 'Clay Pipeline' so we can measure pipeline contribution
- Lifecycle stage = 'Lead' for 60-79, 'MQL' for 80+
- Owner = round-robin across the SDR team
- AI-generated personalization hook saved to a custom 'Outreach Hook' field for the SDR to use in their first email
The results
Three months after launch, here's what changed:
The client's SDR team went from 'researching all day, calling for an hour' to 'calling all day, researching for 30 minutes'. Their outbound reply rate went up 2.3x in the first 60 days — partly because the data was fresher (people actually still worked at the companies we were targeting) and partly because the AI-generated personalization hooks gave the SDRs a credible opening line in every email.
What it actually cost to build
Here's the honest cost breakdown of building and running this pipeline:
- Build cost (one-time): $3,000 fixed project fee, 2-week timeline
- Clay subscription: $149/month (Pro plan, sufficient for ~10k enrichments/month)
- Apollo API (fallback only): $49/month (cheaper API-only tier)
- NeverBounce: $24/month for 10k verifications
- LLM costs (GPT-4o-mini for enrichment): ~$60/month at our volume
- n8n: self-hosted on existing GCP VM, ~$0 marginal cost
- Total monthly run cost: ~$280/month vs $2,000/month before
Payback period: 11 days
The client recovered the entire build cost in less than two weeks of saved subscription fees. Everything after that is pure savings + better outbound results.
The 3 things that almost broke the project
Every project has its potholes. Here are the three that almost derailed this one:
- 1Email deliverability. The first version of the pipeline didn't verify emails. The SDR team's first cold email campaign had a 12% bounce rate, which tanked their sender reputation. Adding NeverBounce verification as a hard gate before CRM push fixed this — bounce rate dropped to under 1%.
- 2LLM enrichment cost. GPT-4o for the company-summary enrichment was costing $400/month at our volume. Switching to GPT-4o-mini for the same task cut cost by 90% with no perceptible quality loss. The lesson: most enrichment doesn't need the smartest model. Use the cheapest model that does the job.
- 3HubSpot rate limits. The initial sync pushed all qualified leads in one batch and hit HubSpot's API rate limit, blocking the entire flow. Throttling to 10 records per second with exponential backoff fixed this. Always check API rate limits before the first sync.
When this approach does NOT work
I get a lot of inbound asking 'can you build me the same thing?' — and the honest answer is sometimes no. This approach works when:
- Your ICP is a niche that Apollo/ZoomInfo under-index (recruiting agencies, forex, mortgage brokers, B2B services under $10M revenue)
- You have a clear definition of what makes an account 'good fit' — without that, the scoring layer can't work
- You're running 100+ outbound sequences per week — below that, the build cost doesn't pay back
It does NOT work when:
- Your ICP is Fortune 500 / enterprise — Apollo and ZoomInfo are actually good at that, and your build cost won't pay back
- You have no internal sales team to consume the leads — building the pipeline without anyone to work it is wasted money
- Your niche is so narrow that even Google Maps scraping doesn't surface enough volume — at that point, manual sourcing is more efficient
The takeaway
Off-the-shelf data subscriptions are a tax you pay when your ICP is broad and well-indexed. The moment your ICP gets niche — by vertical, geography, company size, or tech stack — the subscription model breaks down and a custom pipeline wins on both cost and quality. The build is non-trivial but the math is brutal: $3,000 one-time vs $24,000/year in subscription fees. Even if you rebuild the pipeline every two years, you're still 4x ahead.
Want this for your team?
I build lead intelligence systems for founder-led B2B SaaS, outbound agencies, and SMBs. If you're paying $1,000+/month for stale data and want a custom pipeline that's fresher and cheaper, book a 20-minute intro call from the contact section. I'll tell you on the call whether you actually need this — and if you don't, I'll tell you that too.
