Every guide to building an AI product tells you to add a chat box. Almost none of them tell you to add email. That's backwards. The chat box is where your agent works; email is where it reaches a human — to ask a question, to get an approval, to say "I did the thing." For a solo founder, that second channel is the one that decides whether the product survives contact with real users.
And email has a property nothing else does: your user already checks it. No login, no Slack install, no push permission. It's also a free, durable, searchable audit log of every decision your agent ever asked a person to make. For a team of one, that combination is unbeatable.
The problem is that legacy email providers make you feel like you're operating a 2011 marketing platform. Resend is the antidote.
What Resend is, in one screen#
Resend is a developer-first transactional email API. It's a Y Combinator company founded by Zeno Rocha, who also created React Email — the open-source library for writing emails as React components instead of hand-cursed HTML tables. The playbook was intentional: ship the open-source tool, become the people who understand email, then build the API.
What you get:
- A clean API/SDK. One call to send. Emails authored as React components (or plain HTML).
- Transactional + batch. Single sends for one-off decisions; a batch endpoint for digests (up to 100 emails per call).
- Delivery webhooks and idempotency keys — the two features that make it safe to put behind an agent.
Pricing to start: the free tier is 3,000 emails/month (100/day) on one custom domain — plenty to validate. Paid Pro starts around $20/month. One caveat worth flagging: Resend recently restructured its higher tiers, with the 200k-emails plan reportedly moving from $80 to $160. Price your real volume before you wire it into a cost model.
The pattern: email as your agent's decision queue#
We've argued before that the hard part of autonomous agents isn't autonomy, it's review throughput. Email is the cheapest possible review queue. Model every message your agent sends as one of three verbs:
| Use email as your agent's… | What it sends | Reliability requirement |
|---|---|---|
| Notify | "Archived 40 tickets overnight" | Fire-and-forget; still dedupe by run id |
| Question | "Which of these two dates should I confirm?" | Reply-to parsing; one send per question |
| Review | "Approve refund of $540 to acct_9f2?" | Idempotency key + audit log |
The engineering leverage is in routing: only consequential actions become a Review email that hits a human. Everything routine stays a silent Notify or never gets sent at all.
The one line that keeps it from embarrassing you#
Agents retry. A tool call times out, the framework re-runs it, and now your user has two identical "approve this refund" emails and no idea which is real. The fix is an idempotency key — a stable string tied to the task:
import { Resend } from 'resend';
const resend = new Resend(process.env.RESEND_API_KEY);
await resend.emails.send(
{
from: 'Agent <alerts@yourdomain.com>',
to: 'founder@you.com',
replyTo: `task+${task.id}@yourdomain.com`,
subject: `Approve: refund $540 to ${task.account}`,
html: renderApprovalEmail(task),
},
{ idempotencyKey: `approval-${task.id}` }, // Resend dedupes on this for 24h
);
Because the key is derived from task.id, a retried tool call resolves to the same email — Resend recognizes it and won't send twice. The retention window is 24 hours, which comfortably covers any sane retry loop. The replyTo with an embedded task id is the other half: the human replies in their normal inbox, and your webhook parses task+<id> to route the answer straight back to the paused agent.
Idempotency isn't a nice-to-have when a language model is holding the send button. It's the difference between a trustworthy agent and one your users mute in week one.
Where to stop#
Email is not your marketing channel and Resend isn't trying to be Mailchimp — the daily and tier limits make that clear. Keep it to what it's best at: the operational mail your product depends on. The agent's questions. The approval requests. The "here's what happened while you slept" digest. Ship those three well and you've built the human-in-the-loop surface most AI products are still missing — with an afternoon of work and a free tier.
The chat box is where the demo lives. The inbox is where the product does.



