Prospecting Copilot
Daily lead-gen + AI cadence drafting for a single SDR.

Overview
A self-initiated single-tenant B2B prospecting assistant. Generates qualified US prospects daily, enriches them with C-suite contacts and recent news, and AI-drafts personalized 5-step email cadences. Operator copies drafts and sends from their own inbox. Designed for an insurance brokerage I'd been talking to about their SDR workflow.
Highlights
- On-demand prospect generation via Apollo.io (manual trigger, no cron)
- Bulk CSV import with duplicate detection
- Claude Sonnet 4.6 drafting 5-step cadences with tone fidelity
- News timeline per prospect (Tavily) — every email references something recent
- Pipeline tracking with send-by reminders + meeting notes
- Auto re-engagement cadences at Day +90
The problem
The pattern I was solving for: an SDR builds a prospect list in Excel, hand-checks news in 12 tabs, and ChatGPT-s each email separately. Each prospect takes 30+ minutes; voice consistency across emails is a coin flip; nothing ties news to outreach. The work is high-leverage, but the execution destroys the week.
Approach
- 01Locked the architecture to a single user — auth surface stays minimal, sign-up is disabled at the provider level.
- 02Built a tone system: writing-sample inputs train the prompt; cadence templates enforce per-step rules (peer-list parentheticals, lowercase subjects, no CTA on Step 3).
- 03Wired Apollo for prospect + contact data, Tavily for news, Claude for drafting. Every external call writes to a usage_events audit table so cost and credit burn are visible.
- 04Append-only audit tables (discovery_runs, usage_events, error_events) — no row is ever updated, so the timeline is provable.
- 05All workflows user-triggered. No cron, no background queue. Cost predictability mattered more than automation theater.
Outcome
- Designed to compress a 30+ minute manual prospect-research cycle to a 10-minute review-and-send.
- Voice consistency designed in via writing-sample tuning and per-step cadence rules — output reads as one consistent author, not five different ChatGPT runs.
- Apollo + Anthropic spend visible in a single dashboard — usage-event audit log makes cost predictable from day one.
Security
- Per-IP and per-email sliding-window rate limiting on login (10 IP / 5 email failures over 15 min)
- Per-request CSP nonce middleware + HSTS + strict Permissions-Policy
- All inputs Zod-validated; all queries parameterized via Drizzle
- Failed-login + error events logged to dedicated audit tables
- Admin-only debug endpoints kept off the navigation
The full picture

Stack