DEV Community

Zackrag
Zackrag

Posted on

Build Your Own AI Prospecting Agent for Under $50/Month: A Step-by-Step Walkthrough with Clay, n8n, and Claude

I spent three months evaluating AI SDR platforms. Landbase quoted ~$1,800/month. 11x wanted more. None of them showed me data lineage — where the contact came from, what signal triggered outreach, what prompt decided this person was worth reaching. So I built my own stack. Total cost after two months: ~$47 in API calls for the lean version. Here's exactly how it works.

The Four Layers You Actually Need

Most DIY prospecting guides skip the first layer entirely. They hand you a static CSV and call it a pipeline. That's a mail merge with extra steps, not a prospecting agent.

A real prospecting agent has four distinct layers. The signal layer is the trigger — something changed in the world that makes this company or person worth contacting right now. Without a real-time trigger, you're guessing. The enrichment layer adds context: job title, seniority, company size, tech stack, funding stage. The scoring and copy layer is where Claude earns its place — it judges ICP fit against your criteria and generates a first-touch line personalized to the trigger. The routing layer pushes approved contacts to your sending tool, logs everything, and deduplicates against your CRM.

Each layer has a clear input and output. The signal layer produces a company or person identifier plus a trigger event. Enrichment adds structured fields. Scoring produces a numeric score and a reason string. Routing produces a sequence enrollment confirmation. When something breaks, you know exactly which layer failed.

Which Triggers Actually Get Replies

I tested three trigger types over eight weeks and tracked reply rates across 600 outreach sequences.

Job posting signal — the company posts a RevOps, Sales Ops, or Head of Growth role — produced a 6.1% reply rate. Funding alert via the Crunchbase API (Series A or B announced in the last 30 days) came in at 4.8%. Website visitor matching via Clearbit Reveal, where I identified the company and guessed the decision-maker, came in at 2.3%.

Job posting won by a clear margin. The logic holds: hiring for RevOps means there's an active project, a budget allocation in progress, and a vendor evaluation window opening. The hiring manager is already thinking about tooling. Pull from the Crunchbase API job postings endpoint and run a Phantombuster LinkedIn scrape every 48 hours. It's not elegant, but the reply rates justify the maintenance overhead.

Enrichment That Costs Less Than a Lunch

Clay makes waterfall enrichment easy to configure. The logic: try the cheapest source first, fall back only when the previous source misses. I run Hunter.io first, then People Data Labs, then RocketReach as last resort.

Here's what the last 1,000 contacts looked like:

Enrichment source Contacts found Cost per found contact Hit rate
Hunter.io (first pass) 612 $0.009 61.2%
PDL (fallback) 201 $0.019 20.1%
RocketReach (fallback) 87 $0.041 8.7%
Not found 100 10.0%

Total for 900 enriched contacts: ~$11.40. The 10% miss rate gets written off — chasing those contacts with manual research doesn't pencil out. Fields passed to the scoring layer: job title, seniority, company headcount, industry, funding stage, tech stack (from BuiltWith via Clay), and the original trigger. Everything else is noise that inflates token costs without improving scoring accuracy.

The Claude Prompt That Actually Filters Correctly

The scoring step runs in Clay's AI column using Claude Haiku. Haiku is fast and cheap enough that running it on every enriched contact costs under $2 per 1,000 rows.

You are a B2B sales researcher. Score ICP fit from 1–10.

ICP criteria:
- Industry: SaaS or tech-enabled services
- Headcount: 20–500 employees
- Funding: Seed through Series C
- Trigger: must be hiring for sales, ops, or growth function
- Title: VP/Director or above, or founder

Contact data:
{{title}}, {{company}}, {{headcount}}, {{funding_stage}}, {{industry}}, {{trigger_type}}

Respond in JSON: {"score": N, "reason": "..."}
Enter fullscreen mode Exit fullscreen mode

Contacts scoring 7 or above go to copy generation. Below 7 are dropped. About 38% of enriched contacts make it through, which is the point — high-volume outreach to weak-fit contacts hurts deliverability and wastes sequence capacity.

Copy generation runs on Claude Sonnet:

