# π§² OpenLeads
### Find people and their work emails from free public data β then work them like you would in Apollo. No API keys. $0.
**Type who you want (_"dentists in Austin"_, _"fintech founders"_, _"law firms in London"_) and OpenLeads searches OpenStreetMap, Y Combinator, GitHub, OpenAlex, SEC EDGAR, Wikidata and company websites, finds the real people, and tells you honestly which emails are confirmed and which are guesses. Then it scores them against your ideal customer, organizes them into lists, and runs multi-step email, call and LinkedIn sequences, tasks and a deal pipeline. It runs on your machine.**
[](./COMMERCIAL-LICENSE.md)
[](https://pypi.org/project/openleads/)
[](https://www.npmjs.com/package/openleads)
[](https://www.python.org/)
[](#how-it-works)
[](https://github.com/Samyrrrrrr990/openleads/actions/workflows/ci.yml)
[](./BENCHMARK.md)
[](https://github.com/Samyrrrrrr990/openleads/stargazers)
```bash
pipx install openleads # or: pip install openleads Β· npx openleads
openleads find "dentists in Austin"
openleads web # the dashboard Β· or `openleads demo` to look around first
```
[**Website**](https://samyrrrrrr990.github.io/openleads/) Β· [**Docs**](https://samyrrrrrr990.github.io/openleads/docs/) Β· [**Live benchmark**](./BENCHMARK.md) Β· [**Changelog**](./CHANGELOG.md)
The local dashboard (openleads demo, invented data). Light and dark, keyboard-first, nothing leaves your machine.
---
```text
$ openleads find "dentists in Austin" -n 6
β federated search Β· local β¦
1 βsafe info@example-dental.com Example Dental β°β°β°β°β°β°β°β°β°β° 98% found
2 βsafe hello@smile-example.com Smile Example Co β°β°β°β°β°β°β°β°β°β° 98% found
3 βrisky maria.lopez@smile-example.com Maria Lopez β°β°β°β°β°β°β±β±β±β± 62% guessed
4 βsafe d.kim@ortho-example.com Daniel Kim β°β°β°β°β°β°β°β°β°β± 88% pattern
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
6 leads 4 safe deliverable 2 risky unconfirmed ββββββββββββββββββββββββ
4 found or built from a seen pattern Β· 2 guessed
```
 |
 |
| People & companies. Facets with live counts, saved searches, bulk actions on every matching row, full records with timeline, notes, tasks and deals. |
Sequences. Email, call, LinkedIn and task steps; A/B variants; same-thread follow-ups; AI-written steps; people leave when they reply. |
 |
 |
| Deals. A drag-and-drop pipeline with weighted forecast; winning a deal makes the contact a customer. |
Everything else. Task queue, templates, ICP scoring, CSV import, data health and duplicate merge, a βK palette. |
```bash
openleads people --fit A --never-contacted # best untouched leads
openleads lists add "Q4 dentists" --where dental
openleads seq enroll "Q4 outbound" --list "Q4 dentists"
openleads tasks --bucket today
openleads import apollo-export.csv --list "Imported"
```
[Workspace guide β](./docs/workspace.md) Β· [Sequences guide β](./docs/sequences.md)
## Use it from Claude, Cursor or Claude Code
OpenLeads is an [MCP server](./docs/mcp.md). Your AI assistant can find and verify
leads mid-conversation:
```bash
claude mcp add openleads -- openleads mcp
```
```json
{ "mcpServers": { "openleads": { "command": "openleads", "args": ["mcp"] } } }
```
> *"Find 10 law firms in London with emails we can actually send to, and draft a two-line intro for each."*
> *"Save them to a list called London law, add the A-grade ones to my Q4 sequence, and give me a call task for each partner."*
The workspace tools let an assistant search your contacts and companies, read a
full record, and save leads, set stages, tag, take notes, create tasks and deals
and enroll people in sequences β never sending anything itself.
## Build it as a workflow
The dashboard's **Workflows** page draws each saved search as a node canvas, like n8n.
Click a node to edit it (who to find, what to offer, when to run, where to export), then hit
**Test run** and watch every node fill in from the live engine. Test runs never
send. [Workflows guide β](./docs/workflows.md)