Conversion Engine
An automated B2B outreach system that enriches prospects with real-time signals, classifies them against an ICP framework, and uses a LangGraph agent to handle replies, write CRM records, and book discovery calls.
Overview
An automated B2B outreach system that enriches prospects with real-time signals, classifies them against an ICP framework, and uses a LangGraph agent to handle replies, write CRM records, and book discovery calls.
Problem
B2B outreach at scale requires enriching hundreds of prospects with real-time signals, personalizing messaging based on ICP fit, and managing multi-channel conversations — all while maintaining CRM hygiene. Doing this manually doesn't scale; doing it naively with automation risks spamming unqualified leads.
Dataset
Prospect company data enriched from four parallel sources: Crunchbase firmographics (local CSV), job postings scraped via Playwright, layoffs.fyi restructuring signals, and leadership change detection. All signals are merged into a validated Pydantic schema with per-signal confidence scores.
Architecture
A LangGraph ConversationAgent with 9 specialized nodes: signal enrichment, ICP classification (S1–S4 segments), command detection (STOP/HELP/UNSUB), LLM response generation via OpenRouter, HubSpot tool execution, kill-switch routing, email/SMS dispatch, and CRM persistence. A kill switch routes all outbound to a staff sink until explicitly enabled, preventing accidental live sends during development.
Training
No model training. The ICP classifier uses deterministic rule-based segment assignment. The LLM (OpenRouter) handles reply generation with 9 HubSpot tool schemas. Langfuse provides full observability with latency recording and cost invoicing per interaction.
Results
The system handles the full outreach lifecycle autonomously — from prospect enrichment to reply handling to calendar booking. The FSM-enforced channel hierarchy ensures SMS is only used for warm leads. A 425-test suite (pytest + Hypothesis property-based tests) validates correctness across edge cases.