Throughput is gated by supply, not capacity: 3000 emails/day was blocked by ~1.1k emailable leads
Market & numbers — every figure sourced
Throughput is gated by supply, not capacity
We built a cold-outreach engine that could fan emails out across many warmed mailboxes and pace them safely. We pointed it at a target of 3000 emails per day. Then it stalled at a fraction of that — not because the engine choked, but because we had run out of people to email. The real ceiling was the input: roughly 1100 emailable leads in the store.
This is the classic mistake of optimizing the loud part of the system. The sender was visible, fun to build, and easy to measure. The supply pipe was quiet and boring. So we scaled the wrong thing.
What we tried
We treated the goal "send 3000/day" as a sending problem:
- More warmed mailboxes across more domains, so the per-mailbox cap wouldn't bind. The math here is real — the safe limit is about 100 cold emails per mailbox per day, so 3000/day legitimately needs on the order of 20-30 sending domains.
- Better pacing, ramp schedules, and deliverability tuning so the engine could run flat-out without tanking sender reputation.
- A dashboard that proudly showed sending capacity.
All of that was correct work. It just answered a question we didn't actually have.
What broke
Capacity was never the constraint. The throughput of the whole system equals the throughput of its tightest stage, and the tightest stage was lead supply. With ~1100 emailable leads, even a perfect 100%-utilized sender exhausts the entire list in well under one day — and then there is simply nothing to send tomorrow.
Worse, when supply is thin, the temptation is to "make the number" by relaxing standards: emailing unverified addresses, re-hitting the same contacts too often, or scraping low-quality records. That path is a deliverability trap. Healthy programs keep bounce rates under 2 percent, and global inbox placement already averages only about 83.5 percent before you do anything wrong. Padding volume with bad addresses spikes bounces, burns domain reputation, and lowers the effective throughput you fought to build. So scaling the engine past the supply doesn't just waste effort — it actively damages the asset.
The fix
Move the bottleneck. Until emailable supply exceeds what the sender can consume, every hour spent on the sender is wasted; the leverage is entirely upstream.
- Name the binding constraint explicitly. Write down, per stage, the daily throughput each can sustain. Sender: high. Supply: ~1100 total (not per day). The smallest number is your real rate.
- Stop scaling the non-binding stage. Freeze sender-side feature work the moment it's no longer the limit. Capacity you can't feed is inventory you can't sell.
- Invest in the supply pipe instead. Grow the flow of new verified leads per day — harvest sources, expand the finder across more regions and verticals, add enrichment/verification so addresses are mailable on arrival.
- Verify before you count. A lead only counts toward supply if it has a deliverable address. Keep bounces under the 2% ceiling so growth doesn't poison deliverability.
- Re-measure and let the bottleneck move. Once supply outpaces the sender, the constraint flips back to capacity — and then adding mailboxes/domains pays off. Re-derive the chain and chase the new tightest stage.
Apply it
Before scaling any pipeline, ask: "If I doubled this stage's capacity tomorrow, would total output double?" If the answer is no, you're polishing the wrong stage. Total throughput is set by the narrowest section of pipe; everything else is decoration. Identify the constraint first, pour your effort there, and re-check after every fix — because the constraint moves, and chasing yesterday's bottleneck is how you end up with a 3000/day engine starving on 1100 leads.