speed-to-lead-agent
Integrates with Greenhouse ATS for recruiting-pipeline mode
Allows pushing leads to HubSpot CRM
Sends new-lead alerts to Slack via webhooks
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@speed-to-lead-agentqualify this lead: name=John Doe, email=john@example.com, message=need pricing"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
⚡ speed-to-lead-agent
Qualify and respond to every inbound lead in seconds — with an AI agent you self-host.
A multi-agent pipeline (LangGraph) that takes a raw inbound lead, scores its fit, drafts a personalized reply, and routes it to your CRM/Slack. Bring your own keys; runs locally with none.
Why this exists
Speed is the highest-leverage variable in inbound sales. In the canonical study ("The Short Life of Online Sales Leads," Harvard Business Review, 2011 — Oldroyd, McElheran & Elkington), firms that attempted to contact a lead within an hour were ~7× more likely to have a meaningful conversation with a decision-maker than those who waited just an hour longer — and ~60× more than those who waited 24+ hours. Yet most teams reply in hours or days because a human has to read, qualify, and write every first response.
This agent collapses that delay to seconds: it qualifies the lead, drafts a tailored reply, and hands your team a ready-to-send message (or auto-sends the high-confidence ones) — so no good lead goes cold while someone is in a meeting.
Self-hosted and open-source. A free, ownable alternative to per-seat "instant lead response" SaaS — your lead data never leaves your infrastructure.
Related MCP server: Artefact Revenue Intelligence MCP Server
What it does
flowchart LR
W([Webhook<br/>form · Cal · Typeform]) -->|202, instant| Q[[Redis queue]]
Q --> R(research<br/>enrich company)
R --> QL(qualify<br/>fine-tuned classifier)
QL -->|spam/non-buyer| D[discard + log]
QL -->|real lead| DR(draft<br/>personalized reply)
DR --> RT(route<br/>CRM · Slack · send)
RT --> M[(funnel metrics<br/>attribution · latency)]Instant intake — the webhook returns
202immediately and a worker runs the slow part, so capture never blocks on an LLM call.Explainable qualification — every lead gets a tier (
hot/warm/cold/spam), an ICP-fit score, a buyer-intent label, and human-readablereasons. A confidence gate decides auto-send vs. human review.Personalized drafts — intent-aware first-touch replies, provider-agnostic (Gemini/Groq/OpenAI/… via
litellm) with a keyless template fallback.Real GTM integrations — Twenty / HubSpot CRM, Slack alerts, email — behind your own keys.
Funnel analytics — source attribution, qualification rate, and speed-to-lead p50/p95, exposed as JSON and Prometheus.
MCP server — the same capabilities exposed to Claude/Cursor as tools.
Quickstart (zero keys, 2 minutes)
git clone https://github.com/OmateLabs/speed-to-lead-agent
cd speed-to-lead-agent
make install # uv sync
make demo # runs sample leads through the full pipeline — no signupsYou'll see each sample lead qualified, scored, and routed, plus a funnel summary. Then run the API:
make serve # http://127.0.0.1:8000 (docs at /docs)
curl -s localhost:8000/leads/sync -H 'content-type: application/json' -d '{
"email": "maria@northwind-logistics.com",
"name": "Maria Chen",
"message": "Need pricing for a 40-person team — can we book a demo?",
"source": "google_ads"
}' | python -m json.toolConfiguration (bring your own keys)
Copy .env.example to .env. Every key is optional — a missing one disables that feature, it
never breaks the app. With none set, you're in DEMO_MODE (local stub model + console adapters).
Variable | Enables | Required? | Get it |
| LLM-written replies (else templated) | optional | |
| Push leads to Twenty CRM | optional | Twenty → Settings → API |
| Push leads to HubSpot | optional | HubSpot private app |
| New-lead Slack alerts | optional | |
| Verify inbound webhook signatures | recommended | self-generated |
| ATS / recruiting-pipeline mode | optional | Greenhouse Harvest |
The classifier
Qualification runs behind a single Qualifier interface with two implementations:
RuleQualifier— a transparent, deterministic baseline (the keyless default). Strong, auditable, zero dependencies.LoRA-fine-tuned intent classifier — DistilBERT fine-tuned with PEFT/LoRA (PyTorch), 744K trainable params (1.1% of the model), served as its own inference path.
make trainproduces the adapter (~30s on a laptop); when present it loads automatically, otherwise the rule baseline is used.
Result — on a hand-written, held-out realistic set (messages unseen in training):
Strategy | Accuracy | Macro-F1 | $/1k leads |
Rule baseline (keyword) | 0.500 | 0.500 | $0 |
LoRA classifier | 0.938 | 0.933 | ~$0 (local) |
Nearly 2× the intent accuracy of keyword rules on phrasing it never saw — for ~$0, locally, in
milliseconds. That's the case for fine-tuning over a per-lead LLM call. Full methodology in
docs/benchmarks.md and MODEL_CARD.md.
Tech
Python 3.12 · FastAPI · LangGraph multi-agent · pydantic · litellm · Hugging Face + PEFT/LoRA
· FAISS · Redis · MCP · Docker / Helm · GitHub Actions · Langfuse + Prometheus/Grafana.
Project layout
src/speed_to_lead/
├── api/ FastAPI app, webhook security
├── agents/ LangGraph pipeline (research → qualify → draft → route)
├── services/ qualify · enrich · draft (swappable behind protocols)
├── integrations/ CRM (Twenty/HubSpot) · Slack · email
├── analytics/ attribution + speed-to-lead funnel metrics
├── ml/ LoRA fine-tune + eval (the classifier)
├── worker/ async queue (in-memory → Redis)
└── mcp_server/ Model Context Protocol serverDeploy
Single host:
docker compose up— api + worker + Redis + Postgres.Kubernetes:
helm install stl infra/helm/(orkubectl apply -f infra/k8s/) — liveness/readiness probes, resource limits, non-root, optional HPA, and bring-your-own-key via a referencedSecret.Serverless: it's a standard ASGI app — deploys to Hugging Face Spaces / Cloud Run / Render unchanged.
Roadmap
Multi-agent pipeline + keyless demo + funnel analytics
LoRA-fine-tuned classifier + eval scorecard
MCP server · FAISS ICP similarity · ATS (Greenhouse) connector
Langfuse tracing + Prometheus/Grafana dashboards (config-as-code)
Deploy (HF Spaces / Cloud Run) + demo GIF
License
MIT © 2026 Omate Labs
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
AI agent platform: manage leads, conversations, bots, calendar and CRM via MCP.
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server that enables AI agents to discover and qualify B2B leads from Leadbay's knowledge base, with tools for lead research, enrichment, and outreach logging.MIT
- AlicenseAqualityDmaintenanceAn MCP server that provides AI agents with ICP Triangulation Framework™ for scoring prospects across firmographics, behaviors, and growth signals, plus RFM analysis and pipeline health scoring, with optional HubSpot integration.3Business Source 1.1
- AlicenseNot gradedqualityAmaintenanceAn MCP server that enables agent-driven LinkedIn outreach across multiple accounts, with a safety gate for human approval and LLM-powered personalization.1Apache 2.0
- FlicenseAqualityBmaintenanceAI-powered B2B outbound sales automation pipeline exposed as an MCP server that transforms natural language goals into qualified sales intelligence and personalized emails.9-