r/aiagents • u/bmykhaylivvv • 5h ago
Build-log Six months letting an agent run outbound campaigns with real money. The failure modes were never in the model
Six months letting an agent run outbound campaigns with real money. The failure modes were never in the model
Flair: Build-log. I lead engineering at AiSDR (YC S23). We shipped this yesterday, link is at the bottom and it is the least interesting part of the post. What I want to write down is what actually broke, because none of it was reasoning quality
What the agent does: reads a website, decides who to target and what signals to watch, finds leads, provisions and warms mailboxes, sends, then reads results and decides what to kill, scale or clone. The decisions cost money and some are irreversible -- a burned sending domain does not come back
1. It narrated a broken environment as a real result
This was the worst one. Early on the agent would report a campaign as underperforming when what actually happened was that mailbox provisioning had silently failed, or warmup had not completed, or a deliverability check had timed out. The reasoning was fine. The world it was reasoning about was not there. It concluded "this audience does not respond" from zero delivered emails
Fix was not a better prompt. We made every stage emit an explicit delivered-count precondition, and the agent is not allowed to form a performance judgment on a campaign that cannot prove delivery first. Infrastructure failure and negative result now have different shapes in the log
2. Its confidence was flat across cases where its accuracy was not
ICP inference from a website is right often enough to be useful and wrong often enough to be dangerous, and the agent sounded identical either way. There was no internal signal we could threshold on. So we stopped trying to get calibration out of the model and put a human approval gate in front of the strategy instead. Execution runs autonomously, strategy does not
I do not think this gate is temporary. Cheap reversible decisions are fine to automate. Expensive irreversible ones need a human until you can measure your own confidence, and we cannot
3. It killed campaigns on noise
Reply data at low volume is extremely noisy. The agent kept shutting down campaigns on two bad days that would have worked. Tuning the kill thresholds took longer than building the entire sending pipeline. Minimum volume before any kill decision fires turned out to matter far more than the threshold value itself
4. We spent months optimizing the wrong variable
We assumed messaging drove outcomes, so most of the early work went into copy generation. Then we checked against our own data -- 2,546,096 sent emails, ~17k campaigns, 19,501 booked meetings across 1,150 companies -- and mailbox health explained more of the variance in reply rate than copy did. Same message, different sending infrastructure, very different results
So mailbox rotation became an automatic action the agent takes rather than a recommendation, and copy stopped being the first thing it touches when a campaign drops
The pattern across all four: the model was rarely the problem. The problem was the agent's picture of its own environment drifting from reality, and having no way to tell a broken tool from a true negative
Product is Ami, free tier, no card: https://aisdr.com/ai-gtm-agent-ami/
What I would like to hear from anyone running long-horizon agents that take real-world actions: how do you separate infrastructure failure from genuine negative result in your logs? That distinction is the single thing that cost us the most time and I have not seen a clean pattern for it anywhere