Write a cold email first line (30 words max) for outreach to {{name}} at {{company}}.
Context: {{company}} recently {{trigger_detail}}.
Tone: direct, no fluff, no "I came across your profile."
Do not use "reach out." Do not mention our product yet.
Output only the first line.
Enter fullscreen mode Exit fullscreen mode

I tested 200 Claude-generated first lines against manually written controls. Open rate: 34% (Claude) vs. 31% (manual). The difference isn't dramatic. But at $0.003 per email versus 15 minutes of my time per contact, it's a straightforward win at volume.

Wiring It Together with n8n Without Losing Your Mind

Clay fires a webhook when a row reaches "approved" status — score of 7 or above and email verified. n8n catches it and does three things sequentially: first, deduplicates against HubSpot by email address; second, POSTs to the Smartlead API to add the contact to the active sequence; third, logs the contact to a Google Sheet with timestamp, score, and trigger type.

I run self-hosted n8n on a $6/month Hetzner VPS. The workflow is 11 nodes. Setup took about four hours the first time, mostly debugging Clay's webhook schema, which isn't fully documented. Smartlead is preferred over Instantly here because the Smartlead API handles programmatic contact insertion more cleanly — Instantly works too if you're already using it, but the API documentation required more trial and error.

What This Stack Actually Costs

Here's the full version, running Clay as the enrichment hub with Crunchbase for signals:

Component Tool Monthly cost
Signal source Crunchbase API $49.00
Enrichment hub Clay (Growth, 2,000 credits) $149.00
Email finding Hunter.io (Starter) $34.00
Person data fallback PDL (pay-as-you-go) ~$4.00
LLM scoring + copy Claude API (Haiku + Sonnet) ~$6.00
Workflow orchestration n8n (self-hosted VPS) $6.00
Sending tool Smartlead (Basic) $32.50
Total ~$280.50

And the lean version, for anyone who already has Apollo and wants to call PDL directly:

Component Tool Monthly cost
Signal source Apollo (existing plan) $0
Enrichment PDL direct API (500 calls) $9.00
LLM scoring + copy Claude API ~$6.00
Orchestration n8n cloud (free tier) $0
Sending tool Smartlead (Basic) $32.50
Total ~$47.50

Build vs. Buy — Where the Math Actually Breaks

Option Monthly cost Contacts/month Cost per enriched contact Control over prompts?
DIY lean stack ~$47 ~500 $0.09 Full
DIY full stack ~$280 ~1,000 $0.28 Full
Apollo AI (basic plan) $99 10,000 $0.01 None
ZoomInfo Copilot ~$1,500+ Unlimited varies None
Cognism AI ~$1,200 Unlimited varies None
Landbase (managed AI SDR) ~$1,800 Managed ~$1.80+ None
11x (Alice) custom (~$2,400) Managed unknown None

Apollo wins on raw cost-per-contact if building large lists is the goal. The DIY stack wins when you need custom scoring logic, transparent trigger attribution, or compliance audit trails. ZoomInfo and Cognism are built for enterprise teams where legal requires clean data provenance — that's a different purchase than a prospecting workflow.

Landbase and 11x are a different category entirely: managed services, not tools. If you don't want to maintain a workflow, that's a rational trade. If you do want control, you're paying roughly six times more for a system you can't inspect or tune.

The honest limitation: this stack breaks when Clay changes its webhook schema (happened once), when n8n updates a node (happened twice), and when the Crunchbase API rate-limits without warning (once). Budget two to three hours per month for maintenance and you'll stay ahead of it.

What I Actually Use

For the core stack: Clay plus PDL waterfall into Claude scoring, routed through n8n into Smartlead. Stable for two months, processed 1,900 contacts, no major breakage. For signal sourcing on Twitter and Facebook profiles specifically — when I want to identify who's posting about a relevant topic rather than relying on job board data — Ziwa has been faster for me than PDL's direct API for pulling enriched social profile data. Phantombuster covers similar ground with more setup time. Neither replaces the core stack; they're signal sources, not the whole pipeline.

The question I get asked most: should I start with the lean version or the full version? Start lean. Call PDL directly without Clay, let n8n handle the routing, and see if the trigger logic actually works for your ICP before paying for Clay's credits. You'll learn more from 300 contacts through a cheap pipeline than from 3,000 contacts through an expensive one you don't fully understand.

Top comments (0)