Automating cold outreach with a self-correcting AI agent
An AI agent ran my whole cold-outreach pipeline on three tools I already had, for nothing. Research, write, send, verify, recover. The sending is the boring part. The part worth writing about is what happened when one address bounced: the agent noticed, found the real address, and resent.
The stack
| Piece | Job | Cost |
|---|---|---|
| Claude | Operator: researches, writes, sends, checks, recovers | Existing subscription |
| Resend | Sends and receives mail via one API call | Free tier |
| Model Context Protocol | How Claude reaches those tools | Open standard |
| My own domain | Sender identity, SPF and DKIM | Already owned |
Every solo consultant hears the same advice: do cold outreach. It is good advice. The trouble is that outreach done well is a grind. Find the businesses, research each one, write something that does not read like a template, dig up the right email, send, notice the bounces, find the correct address, try again. Ten prospects eats an afternoon. Do it weekly and you will quietly stop, which is what happens to most people’s outreach.
So I stopped doing it and let an AI agent do it instead. Not a $99/month “AI SDR”, just three things I already had: Claude as the operator, Resend as the mail engine, and my own domain as the sender. Total added cost: zero.
The shift: an agent with hands, not a text box
The trick is not asking a chatbot to “write me a cold email.” It is giving the model hands. Through the Model Context Protocol, Claude can call real tools inside one conversation: search the web, read my local files, send mail through Resend, check whether it landed. Once it can act, the whole pipeline collapses into a single flow and I never touch the keyboard between steps:
- Find and qualify businesses worth contacting, to a playbook I wrote once.
- Research each one and write the findings out as Markdown, one file per company.
- Draft an email from those notes, one natural opening line and nothing more.
- Send through Resend, one API call per prospect.
- Verify delivery status on every message.
- Recover by re-researching and resending anything that bounced.
Steps 1 through 5 are a workflow. Step 6 is what makes it an agent. Anthropic puts it this way: a workflow follows predefined code paths, an agent directs its own.
The prospecting is Claude’s job too. I taught it the playbook once, covering how I like to find businesses worth contacting, qualify them and note the right decision-maker, then packaged that into a reusable skill it can follow. The research is now the agent working to my standard rather than me combing through websites by hand. It writes the results out as plain Markdown, one file per company: what they do, who to contact, their likely email. Those are the same files it reads back when it is time to write.
Resend makes the sending trivial. Email becomes one API call with from, to, subject and
text. No SMTP, no Mailchimp dashboard. It receives as well: point your domain’s MX records at
it and replies land in an inbox the agent can read. The loop closes. It also ships an official
MCP server, so all of that shows up to Claude as callable tools.
The domain is the quiet hero. Sending from my own address instead of a @gmail.com does two
things at once. With SPF and DKIM verified, mailbox providers trust the mail, and nearly every
recipient in my batch accepted it on the first try. That part is now mandatory:
Google’s sender guidelines require SPF or DKIM of
every sender and a spam-complaint rate under 0.3%. Cross 5,000 messages a day and you also owe
them DMARC and one-click unsubscribe. The second thing is credibility. The sender, the signature
and the portfolio link all match, so to the person reading it this is obviously one real human.
Because it is.
Writing from a principle, not a template
This is where most outreach automation goes wrong. It is tempting to have the AI stuff every research finding into the email to prove it did its homework. That reads as creepy. So I gave Claude one rule instead of a template:
Keep it a simple, capability-led pitch: “I’m a data scientist; if you’re drowning in data, I can help.” Use the research for one natural opening line only. Never show off what you dug up.
For a coffee roaster that opening became “You run a roastery with an espresso bar and a training centre, which means you generate a lot of sales and customer data across those channels.” One personal line, then the same honest, low-pressure ask. Every email came out different, none of them template-shaped, all in a single pass.
The part that impressed me
The agent sent the batch in seconds, one call per prospect. Then it did the step humans always skip: it checked delivery status on every message. Almost all came back delivered. One came back bounced, an address I had guessed.
Then, without me saying anything, it fixed it. It recognized the failed address was a guess, searched the web for the company’s real contact, found the published address on their site, resent, and re-checked: delivered. No intervention. It noticed its own failure, diagnosed it, did fresh research and recovered.
That is the difference between a script and an agent. A script runs and reports what happened. An agent notices what went wrong and does something about it.
What this actually means
Strip away the specifics and the shape is this: a language model ran a real business process, research to delivery to error-recovery, using cheap commodity tools, with a human only setting the strategy.
The cost is close to nothing. The bottleneck moved from doing outreach to deciding who to reach and what to say, which is exactly the part I should keep. Quality went up too, because the tedious steps humans skip out of boredom are the ones an agent does every single time.
A few honest caveats, because this is easy enough to abuse:
- Send to real, relevant people. This is a precision tool, not a spam cannon. Pointing it at 10,000 scraped strangers torches your domain and makes you the thing everyone hates.
- Verify addresses when you can. A guessed address bounces, and every bounce feeds your sender reputation.
- Know the rules you are sending under. In the US that is CAN-SPAM. If any recipient is in the EU, GDPR governs whether you may contact them at all.
- Stay in the loop on strategy. The agent wrote and sent, but I chose the pitch, the list and the tone. That judgment is the actual work.
I did not build a product or write a line of application code. I connected three things I already had and described the outcome I wanted. The agent did the rest. The interesting future of AI at work is an agent that acts, one that can take “reach out to these prospects” all the way to “delivered, and here’s the one I had to fix.”
That future is already here, it costs nothing, and it sits inside tools you probably already use.
This is the kind of thing I do: build AI tools and agents that turn messy business data into decisions and automate the work that eats your team’s time. If you’re drowning in data and want to get more out of it, get in touch. I’m always happy to talk shop.