Snov.io is a bundle and its parts differ a lot in difficulty. Sending drip sequences from your own mailboxes and keeping a small contact list is a weekend project. Guessing an address and checking it with an MX lookup and an SMTP handshake is reproducible too, and open-source Reacher already does the check, but many home networks and cloud hosts block port 25. Out of reach are the B2B prospect database behind Database Search, the LinkedIn automation that breaks LinkedIn's rules when you run it yourself, and a warm-up pool made of other people's mailboxes.
Before you buildThe Snov.io Trial plan never expires, with 50 credits a month. If you look up fewer than 50 people a month, you may not need to pay or build.
Build me a small email finder, verifier and drip sender to replace Snov.io for lists of a few hundred people. Requirements: - Node.js 22 + TypeScript: a Fastify server with server-rendered pages (Eta) and htmx. `npm start` serves http://localhost:4910 behind one admin password from .env (signed cookie). - Storage: better-sqlite3 in ./data/prospects.db: prospects (first and last name, company, domain, title, source), addresses (status valid, risky, invalid or unknown, checked_at), lists, campaigns, steps, sends and a suppression list. - Finder: from a first name, last name and company domain generate the usual patterns (first.last, flast, first, firstl, f.last, last.first), skip domains without MX records (node:dns), and rank patterns by what the addresses already saved for that domain use. - Verifier: an SMTP RCPT TO check that never sends a message. If REACHER_URL is set in .env call that Reacher backend, otherwise open the connection from this machine. Detect catch-all domains by probing a random local part and mark them risky. Cache every result for 30 days. - Import and export: CSV in with column mapping, CSV out with the status column. - Sending: 1 to 5 steps with day delays through SMTP accounts from .env, a daily cap, a sending window and a minimum gap. Skip invalid and unknown addresses, stop on reply (`imapflow`) or bounce, and put a List-Unsubscribe header and a working /u/<token> link in every message. - Dashboard: per list, how many addresses are found, valid, risky and invalid; per campaign, sent, replied, bounced and unsubscribed. - Single user. No accounts, no telemetry, local-first. Outbound calls: DNS, SMTP to recipient servers, your own mailbox and the optional Reacher URL. - Out of scope: a prospect database, LinkedIn scraping or automation, phone numbers, warm-up pools, CRM pipelines. - README: how to test port 25 with `nc -vz gmail-smtp-in.l.google.com 25` (many ISPs and clouds block it), that Gmail and Microsoft often answer "unknown", and that GDPR and PECR limit business cold email in Europe.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Snov.io.
Improve the finder in the email tool in this folder. Requirements: - When an address is verified valid, derive its pattern (first.last, flast and so on) from the person's name and store it on the company domain with a count. - Rank candidate addresses for a new person at that domain by pattern count; if one pattern has 3 or more confirmations, try only that one first and verify the rest only if it fails. - Add a domains page listing each domain's patterns, catch-all status and last check date. - Cover the pattern detection with tests, including names with accents, hyphens and middle names. - Update the README with how patterns are learned.
Add a Snov.io importer to the email tool in this folder. Requirements: - A command `prospects import-snov <file>` that accepts the CSV or XLSX from Leads > Export prospect list and a recipients CSV from a campaign's Recipients tab. - Read the header row and map columns by fuzzy name (first name, last name, email, company, position, status, tags); print the mapping and ask me to confirm before writing anything. - Keep Snov.io's email status as the initial status (mark it "imported, unchecked") and re-verify on first use; put every imported tag into a tags column. - Never import a recipient marked unsubscribed or bounced as sendable: add them to the suppression list. - Skip duplicates so running it twice is safe, and print counts of new, merged and skipped rows. - Update the README with the two export steps from Snov.io.
Add bounce protection to the email tool in this folder. Requirements: - Re-verify any address older than 30 days right before its first send. - If a campaign's bounce rate passes 3% over its last 100 sends, pause it and show a banner with the bounced addresses; resuming needs a click. - Parse bounce messages from IMAP into hard bounces (add to suppression) and soft bounces (retry once after 24 hours, then suppress). - Add a per-domain view of bounce counts so one bad company does not hide in the totals. - Update the README with the thresholds and where to change them.
One price replaces three subscriptions: a finder and verifier, a sender with warm-up, and a light CRM, with unlimited seats and senders. Public threads praise the support and the all-in-one setup, while other users call the interface clunky and the data dated, so the draw is convenience more than the best data.
Estimate · Your own mailbox and a laptop cost nothing extra. A small VPS with port 25 open for address checks runs about $5 a month, and a separate sending domain about $12 a year. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Trial | $0 | $0 | 50 credits, 100 recipients, 25 enrichment tokens and 1 email warm-up slot, renewed every 30 days. |
| Starter | $39 | $29.25 | 1,000 credits, 5,000 recipients, 75 enrichment tokens and 3 warm-up slots; unlimited team seats, senders, campaigns, follow-ups and export. |
| Pro S | $99 | $74.25 | 5,000 credits, 25,000 recipients, 150 enrichment tokens and unlimited warm-up slots. |
| Pro M | $189 | $141.75 | 20,000 credits and 50,000 recipients. |
| Pro L | $369 | $276.75 | 50,000 credits and 100,000 recipients. |
| Ultra | $738 | $553.50 | 100,000 credits, 200,000 recipients and 750 enrichment tokens. |
| LinkedIn Automation (add-on) | $69 | $62 | Connection requests, messages, InMail, follows, endorsements, likes and profile views from one LinkedIn account. |
The Trial plan never expires and renews every 30 days with 50 credits, 100 recipients, 25 enrichment tokens and 1 warm-up slot, but it cannot export.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: The prospect database behind Database Search and Domain Search, LinkedIn automation and the Prospect Finder browser extension.
About $39 a month on the Starter plan, $468 a year (checked 2026-10-19).
The prospect database behind Database Search and Domain Search; LinkedIn automation and the Prospect Finder browser extension; The premium warm-up pool, placement tests and blacklist checks; Phone-number and company enrichment from third-party providers; Two-way HubSpot and Pipedrive sync, plus Zapier, Make and Clay. If any of those matter to you, keep paying.
Yes: Reacher (open source), theHarvester (open source), OpenOutreach (open source).