Portfolio · Case Study

Diego S.
Diego S.
AI Engineering Agentic Systems Sales Automation Lead Intelligence
Education
Florida International University
BS · Computer Science
Florida International University
MBA · Marketing & E-Commerce
Pennsylvania State University
Master of Applied Statistics
Available now
Expert-VettedExpert-Vetted
Top RatedTop Rated
100%Job Success
Case Study
Agentic Lead
Generation Engine
Outbound Sales
B2B Prospecting
AI Engineering
4
Prospecting source types
Agentic
Contact enrichment
Zero-touch
Intake & qualification
01 · 08
Project overview
Key project facts
Type
Agentic Sales Platform
Domain
Outbound Sales · B2B
Engagement type
Product Build
Status
In production
Scope
Discover · Qualify · Enrich · Engage
Technical stack
Python FastAPI Anthropic Claude APScheduler PostgreSQL Pluggable Connectors Web Scraping Agentic Research Email Verification Slack API React Docker
Engagement summary

A generalized agentic engine for outbound B2B lead generation. Pluggable connectors discover prospects from company directories, search, professional-profile sources, and imported contact lists, normalizing everything into a single lead schema. Deterministic discard rules pre-filter the noise, then Claude scores each lead on ICP fit, intent, and deal potential — gating which leads are worth pursuing. Only qualified leads enter a tiered enrichment layer: deterministic data providers fetch email, phone, and firmographics first, and an agentic research loop (search → fetch → extract) fills the gaps, with every field verified and confidence-scored. Personalized outreach is then generated from the enriched data and routed through a threshold gate — auto-send for high-confidence leads, an analyst review queue for the rest. The core framework is source-, scoring-, and channel-agnostic: a new prospecting source or outreach channel is a new class against a base interface, not a rewrite.

Pluggable
Connector + Action Framework
New source or outreach channel = a new class, not a rewrite
Tiered
Contact Enrichment
Deterministic providers first; agentic web research only for the gaps
Threshold-gated
Autonomy
Auto-send above the bar, analyst review below — set by one number
02 · 08
Technical Design · Lead Generation Engine
System Architecture
Agentic Prospecting & Enrichment
Sources
Site & Directory Scrapers
company + industry directories
Search / SERP Discovery
ICP-criteria queries
Professional Profiles
decision-maker sources
Contact List Import
CSV · CRM exports
Ingestion
FastAPI
ingestion endpoints
Per-source parsers
normalize to lead schema
Dedup
identity resolution
Discard rules
pre-filter before LLM
Scoring & Qualification
Claude scoring
fit · intent · value
weighted score
dimensions combined
threshold gate
qualify vs drop
ICP Fit Intent / Timing Deal Potential
Enrichment & Research
Tier 1: data providers
email · phone · firmographics
Tier 2: agentic research
search → fetch → extract
Verify + confidence
MX check · field scoring
Output
Outreach generation
grounded in enriched data
Send threshold gate
auto-send vs review
Action channels
email · CRM write · sequence
Slack alerts
high-fit flagging
Data
PostgreSQL
leads · contacts
ICP / Profiles
targeting config
Enrichment cache
dedup by identity
Sources config
per-connector settings
Technical Approach

Pluggable connectors discover prospects from directories, search, professional profiles, and imported lists, normalizing them into a single lead schema. Each lead is pre-filtered, then scored by Claude on fit, intent, and deal potential. Only leads that clear the threshold are enriched — a tiered research layer finds and verifies contact details — before tailored outreach is generated and routed to auto-send or human review.

Key Decisions
Pluggable connector + action pattern — a new prospecting source or outreach channel is a new class against a base interface, not a rewrite.
Qualify before you enrich — scoring runs on cheaply-scraped data; the expensive enrichment research only touches leads worth pursuing.
Tiered enrichment — deterministic data providers first, agentic web research only for the gaps — controlling cost per lead.
03 · 08
Technical Design · Lead Generation Engine
Discover → Qualify → Enrich → Engage
Tiered Enrichment · Threshold Gate
1
Inbound
Pluggable Connectors
Scrapers, SERP discovery, professional-profile sources, and list imports surface candidate companies and contacts on a schedule
multi-source
2
Pre-filter
Discard Rules
Deterministic rules drop out-of-ICP or low-signal leads before any LLM call — cost control
rules
3
Qualification
Claude · Fit / Intent / Value
Scores ICP fit, intent/timing, and deal potential from scraped data · weighted into an overall score · gated by a threshold
3 dimensions
Score dimensions
ICP Fit Intent / Timing Deal Potential
4
Enrichment
Tiered Research Layer
Runs only on leads above the threshold. Tier 1 data providers fetch email, phone, and firmographics; Tier 2 an agentic loop (search → fetch → extract) fills the gaps; every field is verified and confidence-scored
Tier 1 + agentic
5
Generation
Personalized Outreach
ICP positioning plus enriched, verified contact data injected into the prompt · Claude drafts outreach grounded in real context, not templates
context-injected
6
Human in the Loop
Send Threshold
High-confidence leads auto-send; the rest route to an analyst review queue — the human only reviews pre-qualified, enriched leads
auto vs review
7
Output
Send + Slack
Email send, CRM write, or sequence enrollment · Slack notification with the score and enrichment summary · cost logged per run
email · CRM · Slack
Why Qualify-Then-Enrich

