find-leads
Find qualified B2B leads with OpenOutreach — run `openoutreach find N [emails]`, read the CSV it prints on stdout, and hand the rows to whatever sends. Use when the user wants leads, prospects, an ICP-matched contact list, or asks what a campaign already has. Also covers first-run setup (`openoutreach init`), `openoutreach status`, when a lookup costs money, and the verbs that actually send mail (`send`, `run`) — which you never run unasked.
Оригинален текст · няма потвърден превод на българскиПърво прочетете инструкцията.
Файлът се зарежда от посочения източник само по ваше действие. Можете да го прочетете тук, да го копирате или да го запазите като .md.
GitHub хранилище- Звезди на репото
- 3052
- Лиценз
- GPL-3.0
- Последна проверка на записа
- 22.09.2026 г.
Добавете в своя инструмент.
Командата отваря избора на skills от репозитория. Прочетете файла и условията на автора преди изпълнение.
npx skills add eracle/OpenOutreachСтраницата копира текст. Не инсталира и не изпълнява нищо на устройството ви.
Откъс от SKILL.md
Началото на файла на автора, без превод.
Finding leads with OpenOutreach
OpenOutreach is a self-hosted CLI lead finder. You describe a product and a target market once; each run discovers candidates from a licensed data source, has an LLM judge each one against that ICP, writes down why, and prints every lead it has as CSV on stdout.
It is one bounded command: ask for an amount, get rows, exit. There is no daemon, no background job, no file the tool writes for the operator, and nothing to poll. If you find yourself wanting to tail a log or wait for something, you have the wrong model of this tool.
It can also send — send mails what is stored, and run is find-then-send in one pass. Both
put mail in strangers' inboxes under the user's own identity, so never run either one unless the
user asked for mail to go out. find is the default answer to "get me leads"; its deliverable is
a CSV for whatever they already send with.
Is it installed?
openoutreach status # human summary
openoutreach status --json # the same document, for you to parse
If the command is missing, run it through uvx instead — uvx openoutreach ... — or install it
with pip install openoutreach. Inside a checkout of the repo, python manage.py <verb> is the
same entry point.
status never blocks and never spends. It answers onboarding (complete or which
OPENOUTFIND_* variables are missing), the counts, the credit balance, anything blocked, and a
next_action — start there whenever you are unsure what state the user is in. It reports the
finding half; the sending half reports itself when send runs.
Setup, if status says onboarding is incomplete
openoutreach init # interactive wizard on a TTY; environment otherwise
init creates the database, asks for whatever this install has not been told, and stops before
spending anything. It is one flow over both halves — the finding first, then what only the sending
needs. Every answer can come from the environment instead of a prompt, which is what makes a
headless setup possible: