<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vivek Singh</title>
    <description>The latest articles on DEV Community by Vivek Singh (@findmemailio).</description>
    <link>https://dev.to/findmemailio</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3921518%2F791b258a-1d3d-401f-bea5-6a4c91e80dfa.png</url>
      <title>DEV Community: Vivek Singh</title>
      <link>https://dev.to/findmemailio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/findmemailio"/>
    <language>en</language>
    <item>
      <title>Why I Index Only 32k Companies When Apollo Has 250M: A B2B Database Trade-off</title>
      <dc:creator>Vivek Singh</dc:creator>
      <pubDate>Sat, 09 May 2026 15:23:10 +0000</pubDate>
      <link>https://dev.to/findmemailio/why-i-index-only-32k-companies-when-apollo-has-250m-a-b2b-database-trade-off-f49</link>
      <guid>https://dev.to/findmemailio/why-i-index-only-32k-companies-when-apollo-has-250m-a-b2b-database-trade-off-f49</guid>
      <description>&lt;p&gt;One of the questions I get from prospects evaluating &lt;a href="https://findmemail.io" rel="noopener noreferrer"&gt;findmemail.io&lt;/a&gt; against Apollo or ZoomInfo: "your database is so much smaller — why?"&lt;/p&gt;

&lt;p&gt;The honest answer: it's a deliberate trade-off, and the smaller-but-cleaner approach actually wins for the use case I'm targeting. Here's the architecture reasoning.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "more contacts = better" myth
&lt;/h2&gt;

&lt;p&gt;Big B2B databases brag about contact count: Apollo claims 250M+, ZoomInfo claims similar, Seamless says 1.8B+ emails. The implicit promise is that more = better.&lt;/p&gt;

&lt;p&gt;In practice, more contacts = more stale records. Industry-standard B2B contact churn is ~3% per month — meaning a 250M database loses ~7.5M valid records every month. Re-verifying all of them at that scale is expensive enough that the providers don't do it on every entry; they batch-verify, delay flagging stale records, and let the "verified" status drift.&lt;/p&gt;

&lt;p&gt;The result: a "verified" Apollo email has, on average, a 5-15% chance of bouncing depending on how recently the record was touched. ZoomInfo numbers are slightly better because they invest more in verification, but still meaningfully &amp;gt; 2%.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why bounces matter more than database size
&lt;/h2&gt;

&lt;p&gt;Cold email deliverability is gated by sender domain reputation. Once your domain trips a bounce threshold (~5% per send window), Gmail and Outlook start filtering everything from you to spam. Recovering domain reputation is slow and uncertain — sometimes you have to burn the domain entirely.&lt;/p&gt;

&lt;p&gt;So the practical question is not "how many contacts can I get" but "how many contacts can I send to without burning my domain." A 1,000-email list at 1% bounce rate is more sendable than a 10,000-email list at 8% bounce rate.&lt;/p&gt;

&lt;h2&gt;
  
  
  The architectural choice
&lt;/h2&gt;

&lt;p&gt;When I designed &lt;a href="https://findmemail.io" rel="noopener noreferrer"&gt;findmemail.io&lt;/a&gt;, I made one constraint up front: &lt;strong&gt;never return an email we haven't SMTP-verified at request time&lt;/strong&gt;. Not pattern-matched, not domain-validated, not cached from a 6-month-old probe. RCPT-TO check, fresh, on every lookup.&lt;/p&gt;

&lt;p&gt;That constraint determines the database size:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We can't index 250M companies because we'd need to constantly re-verify their emails. SMTP probes have rate limits, IP-rotation costs, anti-spoofing requirements. Doing it at 250M scale would be a multi-million-dollar/year infrastructure problem.&lt;/li&gt;
&lt;li&gt;We CAN index 32k+ companies and re-verify aggressively. That's the size of the manageable-quality bucket.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What this means for users
&lt;/h2&gt;

&lt;p&gt;The trade-off:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Apollo (large database)&lt;/th&gt;
&lt;th&gt;findmemail.io (smaller, fresher)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;250M+ contacts&lt;/td&gt;
&lt;td&gt;32k+ companies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;~5-15% bounce rate&lt;/td&gt;
&lt;td&gt;&amp;lt;2% bounce rate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You build broad lists&lt;/td&gt;
&lt;td&gt;You build precise lists&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per-seat pricing&lt;/td&gt;
&lt;td&gt;Lifetime tier&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For a 10,000-person sales org needing to spray-and-pray on a contact firehose, Apollo's size is the right answer.&lt;/p&gt;

