Исследовательский сценарий

От цели к
проверяемым результатам.

Воркер может спланировать работу с источниками, использовать настроенные инструменты поиска и разбора, сохранить свидетельства в памяти и выдать проверяемый результат. Поиск контактов — лишь один пример, а не идентичность рантайма.

Девятиэтапный конвейер

Каждый лид, от начала до конца

1
Поиск

search_business_directory опрашивает 2GIS, Google Maps, Яндекс.Карты и Жёлтые страницы параллельно. search_social сканирует Twitter/X, Telegram и LinkedIn. search_news ищет упоминания в прессе.

2
Парсинг

parse_corporate_site извлекает название компании, отрасль, членов команды, контакты и соцпрофили с корпоративных сайтов через JSON-LD, Schema.org и 14 CSS-селекторов для командных страниц.

3
Генерация

find_leads оркестрирует весь пайплайн: справочники → парсинг корпоративных сайтов (до 6 параллельно) → поиск в соцсетях → атрибуция email → ранжирование по достоверности. Формирует подтверждённые лиды по контактам и компаниям.

4
Извлечение

extract_contacts извлекает email (3-проходная деобфускация включая словесные формы), телефоны (E.164 через libphonenumber), соцпрофили (15 платформ) и сущности людей/компаний с помощью LLM из любого текста или HTML.

5
Обогащение

enrich_company определяет 45+ технологий, извлекает выручку, год основания, штаб-квартиру и классифицирует отрасль по 18 категориям. enrich_person находит должность, компанию, биографию и локацию через комбинированный поиск по веб-источникам и LinkedIn.

6
Верификация

verify_email выполняет синтаксис → DNS-over-HTTPS MX → disposable (55+ доменов) → role-based (37 паттернов) → опциональный SMTP-зонд на порту 25. verify_phone нормализует в E.164. verify_social_profile проверяет 15 платформ и извлекает подписчиков.

7
Предложение

suggest_emails генерирует 9 корпоративных email-паттернов (first.last, f.last, flast и т.д.), определяет паттерн домена из email коллег и проверяет каждого кандидата через MX + опциональный SMTP.

8
Сохранение

save_contacts пишет в SQLite/PostgreSQL с TOCTOU-безопасной дедупликацией. Автосейв срабатывает автоматически после извлечения — контакты попадают в БД, даже если LLM забудет. Чеки верификации определяют статус Verified/Partial/Unverified.

9
Экспорт

Контакты: CSV, vCard 3.0, JSON, Excel (XLSX) с дедупликацией при экспорте. Отчёты: HTML, JSON, PDF, DOCX. Пуш в amoCRM, Bitrix24 или HubSpot с параллельной доставкой и дедупликацией по crm_id.

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

Четыре справочника, три платформы, один новостной движок

Бизнес-справочники

2GIS, Google Maps, Яндекс.Карты, Жёлтые страницы — параллельный запрос с кросс-директорной дедупликацией по названию+адресу.

Социальные платформы

Twitter/X (API v2 или веб-поиск), Telegram (обогащение через t.me preview), LinkedIn (site-restricted поиск). Дедуп по (платформа, URL).

Новости и пресса

Serper News + Google News RSS как фолбэк. Эвристика извлечения сущностей: персоны (2-3 слова с заглавной) и компании (корпоративные суффиксы, ALL-CAPS токены).

Верификация

Пять шлюзов до сохранения контакта

Каждый email проходит валидацию синтаксиса, DNS-over-HTTPS MX-запрос, детекцию одноразовых (55+ провайдеров), флаггинг role-based (37 паттернов) и опциональный SMTP-зонд на порту 25. Результаты записываются в append-only журнал чеков верификации.

Синтаксис

Подмножество RFC 5322: один @, локальная часть ≤64 символов, домен ≤253, без начальных/конечных/подряд точек.

MX-запрос

DNS-over-HTTPS через Google затем Cloudflare. Фолбэк на A/AAAA по RFC 5321 §5.1. Null MX (RFC 7505) обнаруживается и отбрасывается.

Одноразовые

55+ известных одноразовых провайдеров (mailinator, yopmail, guerrillamail, tempmail). Субдомен-матчинг включён.

Ролевые

37 паттернов отделов/функций: admin, info, support, sales, noreply, hr, billing и т.д.

SMTP-зонд

Опциональное SMTP-рукопожатие на порту 25: баннер → HELO → MAIL FROM → RCPT TO. Принимает 250/251, отклоняет 5xx, неопределённо 4xx (greylisting). Никогда не отправляет содержимое сообщения.

Обогащение

45+ технологий, 18 отраслей

enrich_company читает HTML-сигнатуры для определения CMS, JS-фреймворков, аналитики, платежей и хостинга. enrich_person перекрёстно сверяет веб + LinkedIn для заполнения должности, компании, био и локации.

CMS

WordPress, Shopify, Squarespace, Wix, Webflow, Drupal, Joomla, Magento

JS-фреймворки

Next.js, Nuxt.js, React, Vue.js, Angular, Svelte, Gatsby

Аналитика

Google Analytics, Segment, Mixpanel, Amplitude, Hotjar, Matomo, Яндекс.Метрика

Платежи

Stripe, PayPal

Хостинг и маркетинг

Vercel, Netlify, CloudFront, S3, HubSpot, Klaviyo, Mailchimp, Salesforce, Sentry

Отслеживание качества

Append-only чеки верификации

Каждая проверка записывает durable-чек в JSONL-журнал. Чеки ключуются по (тип, значение) — PASS по одному типу никогда не заглушит FAIL по другому. Последний чек по ключу побеждает. Три уровня статуса: Verified (SMTP принял), Partial (синтаксис+MX ок), Unverified.

Верифицирован

SMTP принял почтовый ящик

Частичный

Синтаксис + MX проверка пройдена

Не проверен

Нет проходных чеков верификации

Плановый сбор

Запустите снова. Сравните результаты.

Флаг --repeat N перезапускает тот же запрос каждые N секунд, сравнивает хранилище контактов между прогонами и отправляет алерты о вновь обнаруженных контактах через webhook, Telegram или email.

# Run every 24 hours, alert on new contacts
fathom run --repeat 86400 \
  "Find VP Engineering at Series B startups in SF"

# Watch mode output:
# ── Findings changed since the previous run ──
# Reviewable contacts, evidence and gaps are written
# according to the configured output and approval policy.

CRM и экспорт

Синхронизация с CRM без дубликатов

Пуш до 4 контактов параллельно с одной автоматической повторной попыткой. crm_id предотвращает повторный пуш уже синхронизированных контактов. Экспорт в CSV, vCard 3.0, JSON или Excel.

CSV

RFC 4180, 10 столбцов, теги и соцпрофили через точку с запятой

vCard 3.0

RFC 2426, N/FN/ORG/TITLE/EMAIL/TEL/X-SOCIALPROFILE

JSON

Pretty-printed, все поля включая social_profiles и notes

Excel

XLSX через rust_xlsxwriter, лист "Contacts"

Запустите первое исследование

Запросите доступ к серверу, настройте инструменты воркера и попросите его подготовить проверяемые результаты.