Руководство по OSINT

Каждый лид — с источником
и проверкой.

Автоматический OSINT-пайплайн: параллельные агенты черпают компании и людей из реестров, карт, корпоративных сайтов и соцсетей, извлекают и проверяют каждый email и телефон, затем сливают всё в единую чистую базу контактов — синхронизированную с CRM.

Источники данных

Откуда берутся лиды

search_business_directory

Бизнес-реестры

rusprofile.ru, list-org.com, sbis.ru, companies.rbc.ru — эти агрегаторы открывают данные реестров: ИНН/ОГРН, учредители и руководители.

find_leads

Карты и каталоги

2GIS (СНГ), Яндекс Карты, Yellow Pages — компании с адресами, телефонами и часами работы.

parse_corporate_site

Корпоративные сайты

Страницы команды и «о компании», контакты, пресс-релизы — плюс разметка Schema.org и JSON-LD.

search_social

Соцсети

Профили LinkedIn, поиск X/Twitter, каналы Telegram — с честной обработкой антибот-лимитов.

search_news

Новости и упоминания

Serper News и Google News RSS — раунды финансирования, наймы и запуски.

Пайплайн

Семь стадий, один запрос

01

План

Координатор разбивает запрос на параллельные подзадачи.

02

Извлечение

extract_contacts достаёт email, телефоны, соцсети и компании со страниц.

03

Проверка

verify_email, verify_phone и verify_social_profile отсеивают шум и оценивают уверенность.

04

Обогащение

enrich_company и enrich_person добавляют отрасль, размер, локацию, роль и сигналы спроса.

05

ContactDb

Хранилище SQLite или PostgreSQL; дедуп и слияние по нормализованным email и телефонам.

06

CRM

При настройке передавайте одобренные записи в CRM-адаптер с дедупликацией по crm_id.

07

Отчёт

summary.md плюс таблица контактов, экспорт в CSV, vCard, JSON или Excel.

Верификация

Ничего непроверенного не сохраняется

Возвраты и «мёртвые» номера сжигают бюджет аутрича. Каждый кандидат проходит MX-проверки, фильтры disposable-доменов и ролевых ящиков, прежде чем получит confidence — а обфусцированные адреса вида name [at] domain [dot] com декодируются автоматически, с меньшим баллом, чем обычные.

verify_email("[email protected]")
→ is_valid_syntax: true
→ domain_exists:   true
→ mx_records:      ["mx1.company.com"]
→ is_disposable:   false
→ is_role_based:   true      # info@ admin@ support@
→ confidence:      0.85

# deobfuscation
"name [at] company [dot] com"
→ [email protected]           # confidence 0.70
"[email protected]"           # plain → confidence 0.95

Телефоны и паттерны

Телефоны E.164, выведенные email

Телефоны нормализуются в E.164 через libphonenumber с определением страны и мобильный/городской. Когда известны только имя и домен, suggest_emails строит кандидатов из перестановок имени и существующего паттерна домена — до 9 вариантов для проверки.

verify_phone("+7 (495) 710-75-80")
→ normalized:   "+74957107580"    # E.164
→ country_code: "RU"
→ is_valid:     true
→ is_mobile:    false             # landline

suggest_emails("John Doe", "acme.com")
→ [email protected]
→ [email protected]
→ [email protected]  …
→ additional candidates follow the observed
  domain pattern and require review

Хранилище

ContactDb — одна каноническая запись

Контакты попадают в SQLite из коробки — или в PostgreSQL для больших баз, с тем же интерфейсом. Дедуп и слияние работают по нормализованным email и телефонам, так что повторные прогоны и пересекающиеся источники не создают дублей. Теги и заметки прикрепляются к контакту; вся схема открыта для запросов.

save_contacts · db_path = "./contacts.db" · pg_url = "postgres://…"

ТаблицаКолонки
contactsid, email, phone, name, title, company, source, timestamps
social_profilescontact_id, platform, url, username
companiesname, website, industry, size, location
tagscontact_id, tag
notescontact_id, note

Примеры запросов

Одна команда — папка лидов

Москва — IT-CEO
fathom run \
  "Find contacts of CEOs and CTOs at
   small IT companies in Moscow.
   Extract emails, phones and
   LinkedIn profiles." \
  --output ./leads/

# agents fan out over rusprofile,
# list-org and sbis, parse corporate
# sites, enrich persons
# → INN/OGRN table + emails + phones
#   + LinkedIn candidates (CSV, md)
Берлин — SaaS Series A–B
fathom run \
  "Map SaaS companies in Berlin,
   collect public evidence and
   identify founders or CTOs where
   sources support the match." \
  --output ./berlin-saas/

# → cited company and contact findings
#   with confidence, gaps and review
#   status; export only after approval
Дубай — fintech-рынок
fathom run \
  "Research the Dubai fintech
   startup market and identify
   decision-maker evidence where
   public sources support it." \
  --output ./dubai-fintech/

# → market overview with cited evidence,
#   contact hypotheses, gaps and review
#   status; export or hand off when allowed

Этика и комплаенс

Ответственно по умолчанию

GDPR и 152-ФЗ

Персональные данные обрабатываются в соответствии с GDPR и 152-ФЗ.

Только публичные данные

Ничего не скрейпится за логинами, пейволлами или закрытыми API.

robots.txt и лимиты

Краулинг уважает robots.txt и встроенное ограничение.

Честные статусы

Неопределённость выражается явно — никаких молчаливых догадок.

LinkedIn HTTP 999

LinkedIn отвечает ботам HTTP 999; агенты показывают блокировку.

Без спама

Контакты предназначены для точечного аутрича, а не массовых рассылок.

Смотреть полный рабочий процесс генерации лидов

Генерация лидов →