Enrichment is the expensive step — data-provider calls plus an agentic research loop. Scoring runs first on cheaply-scraped data, so research budget is spent only on leads that already clear the bar. Reachability isn't a scoring input; it's an output of enrichment — you learn whether a lead is contactable precisely because it was worth contacting.

Key Decisions
Discard before scoring, score before enriching — two cheap gates protect the one expensive stage, so cost scales with qualified leads, not raw volume.
Tiered enrichment — deterministic providers answer first; the agentic loop only chases what's missing.
Auto-send is opt-in per threshold — the same engine runs fully autonomous or analyst-in-the-loop by moving one number.
04 · 08
Discovered prospects table — leads with source, ICP score, status
01 / 04 Agentic Lead Generation Engine · Deliverable
Prospect
Discovery Feed

The top of the funnel — every prospect surfaced by the connectors, normalized, deduplicated, and pre-scored before a human sees it.

What this screen does
Daily inflow at a glance
Discovered, qualified, enriching, and ready-to-send counts roll up across all connectors.
Filter by source
Slice the feed by Site scrapers, SERP discovery, Professional profiles, or CSV import to debug or focus.
ICP score per lead
Every prospect carries a 0–100 fit score from the Claude qualifier; bars and colors surface the tier instantly.
Status pipeline
Qualified, Enriching, In Outreach, or Discarded — the lead's state in the workflow is always visible.
Python · FastAPI · Anthropic Claude · APScheduler · PostgreSQL · Slack Illustrative UI · representative data
05 · 08
Lead scorecard — ICP fit, intent/timing, and deal potential breakdown
02 / 04 Agentic Lead Generation Engine · Deliverable
Lead Scorecard

The full qualification rationale for one lead — what scored, why, and what the agent decided to do next.

What this screen does
Three scoring dimensions
ICP Fit, Intent / Timing, and Deal Potential — each scored 0–100 from the prospect's scraped data.
Signal-level transparency
Every dimension shows the actual signals behind the score (industry match, hiring activity, funding round, tech stack).
Automated decision
When the weighted score clears the threshold, the lead auto-advances into enrichment; otherwise it routes to review.
Decision trail
Discovery → pre-filter → score → threshold → enrichment, each step time-stamped for audit.
Python · FastAPI · Anthropic Claude · APScheduler · PostgreSQL · Slack Illustrative UI · representative data
06 · 08
Enriched contact record — verified channels, firmographics, trigger events, field confidence
03 / 04 Agentic Lead Generation Engine · Deliverable
Enriched
Contact Record

What the agentic research layer found — verified contact channels, firmographics, and the trigger events that make this lead worth pursuing now.

What this screen does
Verified contact channels
Email (SMTP / MX / catch-all checked), direct phone, and LinkedIn — every channel reachability-tested before write.
Firmographics
Industry, headcount, HQ, funding stage, founded year, and tech stack — pulled by the tiered enrichment layer.
Trigger events
Hiring spikes, funding rounds, product launches — the "why now" signals the outreach generator references.
Per-field confidence
Every field carries a 0–100 confidence; low-confidence fields get a re-run pass before the lead enters outreach.
Python · FastAPI · Anthropic Claude · APScheduler · PostgreSQL · Slack Illustrative UI · representative data
07 · 08
Outreach queue — drafted personalized outreach with HITL approval
04 / 04 Agentic Lead Generation Engine · Deliverable
Outreach
& Review Queue

Personalized outreach drafted from the enriched record — high-confidence sends auto-route, the rest queue for a human's final word.

What this screen does
Three queues
Auto-send, Needs review, and Sent — every draft lands in one of three lanes based on confidence.
Grounded in real data
Each draft references the lead's actual hiring activity, funding event, or trigger — no template-cold-email feel.
One-click decision
Approve & send, edit, or reject from the same panel; the analyst's attention stays on the message, not the navigation.
Personalization sources, visible
Every draft shows which enriched fields and trigger events the agent used — the reasoning is auditable.
Python · FastAPI · Anthropic Claude · APScheduler · PostgreSQL · Slack Illustrative UI · representative data
08 · 08