Show HN: Locus – added bulk CSV search, real SMTP checks, and lead dedup Locus, an open-source lead-generation tool, added bulk CSV search, real SMTP email verification, and cross-session lead deduplication, according to its Show HN announcement. The self-hosted pipeline searches Google Maps listings by location and category, then runs each business through an LLM enrichment step using Gemini, OpenAI, Anthropic, or OpenRouter to find a verified contact email. Locus ships as a Docker Compose stack (app, worker, Postgres, Redis) with no hosted version, no account, and no fees, and its author notes automated collection of Google Maps data violates Google's Terms of Service. Search a location and category, pull real business listings, enrich them with AI-verified emails. Free, open-source, bring your own keys, no account with us, no fees. Locus runs a pipeline: search a place and a category, pull the matching businesses, then run each one through an AI enrichment step that tries to find a verified email. Results land in a table you can filter, sort, export CSV, Excel, JSON , or push to a webhook. Built with Next.js App Router , Prisma and Postgres, NextAuth, BullMQ and Redis for the background worker, and a bring-your-own-key model for the search and AI providers. - Search and extraction : a location, a category, and a radius pull real Google Maps business listings, with live progress over WebSocket. - Bulk search from a CSV : upload a file of query/location pairs an optional radius per row and queue up to 50 searches at once instead of running them one at a time. - AI enrichment : each business gets run through an LLM step that tries to find and verify a real contact email from its website, alongside phone numbers pulled from the listing itself. Choose from Gemini, OpenAI, Anthropic, or OpenRouter. - Real SMTP verification : on top of the AI's answer, a genuine mailbox check MX lookup, then an SMTP handshake, nothing ever gets sent confirms an email before it's marked verified, not just an AI guess. - Optional Hunter.io lookup : add a Hunter.io key and it's checked before the website-and-AI step runs, skipping straight to a known email when Hunter already has one on file for the domain. - Cross-session matching : the same business found in two different searches gets recognized and merged, not duplicated, backfilling any missing phone or email instead of creating a second row. - History : every past search is kept with its full config snapshot. Re-run one, open a past search's results straight from the list, or select two sessions to compare their yield side by side. - Export and integrations : CSV, Excel, or JSON export, plus outbound webhooks and CRM connectors HubSpot, Salesforce . - Bring your own key, for everything : search provider, AI provider, database, Redis, the server itself. No hosted version, no vendor lock-in, nothing running that you don't control. - Built for self-hosting : a real Docker Compose stack app, worker, Postgres, Redis that's actually been cold-started and verified end to end, not just written and assumed to work. Locus pulls data from Google Maps and third-party search APIs. Automated collection of Google Maps data is against Google's Terms of Service. You are responsible for how you run this, which providers and proxies you use, and whether that is allowed where you operate. This project is provided for research and educational purposes with no warranty. See the licence. - Node.js 20+ - Docker for local Postgres and Redis or your own instances - A search provider key SerpApi, Serper.dev, or Google Places - An AI provider key Gemini, OpenAI, Anthropic, or OpenRouter for enrichment There's no hosted version of Locus. Running it, for local development or for real, is entirely up to you: your own Postgres, your own Redis, your own server or machine. Two ways to do that: This builds and runs everything, the app, the worker, Postgres, and Redis, as one stack. git clone https://github.com/