Series · 7 parts Published May 5, 2026

Lead intake bot

A serverless intake bot that catches every new lead from your website forms, Meta Lead Ads, Google Ads, and the shared sales inbox, qualifies each one against your ICP, instantly routes the hot ones to the right person with full context attached, and quietly drops the cold ones into a nurture queue. Seven posts on the same system — one diagram at a time — with an engineering reference at the end.

  1. 01

    A lead intake bot on AWS for a few dollars a month

    The whole system on one page — a lead intake, a qualifier, and a dispatch-and-routing piece, plus the four moves they share for every lead.

  2. 02

    How a lead reaches the intake bot

    Three lanes at the door: the website-form fast path, the ad-platform push from Meta and Google Ads, and the shared sales inbox via SES. Dedupe and screen happen before any AI runs.

  3. 03

    How the bot reads a lead

    Three small extractors run in parallel — intent, urgency, and fit signals — plus a free passive enrichment from the email domain. Each with a confidence score the move-picker reads before it decides anything.

  4. 04

    How the bot scores and routes a lead

    Four moves, one pick per lead: hot route, warm follow-up, nurture, reject. Two override gates fire first; the linear scorer reads the ICP file; round-robin assignment respects on-call hours.

  5. 05

    How a reply stays on policy

    Three Drive docs ground the composer; four guardrails sit between the model and the send button — citation, no fabricated specifics, no commit on availability, no PII in subject lines.

  6. 06

    What the lead intake bot costs

    A coffee a month at SMB lead volume. Pennies per lead, dominated by Bedrock tokens for the extractors and the composer.

  7. 07

    Engineering reference: the lead intake bot architecture

    Same system, drawn purely for engineers. Service names, resource identifiers, region, Bedrock model IDs, Knowledge Base wiring, Meta Lead Ads and Google Ads API specifics, SES inbound, and CRM destinations.

What is a lead intake bot?
A small serverless system that catches every new lead from your website forms, ad platforms, and shared sales inbox; scores it against your ideal-customer profile; routes the hot ones to a human within seconds with a draft reply already written; and parks the cold ones in a nurture queue.
How much does it cost to run?
About $3/month at typical small-business lead volume (around 100 leads/month). The fixed cost is essentially zero — quiet weeks bill nothing. The variable cost is pennies per lead, dominated by Bedrock tokens for the extractors and the composer. At a thousand leads a month it lands under $10 total.
Which AWS services does it use?
Lambda (with Function URLs for webhooks), SQS, DynamoDB on-demand, S3, EventBridge, SNS, SES inbound, Secrets Manager, CloudWatch Logs with seven-day retention, AWS Budgets, and Bedrock (Claude Haiku 4.5 via Global cross-Region inference, plus Titan Text Embeddings v2 with a Bedrock Knowledge Base backed by Amazon S3 Vectors). No API Gateway, no NAT Gateway, no always-on compute.
Does it work with HubSpot, Salesforce, and Pipedrive?
Yes. A single CRM-adapter module switches on the configured CRM. Adapters exist for HubSpot, Salesforce, and Pipedrive, with a Drive Sheet adapter as a fallback for the smallest setups. Each adapter handles upsert-contact, set-owner, add-tag, and archive against the CRM’s own API.
How does the bot avoid making things up?
Three Drive docs ground every reply (voice, pricing-and-promos, ICP-and-disqualifiers) and four guardrails sit between the model and the send button: citation required (every factual claim must reference a retrieved passage), no fabricated specifics (a regex sweep checks prices and timeframes against the cited passages), no commit on availability (block-listed phrases that promise specific times), and no PII in subject lines.
How fast does a hot lead reach a rep?
Within seconds end-to-end on push lanes (website form, Meta Lead Ads, Google Ads lead form asset webhook). The cloud reads the lead, runs the three extractors and the move-picker, composes a draft reply, and pings the on-call rep in Slack with the original message, the score, the draft, and a one-tap claim button. Polled lanes (older Google Ads conversion-import accounts) run hourly.
Which lead sources are supported?
Website forms (HTTPS POST to a Lambda Function URL with shared secret + captcha), Meta Lead Ads via the Page leadgen webhook (Graph API v24/v25), Google Ads via the lead form asset webhook (formerly the Lead Form Extension before Google’s Extensions-to-Assets rename) or hourly conversion-import polling, and the shared sales inbox via SES inbound rules.
All posts