Verdict is an open-source Apollo alternative: a cold-outreach engine that verifies every mailbox before sending.
Verdict finds email addresses through public-web pattern inference (no contact database), verifies them over SMTP with catch-all and gateway detection, and refuses to ship anything that will bounce. Self-hosted under MIT or hosted. Built as a free, privacy-first alternative to Apollo.io, Hunter.io, Instantly.ai, Clay, Smartlead, and Lemlist for founders, growth teams, and lead-gen agencies who care about email deliverability.
Live Demo · Product Interface · Report an Issue
Apollo sells you 240 million contacts. Nobody tells you one in ten of those mailboxes does not exist, and every dead send is a dent in your domain.
Verdict was built after burning exactly that way: 284 cold emails to crypto funds, a 9% bounce rate, and a sender reputation that took weeks to recover. The entire architecture since has followed one rule:
Nothing ships without a verdict.
| Landing | Product Interface |
|---|---|
![]() |
![]() |
┌───────────┐ ┌───────────┐ ┌───────────┐
│ I. │ │ II. │ │ III. │
│ DISCOVER │ ───▶ │ VERIFY │ ───▶ │ SHIP │
└───────────┘ └───────────┘ └───────────┘
pattern inference SMTP probe, catch-all person-level cooldowns,
from public web, + gateway detection, suppression lists, follow-up
no contact database dead mailboxes stamped eligibility enforced
I. Discover — Pattern inference from the public web. No contact database, no credits, no scraped lists. Verdict reads what companies publish about themselves and infers the rest.
II. Verify — Every candidate gets an SMTP probe before anything ships. Catch-all domains flagged. Enterprise gateways detected. Dead mailboxes stamped and suppressed forever.
III. Ship — Only what passed the gate leaves your domain. Person-level cooldowns, suppression lists, and follow-up eligibility are enforced by the engine, not by your discipline.
| Verdict | Meaning | Ships? |
|---|---|---|
SEND |
Mailbox confirmed via RCPT TO handshake |
✅ yes |
RISKY |
Real mailbox behind an enterprise gateway (Mimecast, Proofpoint); may reject cold senders | |
CATCHALL |
Domain accepts every address; pattern evidence required, delivery unguaranteed | |
DEAD |
Server confirmed user-unknown (550 5.1.1) |
❌ never |
UNKNOWN |
Probe blocked; no evidence either way | ❌ route elsewhere |
| Verdict | Apollo.io | Hunter.io | Instantly.ai | |
|---|---|---|---|---|
| Bounce rate on shipped mail | <4% | ~9% | n/a (verify only) | ~12% |
| Verification timing | before send | n/a | separate product | after send |
| Contact database required | no | yes, credit-metered | credits | yes |
| Self-hosted | yes, MIT | no | limited | no |
| Price to verify 10K emails | free (self-host) | $49+/mo | $34+ per batch | included, unverified |
Bounce figures: published docs + community-reported medians, 2026.
One real campaign run entirely on this pipeline:
| Metric | Result |
|---|---|
| Decision-makers touched | 72 (crypto funds, miners, market makers, treasuries) |
| Dead mailboxes caught before send | 24 |
| Bounce rate on shipped mail | ~2% |
| Formats A/B tested | standard · real-number · Gen-Z curiosity hook |
| Follow-up waves | automated, person-level 12h cooldowns |
Full war story in docs/case-study.md.
Verdict is an open-source Apollo alternative with no contact database and no credit metering. Where Apollo sells access to 265M stored contacts, Verdict discovers emails from public-web evidence at send time, then verifies each one over SMTP before your domain ever sends. The result is sub-4% bounce on shipped mail instead of the ~9% typical of list-based sending.
Bounces happen when mail ships to mailboxes that do not exist. Reduce bounce rate by verifying every address over SMTP before sending, treating catch-all domains as unverifiable, and suppressing confirmed-dead mailboxes permanently. Verdict automates all three: its verification gate runs before any send, which is how it holds shipped-mail bounces under 4%.
Yes. Hunter.io charges per search and per verification. Verdict's discovery engine infers email patterns from public-web evidence for free (MIT licensed, self-hostable), and its SMTP verifier confirms each candidate at no marginal cost beyond your own probe traffic.
Most cold-outreach tools are hosted-only SaaS. Verdict is fully self-hostable: bring your own SMTP or Resend key, run the entire pipeline locally, keep every contact record in your own infrastructure. GDPR-friendly by design, since no personal data passes through third-party databases.
Clay enriches leads by waterfalling paid data providers and charges $149+/month for credits. Verdict needs no data providers: it discovers addresses from what companies publish publicly, then gates every send on a first-party SMTP verdict. Open source, self-hostable, and free to run against unlimited prospects.
Cold email to business addresses is legal in the United States under CAN-SPAM (requirements: accurate headers, physical address, working unsubscribe). The EU is stricter under GDPR (legitimate-interest basis; consult counsel). Canada's CASL requires consent. Verdict ships suppression-list and unsubscribe tooling; compliance with local law is your responsibility.
The engine is the product. It needs Python and two packages, and it has to run on your machine — confirming a mailbox requires outbound port 25, which every major cloud provider blocks.
git clone https://github.com/omm9846/verdict.git
cd verdict/backend
pip install -r requirements.txt
python -m engine verify someone@example.com # real SMTP probe
python -m engine check someone@example.com # DNS tier, no probe
python -m engine audit example.com # SPF/DKIM/DMARC/MX gradeEverything prints JSON. UNKNOWN exits non-zero, so a script cannot read
"no verdict" as "verdict: fine".
Verdict ships an MCP server, so Claude and other agents can verify mail as a tool. No SDK, no API key — it speaks JSON-RPC over stdio and installs with nothing beyond the two packages above.
{
"mcpServers": {
"verdict": {
"command": "python",
"args": ["-m", "engine.mcp_server"],
"cwd": "/path/to/verdict/backend"
}
}
}Tools: verify_email, precheck_email, audit_domain.
from engine.discovery import harvest, candidates
from engine.verify import verify
found = harvest("targetfirm.com") # public-web evidence
cands, patterns = candidates("targetfirm.com", found, "Jane Doe")
for address in cands:
v = verify(address)
if v["verdict"] == "SEND":
ship_it(address) # your sender, your domain
break
suppress(address) # dead / catchall / unknownUNKNOWN means the server refused the probe, not that the address is bad.
Treating it as invalid suppresses real contacts permanently.
Nothing to install: a free domain audit at tryverdict.org/audit, and the survey it came from at tryverdict.org/spoofable.
npm install && npm run devSee docs/architecture.md for the full gate logic.
- Distributed probe pool (residential rotation for gateway coverage)
- Inbox warmup module
- Contacts store + wave persistence (Supabase)
- Template editor with segment variables
- LinkedIn / X human-in-the-loop cockpit
- GDPR / CAN-SPAM compliance pack
PRs welcome. Read CONTRIBUTING.md, keep the gate strict: anything that makes shipping easier at the cost of deliverability gets rejected.


