One pipeline, four stages, no seams between them.
Most cold email tools are a UI wrapped around someone else's list and someone else's sending API. outreachstack owns the data supply, the domain infrastructure, and the send engine, so each stage feeds the next instead of stopping at an integration boundary.
The domain dataset
343M domains across ~1,570 zones, refreshed with ~300k new registrations and ~250k drops daily. An ICP is a structured, versioned filter over this dataset — TLD, country, ASN, tech stack, registration-age window, email provider, MX/TXT signals — never a freeform prompt, always something a human can inspect and edit.
Self-provisioning sending infrastructure
Domain purchase, MX/SPF/DKIM/DMARC records, and mailbox connection are API-driven, backed by Cloudflare's DNS API — never a runbook. A warmup ramp runs on a schedule with hysteresis so volume only ever increases along the approved curve.
A scheduler that treats correctness as non-negotiable
Send scheduling lives in Postgres, not a queue — rows claimed with SELECT ... FOR UPDATE SKIP LOCKED under per-mailbox rate limits and business-hours windows in the lead's own timezone. A reply halts every pending step for that lead across every campaign before the next send fires, enforced by a database constraint and a claim-time recheck, not just an event handler.
Reputation as a monitored system, not an afterthought
Bounce rate, complaint rate, blocklist status, seed-inbox placement, and DMARC aggregate reports feed a control loop every 15 minutes. It throttles, rotates to a healthier mailbox, or pauses a domain — every action logged with the input snapshot that triggered it.
An audience is a filter, not a list you bought.
Every dimension below is queryable against the live domain dataset, and every campaign's audience traces back to the exact version of the criteria that produced it — which is what lets the refinement loop attribute a reply-rate change to a specific slice instead of guessing.
- TLD
- Country
- ASN
- Tech stack
- Registration age
- Email provider (MX/TXT)
- Headcount
- Industry
The audience and the message both learn from replies.
A bandit optimizer tunes the message, rewarded on positive reply rate. A separate refinement agent tunes the audience — decomposing outcomes across every ICP dimension, proposing narrowing where a slice underperforms with evidence attached, and proposing lookalike expansion where positive replies share an attribute the ICP doesn't yet filter on. It proposes, it never mutates a live ICP, and a proposal that would shrink the reachable universe below your committed send volume is blocked outright.