AI-система для поиска и анализа кандидатов в LinkedIn: Python + Playwright + OpenAI
Практический разбор AI-платформы для автоматизированного sourcing, анализа профилей и формирования candidate shortlist в LinkedIn.
TL;DR
Мы разработали AI-платформу для автоматизированного поиска кандидатов в LinkedIn с интеллектуальной фильтрацией через OpenAI.
Система автоматически ищет кандидатов, заходит в профили, анализирует опыт и навыки, оценивает соответствие вакансии и формирует shortlist.
Web-интерфейс на FastAPI позволяет управлять поисками, просматривать результаты и работать с базой кандидатов.
Ключевые сложности: шумные профили, неоднородные форматы, лимиты LinkedIn и риск bias в принятии решений.
Ключевая идея: не просто «парсить LinkedIn», а построить полноценный AI-assisted recruitment pipeline.
Почему обычный LinkedIn sourcing перестал работать
Проблема: современный recruitment перегружен ручными действиями — даже сильный recruiter тратит часы на просмотр профилей и сортировку нерелевантных кандидатов.
Ручной sourcing
Десятки вкладок LinkedIn, сотни просмотренных профилей и бесконечный ручной screening.
Потеря времени
Часы на поиск, анализ, сортировку и повторную проверку кандидатов.
Потеря специалистов
Hiring замедляется, стоимость найма растёт, сильные кандидаты уходят к конкурентам.
Сложные сегменты
IT recruitment, массовый hiring, senior engineers, executive search и международный найм — особенно трудоёмкие процессы.
Ключевая идея: превратить LinkedIn из обычного поиска профилей в интеллектуальную систему подбора кандидатов с AI-анализом.
Architecture Pipeline
Web UI (FastAPI)
↓
LinkedIn Scraper Engine (Playwright)
↓
LinkedIn Profile Extraction
↓
OpenAI Candidate Analysis
↓
Structured Candidate Database
Такой пайплайн делает подбор воспроизводимым: каждый этап можно отлаживать отдельно и улучшать без полной переработки системы.
Как работает система
Система работает как пошаговый recruitment pipeline:
Авторизация через LinkedIn
При первом запуске пользователь проходит авторизацию, cookies сохраняются локально, поддерживается 2FA.
Поиск кандидатов
Пользователь задаёт query, критерии отбора и количество страниц. Система открывает LinkedIn Search и собирает кандидатов.
Полный анализ профилей
Система заходит в каждый профиль, извлекает About, Experience, Skills, Education, headline и карьерную историю.
AI-оценка через OpenAI
OpenAI оценивает соответствие вакансии, seniority, релевантность, потенциальные риски и вероятность match.
Интеграция с LinkedIn
LinkedIn интеграция реализована через Playwright-автоматизацию браузера Chromium. В реализации учитываются:
Cookie-авторизация
Сохранение cookies при первом login, поддержка 2FA, повторная авторизация обычно не требуется.
Поиск и сбор
Система открывает LinkedIn Search, собирает данные карточек кандидатов, удаляет дубли и сохраняет результаты.
Глубокий extraction
Заходит в каждый профиль, извлекает About, Experience, Skills, Education, headline, top skills и карьерную историю.
Управление через Web UI
FastAPI dashboard позволяет запускать scraping, управлять поисками и просматривать AI-результаты через браузер.
Типичные проблемы источника: неполные профили, разные уровни заполненности секций, ограничения LinkedIn на количество запросов.
Extraction профилей и structured data
Ключевая особенность системы — анализ не только search cards, но и полноценных страниц кандидатов.
Сложности: разная плотность описаний, частичная заполненность секций, разный уровень детализации профиля.
Search cards vs полные профили
Одних только search cards недостаточно для точного подбора кандидатов.
В production важен полный анализ профиля: experience, skills, education, career dynamics и контекст роли.
Практический подход: сначала глубокий extraction профиля, затем AI-скоринг и объяснение результата для recruiter.
AI-assisted Recruitment Pipeline
Система комбинирует browser automation, structured extraction и AI-анализ:
Browser Automation
Playwright автоматически открывает LinkedIn, выполняет поиск и собирает профили кандидатов.
Structured Extraction
Данные профилей нормализуются в единый формат для дальнейшего анализа.
AI-интерпретация
OpenAI анализирует профиль и формирует оценку соответствия с объяснением.
Готовый shortlist
Результат — рейтинг кандидатов с AI-оценкой, причинами match и рекомендациями.
Scoring / Matching Engine
Ключевой differentiator системы — AI-оценка через OpenAI, а не простой keyword matching.
Profile data: - Experience: 5 years Python - Skills: FastAPI, PostgreSQL, React - Industry: B2B SaaS - Seniority: Senior OpenAI Evaluation: Vacancy match: 85% Seniority match: 90% Industry fit: 75% Risk factors: Low
Пример AI-вывода: «Кандидат подходит: 5 лет Python, подтверждённый опыт с FastAPI и PostgreSQL, B2B SaaS background; пробел — нет данных по Kubernetes в production».
AI-слой (OpenAI)
OpenAI используется как интерпретационный слой для анализа кандидатов:
1) оценка соответствия вакансии и карьерного трека;
2) нормализация навыков и терминов из разных форматов;
3) определение seniority и релевантности опыта;
4) генерация краткого summary кандидата с рисками и рекомендациями.
Anti-bias и ограничения
AI-рекрутинг несет риски bias по полу, возрасту, компаниям и образовательным траекториям.
Практики снижения риска: исключение sensitive-признаков из scoring, прозрачные причины match, human-in-the-loop, регулярный аудит распределений рекомендаций.
Важно: система должна помогать принимать решение, а не автоматически «нанимать».
Docker / Production контур
Рекомендуемая production-схема:
FastAPI web-интерфейс, Playwright-движок для browser automation, OpenAI для AI-анализа, structured database для хранения результатов.
Разделение на сервисы важно для стабильной работы, масштабирования batch-анализа и контроля SLA.
Типичные ошибки внедрения
1) Использовать только search cards без глубокого анализа профилей.
2) Не нормализовать навыки и названия ролей из разных профилей.
3) Не делать explainability для recruiter.
4) Игнорировать лимиты LinkedIn и не добавлять rate limiting.
5) Не строить feedback loop по факту найма.
Используемый стек
Backend
Python, asyncio, FastAPI, Uvicorn.
Browser Automation
Playwright, Chromium automation.
AI Layer
OpenAI API, semantic candidate evaluation.
Метрики качества
precision@k
Доля релевантных кандидатов в верхних позициях shortlist.
time-to-hire
Насколько система сокращает время закрытия вакансии.
match accuracy
Насколько итоговый рейтинг коррелирует с экспертной оценкой recruiter/hiring manager.
Recruiter acceptance rate
Процент AI-рекомендаций, которые проходят в следующий этап отбора.
Примеры использования
Запуск поиска кандидатов
python linkedin_scraper.py "Python developer Berlin" \ --criteria "5+ лет Python, FastAPI, PostgreSQL, B2B SaaS"
Фрагмент AI-результата
{
"candidate": "John D.",
"profile_match": 85,
"skills_match": {
"matched": ["Python", "FastAPI", "PostgreSQL"],
"missing": ["Kubernetes"]
},
"seniority": "Senior",
"conclusion": "Сильный кандидат с релевантным стеком",
"risks": "Нет данных по Kubernetes в production"
}
FAQ
Это обычный scraper?
Нет. Система не просто собирает профили, а анализирует кандидатов и помогает формировать shortlist с AI-оценкой.
Используется ли AI?
Да. OpenAI анализирует опыт, навыки, стек технологий, карьерный трек и соответствие вакансии.
Можно ли искать по локациям?
Да. Поддерживается geo search и country-based sourcing.
Есть ли web-интерфейс?
Да. Реализован FastAPI dashboard для управления поиском и просмотра результатов.
Можно ли отключить AI-анализ?
Да, система поддерживает флаг --no-ai для сбора профилей без AI-оценки.
Можно ли ускорить scraping?
Да, с помощью флага --no-profile-fetch для быстрого сбора search cards без захода в каждый профиль.
Key Takeaways
1) Это AI recruitment intelligence system, а не просто scraper — полноценный pipeline от поиска до shortlist.
2) Python + Playwright + OpenAI позволяют строить масштабируемые recruitment pipelines с AI-анализом.
3) LLM-анализ даёт более качественный screening по сравнению с keyword matching.
Кому подходит
Recruitment agencies, IT recruiters, startup-командам и CTO/founders, которым нужен быстрый и качественный поиск специалистов в LinkedIn без ручного просеивания сотен профилей.
Связаться в Telegram →