&lt;p&gt;For an indie founder targeting a precise ICP at indie-founder volumes, the smaller-but-cleaner database wins. You're not trying to send to 50M people. You're trying to send to 500 right people, get verified emails for them, and not burn your domain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation notes (for builders curious about the SMTP layer)
&lt;/h2&gt;

&lt;p&gt;The SMTP probe at request time is the hard part. Quick architecture sketch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;client → API → cache(7-day TTL) → SMTP probe pool → MX server → response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Probe steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;MX lookup for the recipient domain&lt;/li&gt;
&lt;li&gt;TCP connect to MX on port 25&lt;/li&gt;
&lt;li&gt;HELO/EHLO with throwaway sending domain&lt;/li&gt;
&lt;li&gt;MAIL FROM with throwaway sender&lt;/li&gt;
&lt;li&gt;RCPT TO with target email&lt;/li&gt;
&lt;li&gt;Read response (250 = accept, 550 = reject, 421/451 = retry)&lt;/li&gt;
&lt;li&gt;QUIT — never DATA, never deliver&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Anti-detection challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mail servers rate-limit probes per source IP. Need an IP rotation pool.&lt;/li&gt;
&lt;li&gt;Some servers (Google Workspace, Microsoft 365) refuse RCPT-TO probes entirely — return 252 for everything. We fall back to historical pattern data for these.&lt;/li&gt;
&lt;li&gt;Catch-all detection: probe a known-bad address first; if it returns 250, the domain is catch-all and we don't return individual emails.&lt;/li&gt;
&lt;li&gt;Greylisting: server returns 451 first, expects retry. We retry with backoff up to 3x across an hour.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This pipeline runs on every lookup. P50 response time is ~800ms, P95 is ~2s. Caching for 7 days keeps the per-domain load reasonable while keeping freshness within typical B2B contact churn windows.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd build differently if I had a $10M budget
&lt;/h2&gt;

&lt;p&gt;Honest answer: I'd still cap database size, but I'd index more precisely.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep the 32k → 100k+ companies range, not 1M+&lt;/li&gt;
&lt;li&gt;Add intent signal layer (job changes, funding rounds) — currently you have to pair with Pharow or Clay&lt;/li&gt;
&lt;li&gt;LinkedIn-derived enrichment, but only for verified + active accounts&lt;/li&gt;
&lt;li&gt;Better dedup on people-who-changed-jobs (currently a manual step)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The thing I would NOT do: chase Apollo's 250M number. The trade-off doesn't favor it for the indie founder ICP.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://findmemail.io" rel="noopener noreferrer"&gt;findmemail.io&lt;/a&gt; — free tier on signup, 50 credits, no card. Run the same query you'd run on Apollo and compare the bounce rate on a small batch. The architecture-driven quality difference shows up immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Database size is the wrong KPI for B2B email finder quality. Bounce rate is the right one, because bounce rate determines whether your sender domain stays sendable. Smaller databases with aggressive re-verification beat larger databases with stale records — at indie-founder volumes. That's the architectural bet behind &lt;a href="https://findmemail.io" rel="noopener noreferrer"&gt;findmemail.io&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>database</category>
      <category>saas</category>
      <category>startup</category>
    </item>
    <item>
      <title>How I built SMTP email verification at scale for findmemail.io</title>
      <dc:creator>Vivek Singh</dc:creator>
      <pubDate>Sat, 09 May 2026 12:55:27 +0000</pubDate>
      <link>https://dev.to/findmemailio/how-i-built-smtp-email-verification-at-scale-for-findmemailio-1g00</link>
      <guid>https://dev.to/findmemailio/how-i-built-smtp-email-verification-at-scale-for-findmemailio-1g00</guid>
      <description>&lt;p&gt;When I started building &lt;a href="https://findmemail.io" rel="noopener noreferrer"&gt;findmemail.io&lt;/a&gt;, I made one architectural decision early: never return an email we haven't SMTP-verified at request time. No pattern guessing, no domain-only validation. This post is about how that constraint shaped the system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why SMTP verification at request time
&lt;/h2&gt;

