Все проекты
Full-stack · коммерческий продукт Избранное2025

Платформа обогащения контактных данных

Full-stack приложение, которое извлекает и проверяет контактные данные из коллекций CMS или списков URL — выпущено коммерчески как лицензируемое Windows-приложение.

Приватный репозиторий
5 шагов
Мастер обогащения с подсказками
4
Формата экспорта (JSON / CSV / TSV / JSONL)
Лицензия
Выпущено как подписанное Windows-приложение

Технологии

  • Python
  • Flask
  • React
  • Playwright
  • Scrapling
  • Google Maps
  • SMTP
  • PyInstaller

Задача

Отделам продаж и операционным командам нужны обогащённые контактные данные — почта, телефоны, ссылки на соцсети — собранные с тысяч сайтов компаний, а также надёжный способ восполнить множество записей, у которых сайта вообще нет. Вручную это не масштабируется, а готовые инструменты не умеют аккуратно возвращать данные в существующую CMS.

Подход

Я построил бэкенд на Flask, Playwright и Scrapling с фронтендом на React. Он берёт данные из headless CMS или вставленного списка URL, извлекает почты, телефоны и ссылки на соцсети с определением языка и повторными попытками обхода, а также включает поиск сайтов через Google Maps, который запускается до обогащения и восполняет недостающие адреса. SMTP-проверка отсеивает мёртвые адреса, визуальный конструктор фильтров собирает запросы к CMS без написания JSON, а результаты выгружаются в JSON / CSV / TSV / JSONL через REST API или отправляются обратно в CMS. Весь комплекс упакован для коммерческого распространения как лицензируемое Windows-приложение с подписанной системой лицензий для каждого клиента.

Результаты

Реальный продукт, поставленный клиентам — от обхода сайтов до проверенных и выгружаемых данных. Пошаговый мастер (источник → подключение → поля → обогащение → экспорт) делает его доступным для не-разработчиков, визуальный конструктор фильтров заменяет написание запросов вручную, а слой лицензирования сделал распространение по клиентам безопасным.

Инженерные решения

  • Два источника — коллекция headless CMS (Directus) или вставленный список URL.
  • Извлекает почты, телефоны и ссылки на соцсети с определением языка и повторными попытками обхода.
  • Поиск сайтов через Google Maps (до обогащения) восполняет недостающие сайты компаний через stealth-загрузчик Scrapling.
  • SMTP-проверка почты и визуальный конструктор фильтров с перетаскиванием для запросов к CMS.
  • Упаковано для коммерческого распространения как лицензируемое Windows-приложение с системой лицензий на ключевых парах для каждого клиента (выдача / отзыв).

Скриншоты и схемы

Реальные снимки интерфейса и графики — исходный код закрыт, бренды клиентов не показаны.

Шаг 1 — выберите источник: коллекция CMS, список URL или поиск через Google Maps.
Подключение к headless CMS (Directus) — учётные данные шифруются и не хранятся.
Просмотр и подтверждение записей перед обогащением.
Обогащение в реальном времени — почты, телефоны и соцсети с прогрессом и журналом активности.
Обогащение завершено — экспорт в CSV / JSON / TSV с предпросмотром контактов.
Поиск через Google Maps восполняет недостающие сайты до обогащения.
Архитектура — React ↔ Flask ↔ Playwright / Scrapling ↔ CMS.

Подробный разбор

Комплекс намеренно разделён на этап до обогащения и этап обогащения. У многих исходных записей сайта нет вовсе, поэтому сначала поиск через Google Maps сопоставляет карточку компании с её настоящим сайтом; и только затем пайплайн обогащения обходит страницы, извлекает, проверяет и выгружает данные. Каждый этап поддерживает остановку и продолжение с живым прогрессом, а это важно, когда запуск охватывает тысячи URL.

На стороне извлечения обработчик контактов находит почты, телефоны и профили в соцсетях с определением языка и логикой повторов, а SMTP-проверка отсекает недоставляемые адреса ещё до выгрузки. Поставка в виде подписанного лицензируемого исполняемого файла для Windows — собранного через PyInstaller и защищённого системой лицензий на ключевых парах — превратила внутренний инструмент в распространяемый коммерческий продукт.