IL C
← Back to work

CASE STUDY

Broker Outreach Agent

An approval-gated outreach agent. It drafts personalised broker emails with Claude, queues every first email for a human to approve, schedules follow-ups, classifies replies, and writes every action to an audit log.

Claude · Supabase · AgentMail · Next.js 2026 Built
My role
Sole designer and builder of the agent.
System status
Built and verified end to end against real services. Runs in a safety mode with dry-run on and follow-up auto-send off.
Scope
Approval-gated broker outreach: draft, human-approve, send, schedule follow-ups, classify replies, and log every action.
Key constraint
No first-contact email sends without a human approving it.
Verifiably working
CSV import, Claude drafting, approval queue, AgentMail send, 7/14/30 day follow-ups, reply classification, weekly report, and audit log. Ten verification steps run against real Claude, Supabase and AgentMail; two bugs caught and fixed.
Mocked or unmeasured
No outreach volumes, reply rates or deliverability figures are claimed. Auto-send for follow-ups stays off until the operator turns it on.
View demo ↗

Overview

Broker outreach is repetitive, and the risk is sending the wrong thing at scale. This agent keeps a human in the loop on every first contact. It imports broker records from CSV, drafts a first-touch email with Claude, and holds it in an approval queue. Nothing goes out until a person approves it.

Approved messages send from a dedicated AgentMail inbox. The agent then schedules 7, 14, and 30 day follow-ups, polls for replies, classifies them, and escalates anything positive or unclear. It drafts a suggested reply for the human rather than sending one itself, and produces a weekly pipeline report.

What it does

Stack

Next.js 16 React 19 Vercel cron Supabase AgentMail Claude (drafting) Claude (classification)

Verified end to end

This was checked against the real services, not mocks: real Claude, real Supabase, and real AgentMail. Ten verification steps were run, from CSV import through to the weekly report. Two real bugs were caught and fixed in that pass: a silent upsert failure and an over-strict send guard.

Current safety mode keeps dry-run on and auto-send for follow-ups off, so every outbound action stays under human control until the operator chooses otherwise.

Next case studyCRM Enrichment Pipeline → Related writingHow I make AI agents reliable → Talk it throughDiscuss a similar problem → Want a scoped buildIL Signal Studio →
← Back to work