Most sales teams have a lead generation problem that looks like a people problem: SDRs spend 40–60% of their time on research and data entry instead of selling. The real issue is an automation gap.
The research workflow — find leads, verify contact info, check LinkedIn, score fit, push to CRM — is entirely automatable. Here’s how to build it.
The pipeline
The goal: given a company name and a job title, automatically surface a verified, enriched contact ready for outreach.
Input: company domain + target role (e.g., acmecorp.com + VP of Marketing)
Output: name, LinkedIn URL, verified email, tech stack, enriched CRM record
The pipeline has five stages, each powered by a separate worker.
Stage 1: Find the person
Using a B2B lead extractor worker:
POST /v1/workers/b2b-lead-extractor/jobs
{
"domain": "acmecorp.com",
"targetTitle": "VP of Marketing",
"maxResults": 3
}
Returns:
{
"leads": [
{
"name": "Sarah Chen",
"title": "VP of Marketing",
"linkedinUrl": "https://linkedin.com/in/sarah-chen-vp",
"email": "s.chen@acmecorp.com",
"confidence": 0.87
}
]
}
Stage 2: Enrich the LinkedIn profile
POST /v1/workers/linkedin-enricher/jobs
{ "profileUrl": "https://linkedin.com/in/sarah-chen-vp" }
Returns: full name, seniority, skills, previous employers, education. Useful for personalizing outreach.
Stage 3: Verify the email
POST /v1/workers/email-validator/jobs
{ "email": "s.chen@acmecorp.com" }
Returns: deliverability score, MX check, SMTP probe result. Only proceed if score > 0.80.
Stage 4: Detect company tech stack
POST /v1/workers/website-tech-detector/jobs
{ "url": "acmecorp.com" }
Returns the tools the company runs — CRM, analytics, ad platform, CMS. This enables highly personalized outreach: “I noticed you’re using HubSpot and Segment…”
Stage 5: Score and push to CRM
Once all enrichment is complete, run a scoring function on the enriched data and write to your CRM via API.
Orchestrating the pipeline
Because all workers are async, stages 2, 3, and 4 can run in parallel after stage 1 completes:
async function enrichLead(domain, targetTitle) {
// Stage 1: find the lead
const { leads } = await runWorker('b2b-lead-extractor', { domain, targetTitle, maxResults: 1 });
const lead = leads[0];
if (!lead) return null;
// Stages 2, 3, 4: run in parallel
const [linkedinProfile, emailCheck, techStack] = await Promise.all([
runWorker('linkedin-enricher', { profileUrl: lead.linkedinUrl }),
runWorker('email-validator', { email: lead.email }),
runWorker('website-tech-detector', { url: domain }),
]);
// Stage 5: build enriched record
if (emailCheck.deliverabilityScore < 0.80) return null;
return {
name: lead.name,
email: lead.email,
title: lead.title,
linkedinUrl: lead.linkedinUrl,
skills: linkedinProfile.skills,
techStack: techStack.tools,
fitScore: calculateFitScore(linkedinProfile, techStack),
};
}
The total time for this 5-stage pipeline: roughly 5–10 seconds per lead. For a list of 100 target companies, running 100 pipelines in parallel gives you 100 enriched leads in under 60 seconds.
Sourcing the input list
The pipeline needs a starting domain list. Options:
- Export target accounts from your CRM
- Pull from a Google Maps extraction (e.g., “marketing agencies in NYC”)
- Use a company search tool with a CSV export
- Scrape a curated industry directory
Feed any of these into the pipeline. The workers handle the rest.
Cost model
| Stage | Worker | Cost/lead |
|---|---|---|
| Find lead | b2b-lead-extractor | $0.004 |
| LinkedIn enrich | linkedin-enricher | $0.005 |
| Email verify | email-validator | $0.001 |
| Tech stack | website-tech-detector | $0.003 |
| Total | $0.013 |
Enriching 1,000 leads costs $13. A single SDR hour costs $30–$80.
The math is straightforward: if each manually researched lead takes your SDR 15 minutes, you’re spending $7.50–$20 in labor per lead. The automated pipeline costs $0.013 — over 500× cheaper, and faster.
What this doesn’t replace
The pipeline surfaces good leads. It doesn’t write the email, read the room, build rapport, or close the deal. Good SDRs become dramatically more productive with this kind of tooling — they spend their hours on conversations, not research.
Automation replaces repetitive information work. It amplifies the parts that require human judgment.