&lt;p&gt;Most B2B email finders do verification asynchronously, in batches. The result is a database where some entries are verified, some are stale, some never were. Users don't know which is which.&lt;/p&gt;

&lt;p&gt;This kills cold email deliverability. A 5% bounce rate flags your sender domain. A 30% bounce rate (common with mixed-quality data) burns it.&lt;/p&gt;

&lt;p&gt;The constraint at findmemail.io: every email returned to the user has been SMTP-probed in the last 7 days. If it's older or the probe failed, we don't return it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The SMTP probe
&lt;/h2&gt;

&lt;p&gt;For each candidate email, we do:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;MX lookup&lt;/strong&gt; — find the recipient's mail server&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TCP connect&lt;/strong&gt; — open port 25 to the MX&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HELO/EHLO&lt;/strong&gt; — introduce ourselves&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MAIL FROM&lt;/strong&gt; — declare a throwaway sender&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RCPT TO&lt;/strong&gt; — ask the server if it'll accept the recipient&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QUIT&lt;/strong&gt; — close cleanly, never DATA, never deliver&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The key step is RCPT TO. The server returns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;250 — accept (email exists, deliverable)&lt;/li&gt;
&lt;li&gt;550 — reject (mailbox doesn't exist)&lt;/li&gt;
&lt;li&gt;421/451 — temporary failure (greylist or rate limit)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We classify each result and only "250" emails get returned to the user.&lt;/p&gt;

&lt;h2&gt;
  
  
  Anti-anti-bot: how mail servers fight you
&lt;/h2&gt;

&lt;p&gt;This sounds straightforward but isn't, because mail servers actively fight verification probes. Common defenses:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Catch-all domains.&lt;/strong&gt; Server returns 250 for any address. &lt;code&gt;literally.anything@catchall-domain.com&lt;/code&gt; "accepts". Useless.&lt;/p&gt;

&lt;p&gt;Detection: probe a known-bad address (&lt;code&gt;asdf-not-a-real-user-12345@&amp;lt;domain&amp;gt;&lt;/code&gt;). If that also returns 250, the domain is catch-all. We tag it and don't return individual emails for the domain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Greylisting.&lt;/strong&gt; Server returns 451 the first time, expects a retry. Real mail servers retry; one-shot probes don't.&lt;/p&gt;

&lt;p&gt;Mitigation: retry the probe with exponential backoff up to 3 times across 1 hour. Track which domains require this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Rate limiting per IP.&lt;/strong&gt; Send too many RCPT TO requests, you get throttled or blacklisted.&lt;/p&gt;

&lt;p&gt;Mitigation: rotate sender IPs, never probe the same domain more than 1x/min, distribute load.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Anti-Spoofing.&lt;/strong&gt; Server checks SPF/DKIM on your sender domain before responding to RCPT TO.&lt;/p&gt;

&lt;p&gt;Mitigation: maintain a real, warmed-up sending domain with proper SPF/DKIM/DMARC. Use a different domain than your product domain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Honeypot / tarpit.&lt;/strong&gt; Server responds slowly to waste your time. Or returns 250 for every address to pollute your dataset.&lt;/p&gt;

&lt;p&gt;Detection: time the response. &amp;gt;5 sec = suspicious. Cross-check by probing 2-3 known-good emails on the domain — if they all "accept" but bounce when actually sent, flag the domain.&lt;/p&gt;

&lt;h2&gt;
  
  
  The cache strategy
&lt;/h2&gt;

&lt;p&gt;Probing on every request would be slow and rude (you'd hammer the same MX). So:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First-time probe → cache result for 7 days&lt;/li&gt;
&lt;li&gt;Re-probe on cache miss&lt;/li&gt;
&lt;li&gt;Re-probe sooner if the user reports a bounce (feedback loop)&lt;/li&gt;
&lt;li&gt;Background re-validation for top 1000 most-queried emails daily&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This keeps p50 response time under 800ms while maintaining freshness.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failure modes I had to learn the hard way
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Major email providers (Google, Microsoft, AOL) often refuse RCPT TO probes entirely.&lt;/strong&gt; They return 252 ("can't verify, try sending") for everything. That's because so many spammers used SMTP probing to harvest valid addresses that the providers gave up on telling you.&lt;/p&gt;

&lt;p&gt;For these domains, we fall back to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pattern matching against historical sender data&lt;/li&gt;
&lt;li&gt;LinkedIn-based name verification&lt;/li&gt;
&lt;li&gt;Domain-pattern enrichment (if other emails at the company verified, the same pattern likely works)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We label these as "deliverable, lower confidence" in the API response. The user sees the difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this enables
&lt;/h2&gt;

&lt;p&gt;Because every email is verified at the call site, our customers get a bounce rate &amp;lt;2%. Compare that to the typical Apollo/ZoomInfo ~5-10% in industry reports.&lt;/p&gt;

&lt;p&gt;This was the design constraint that shaped everything else about findmemail.io — the database is smaller than Apollo (32k+ companies vs millions) but the per-email quality is much higher.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Free tier on &lt;a href="https://findmemail.io" rel="noopener noreferrer"&gt;findmemail.io&lt;/a&gt; is 50 credits, no card required. The API returns deliverability confidence per email so you can decide which to send.&lt;/p&gt;

&lt;p&gt;If you're shipping a B2B email finder yourself, feel free to ask architecture questions in the comments.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>backend</category>
      <category>saas</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Plain-English search beats filter UIs for B2B email finders — here is why</title>
      <dc:creator>Vivek Singh</dc:creator>
      <pubDate>Sat, 09 May 2026 12:42:05 +0000</pubDate>
      <link>https://dev.to/findmemailio/plain-english-search-beats-filter-uis-for-b2b-email-finders-here-is-why-2g03</link>
      <guid>https://dev.to/findmemailio/plain-english-search-beats-filter-uis-for-b2b-email-finders-here-is-why-2g03</guid>
      <description>&lt;h2&gt;
  
  
  The problem with filter UIs
&lt;/h2&gt;

&lt;p&gt;Most B2B email finders (Apollo, Hunter, ZoomInfo, Lusha, Cognism) ship a filter sidebar with 6-12 dropdowns: industry → sub-industry → company size → role → seniority → location → funding stage → tech stack → headcount growth → and so on. To build a list, you click through every one.&lt;/p&gt;

&lt;p&gt;In practice, this means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;you have to know each tool's category taxonomy&lt;/li&gt;
&lt;li&gt;"industry" lists in different tools don't match (one calls it "Mining &amp;amp; Metals", another "Materials")&lt;/li&gt;
&lt;li&gt;you can't describe a niche cleanly ("VPs of operations at copper mines in Chile" doesn't map to any standard filter)&lt;/li&gt;
&lt;li&gt;every list you build takes 5-10 minutes of clicking before you even hit search&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What plain-English search changes
&lt;/h2&gt;

&lt;p&gt;I built &lt;a href="https://findmemail.io" rel="noopener noreferrer"&gt;findmemail.io&lt;/a&gt; because I was tired of the click-through workflow. The core idea: type the ICP in one line, get verified emails back.&lt;/p&gt;

&lt;p&gt;Examples that work today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"VPs of growth at Series A SaaS in NYC"&lt;/li&gt;
&lt;li&gt;"founders of seed-stage climate tech in Berlin"&lt;/li&gt;
&lt;li&gt;"CMOs at consumer SaaS with 50-200 employees"&lt;/li&gt;
&lt;li&gt;"agency owners doing performance marketing in India"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The query gets parsed into structured filters server-side, matched against the company graph, then SMTP-verified emails are returned.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned shipping it
&lt;/h2&gt;

&lt;p&gt;A few things were surprising:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Most queries don't need a filter UI at all.&lt;/strong&gt; When users could type freely, ~80% of queries fell into 6-7 patterns: founder/CEO + stage + industry, VP/Director + function + region, etc. The filter UI was solving for a long tail of edge cases that almost nobody hit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. SMTP verification matters more than database size.&lt;/strong&gt; A list of 1,000 verified emails outperforms 10,000 catch-alls — bounce rate kills sender reputation, and once you're flagged, every campaign suffers. We index 32k+ companies but the value is the per-email verification.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Pricing models are the real differentiator.&lt;/strong&gt; Most tools sell credits + monthly subscriptions. Indie founders hate subscriptions and want predictable cost. We ship a $200 lifetime tier with 7-day refund — no recurring billing, no per-seat. Conversion on this tier outperformed monthly 3:1 in early months.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack notes for builders
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;semantic parsing of the query: small fine-tuned model + structured filter extraction&lt;/li&gt;
&lt;li&gt;company graph: combined from public registries, LinkedIn-style sources, and crawled domains&lt;/li&gt;
&lt;li&gt;email finding: pattern enumeration + MX/SMTP probe per pattern&lt;/li&gt;
&lt;li&gt;verification: throwaway sender + RCPT TO check, no DNS-only "valid format" checks&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why the build-in-public version
&lt;/h2&gt;

&lt;p&gt;I'm sharing the architecture and lessons because most "B2B leadgen" content online is recycled SaaS marketing. Indie founders shipping in this space need actual signal, not best-of lists.&lt;/p&gt;

&lt;p&gt;If you're shipping a leadgen workflow and want to try plain-English search instead of filters: &lt;a href="https://findmemail.io" rel="noopener noreferrer"&gt;findmemail.io&lt;/a&gt; — free tier on signup, 50 credits to play with.&lt;/p&gt;

&lt;p&gt;Happy to answer architecture questions in the comments.&lt;/p&gt;

</description>
      <category>saas</category>
      <category>showdev</category>
      <category>ui</category>
      <category>ux</category>
    </item>
    <item>
      <title>What I learned shipping a B2B email finder as a solo founder</title>
      <dc:creator>Vivek Singh</dc:creator>
      <pubDate>Sat, 09 May 2026 09:40:17 +0000</pubDate>
      <link>https://dev.to/findmemailio/what-i-learned-shipping-a-b2b-email-finder-as-a-solo-founder-5bi3</link>
      <guid>https://dev.to/findmemailio/what-i-learned-shipping-a-b2b-email-finder-as-a-solo-founder-5bi3</guid>
      <description>&lt;p&gt;Six months ago I shipped &lt;a href="https://findmemail.io" rel="noopener noreferrer"&gt;findmemail.io&lt;/a&gt;, a B2B email finder built around plain-English search instead of filter pickers.&lt;/p&gt;

&lt;p&gt;Sharing the things I'd do differently if I started over today, in case it's useful to anyone in a similar spot.&lt;/p&gt;

&lt;h2&gt;
  
  
  what worked
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;plain-english search as the wedge.&lt;/strong&gt; every existing tool in this space (apollo, hunter, zoominfo, lusha) makes you click through 5-8 filter dropdowns to define an ICP. it works once you learn it, but the first-run experience is brutal. i let users type "VPs of operations at copper mines in chile" and the system parses + filters. early activation rate jumped 3x vs the filter ui i originally shipped.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;lifetime pricing for the bottom of the market.&lt;/strong&gt; subscription pricing forces the smallest customers to either pay full SaaS rates or churn immediately. a $200 one-time tier serves the indie founder/freelancer segment that big tools deliberately ignore. these users are also the loudest evangelists when something works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;verification waterfall over single-source.&lt;/strong&gt; every "verified" email has a non-trivial bounce rate. running every result through 2 independent SMTP checks before serving it cut bounces from ~12% to under 4%. higher infra cost, but the alternative is users blaming you for sender reputation damage.&lt;/p&gt;

&lt;h2&gt;
  
  
  what i'd do differently
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;ship the public landing page before the product.&lt;/strong&gt; i spent 3 months building before showing anyone a URL. should have launched a landing page with the plain-english search demo on day 14, taken a waitlist, and used the wait list as my user research panel for the next 6 weeks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;don't try to compete on database size.&lt;/strong&gt; i wasted an entire month chasing data volume to match apollo's 200M+ contacts. nobody cares. a 32k-company index that's actually fresh and well-verified beats a 200M-company index that bounces at 20%. focus on a tight TAM and serve it well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;charge from day 1.&lt;/strong&gt; my first 50 users were all free. 47 churned. the 3 who paid stayed for 6+ months. the lesson wasn't "free is bad", it was that paying users self-select for ICP fit, and free users mostly don't.&lt;/p&gt;

&lt;h2&gt;
  
  
  what i'm working on now
&lt;/h2&gt;

&lt;p&gt;distribution. the build was the easy part. for an indie b2b tool with no warm network, the only real channels are: founder LinkedIn, communities where your ICP already hangs out, and very narrow paid retargeting. ad spend before product-market fit is just expensive education.&lt;/p&gt;

&lt;p&gt;happy to answer questions if anyone is shipping in this space.&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
