AI-агент для поиска работы: пайплайн извлечения фактов и генерации откликов | AiManual
AiManual Logo Ai / Manual.
10 Янв 2026 Гайд

Работа найдется: как заставить AI-агента проходить HR-фильтры и писать отклики, которые не пахнут AI-slop

Пошаговый пайплайн: извлечение фактов из вакансий, анализ резюме и генерация уникальных сопроводительных писем. Борьба с галлюцинациями и AI-slop.

Когда откликаешься на сотню вакансий, а HR молчит

Знакомо чувство, когда тратишь час на одно сопроводительное письмо, а в ответ – тишина? Или когда копируешь шаблон, и рекрутеры видят это за километр? Рынок труда превратился в игру на выживание, где побеждает не самый квалифицированный, а тот, кто эффективнее проходит фильтры.

Проблема в том, что современные HR-системы и сами рекрутеры научились распознавать безликий AI-slop – текст, сгенерированный нейросетью без капли души и контекста. Твоя задача – создать агента, который не просто заполняет шаблон, а проводит глубокий анализ, находит точки соприкосновения и генерирует отклики, от которых невозможно отличить человеческие.

AI-slop – это не просто плохой текст. Это предсказуемые конструкции, общие фразы, отсутствие конкретики и главное – несоответствие между твоим опытом и требованиями вакансии. Рекрутеры научились ловить это по первой же фразе.

Архитектура агента, который не тупит

Прямой промпт вроде «напиши отклик на эту вакансию» – гарантированный провал. Нейросеть начнет галлюцинировать, приписывать тебе несуществующие навыки или использовать шаблонные формулировки. Нужен многоступенчатый пайплайн, где каждый этап решает конкретную задачу.

💡
Вспомни принцип суб-агентов из нашей статьи «Как правильно использовать суб-агентов». Здесь та же логика: вместо одного перегруженного агента – несколько специалистов, которые передают друг другу очищенные данные.

1 Этап извлечения: вытащить суть из HTML-помойки

Вакансии на HH.ru, Habr Career или LinkedIn – это не чистый текст. Это слоеный пирог из HTML, CSS, JavaScript и рекламных блоков. Первый суб-агент должен превратить этот хаос в структурированные данные.

Что извлекаем Как извлекаем Ошибки, которых избегаем
Название позиции CSS-селекторы или XPath, но лучше – LLM с промптом «найди заголовок вакансии» Захватить вместе с названием компании или локацией
Ключевые требования Разбить на hard skills (технологии) и soft skills (управление, коммуникация) Спутать «желательно» с «обязательно»
Стек технологий Извлечь названия языков, фреймворков, инструментов через именованные сущности Пропустить синонимы (K8s вместо Kubernetes)
Уровень зарплаты Регулярные выражения для чисел + контекст (на руки/до вычета) Принять зарплатный диапазон за фиксированную сумму

Не используй BeautifulSoup или Scrapy как черный ящик. Настрой промпт для LLM, который будет анализировать очищенный HTML и возвращать JSON с полями: title, requirements_hard, requirements_soft, tech_stack, salary_range, company_description.

Почему LLM лучше парсеров? Потому что вакансии пишут живые люди. Они могут написать «ищем Senior Python-разработчика» в одном абзаце, а в другом – «требуется опытный питонист». Человек поймет, что это одно и то же. Парсер – нет. LLM улавливает синонимы и контекст.

2 Этап сопоставления: найти точки пересечения, а не врать

Второй суб-агент берет структурированную вакансию и твое резюме (тоже предварительно разобранное на факты). Его задача – не приписать тебе недостающие навыки, а найти реальные точки соприкосновения и сформулировать их убедительно.

  • Точное совпадение: Вакансия требует Python 5+ лет. У тебя в резюме есть «Python – 6 лет». Идеально.
  • Частичное совпадение: Нужен опыт с FastAPI. У тебя есть Django и Flask, но нет FastAPI. Агент должен отметить: «Имею глубокий опыт с веб-фреймворками Python (Django, Flask), изучение FastAPI займет минимальное время».
  • Контекстный перенос: Требуется опыт управления командой из 10 человек. У тебя был опыт руководства проектом с 5 разработчиками. Агент формулирует: «Управлял кросс-функциональной командой из 5 человек, понимаю процессы масштабирования до 10+».

Здесь критически важна система валидации. Если агент начинает галлюцинировать и приписывать тебе опыт с Kubernetes, которого у тебя нет – весь пайплайн летит в помойку. Нужны жесткие правила:

  1. Любое утверждение о твоем опыте должно иметь подтверждение в резюме.
  2. Если точного совпадения нет – использовать только частичные совпадения с пометкой «смежный опыт».
  3. Запретить фразы вроде «быстро научусь» или «интересно попробовать» – это маркеры дилетанта.
💡
Этот этап похож на Multi-Joint RAG из нашей предыдущей статьи. Агент ищет не просто ключевые слова, а смысловые связи между требованиями вакансии и твоим опытом.

3 Этап генерации: превратить факты в историю, а не в список

Теперь у нас есть два набора фактов: что нужно компании и что есть у тебя. Третий суб-агент – писатель. Его задача создать нарратив, а не перечислить пункты.

Плохой отклик:

«Здравствуйте! Я вижу, что вы ищете Python-разработчика с опытом работы 5 лет. У меня есть опыт работы 6 лет. Вы требуете знание Docker. Я знаю Docker. Также PostgreSQL. Я работал с PostgreSQL.»

Хороший отклик:

«В вашей вакансии обратило внимание на требование по оптимизации производительности Python-сервисов. На предыдущем проекте я сократил время ответа API с 200 мс до 40 мс за счет рефакторинга ORM-запросов и внедрения кэширования в Redis – это напрямую соотносится с задачей по масштабированию, которую вы упоминаете.»

Видишь разницу? Первый вариант – это AI-slop. Второй – конкретная история, которая показывает понимание задачи и подтверждает опыт цифрами.

Технические нюансы, о которых молчат в туториалах

Борьба с галлюцинациями на каждом шагу

Галлюцинации – это когда нейросеть придумывает факты. В нашем случае это смертельно. Меры противодействия:

  • Температура = 0: На этапах извлечения и сопоставления используй минимальную креативность. Нужны факты, не варианты.
  • Шаблоны ответов: Заставь LLM возвращать данные в строгом JSON-формате. Если ответ не парсится – повторяй запрос.
  • Перекрестная проверка: Первый агент извлекает стек технологий. Второй агент проверяет, действительно ли эти технологии упоминаются в тексте вакансии.

Контекстуализация вместо копирования

Рекрутеры ненавидят, когда в отклике видят дословные цитаты из их же вакансии. Агент должен перефразировать, но сохранять смысл.

Вакансия: «Ищем разработчика для создания высоконагруженного микросервиса».

Плохо: «Я готов создавать высоконагруженные микросервисы».

Хорошо: «Мой опыт по оптимизации latency в распределенных системах напрямую применим к разработке микросервисов под высокую нагрузку».

Адаптация под платформу

Отклик на HH.ru, письмо на email и сообщение в LinkedIn – это три разных формата. Агент должен это учитывать.

Платформа Длина Ключевой элемент Чего избегать
HH.ru (стандартная форма) 300-500 символов Первые два предложения – самое важное Маркированных списков (система может их сломать)
Email рекрутеру 500-800 символов Персонализация (упомяни общее знакомство или статью компании) Шаблонных фраз «уважаемый HR-менеджер»
LinkedIn InMail 200-400 символов Ссылка на общие контакты или группы Официального тона – здесь ценят неформальность

Пайплайн в действии: от вакансии до отклика за 90 секунд

Представь процесс:

  1. Ты находишь вакансию Senior Backend Developer в стартапе.
  2. Расширение браузера (часть твоего агента) захватывает HTML-страницу.
  3. Агент-экстрактор за 15 секунд вытаскивает: нужен Python, FastAPI, опыт с AWS, построение CI/CD, знание Kafka.
  4. Агент-матчер сверяет с твоим резюме: Python есть, FastAPI нет (но есть Flask), AWS есть, CI/CD есть, Kafka нет (но есть RabbitMQ).
  5. Агент-генератор получает структуру: «3 точных совпадения, 2 частичных». Создает отклик, где акцент на AWS и CI/CD (точные совпадения), а про FastAPI и Kafka – упоминание смежного опыта с аналогичными технологиями.
  6. Ты получаете готовый текст, проверяешь его на адекватность, жмешь «отправить».

Весь процесс – минута-полторы. За вечер можно разослать 30-40 персонализированных откликов, а не 5-10 шаблонных.

Важно: Этот пайплайн не заменяет тебя. Он заменяет рутину. Ты все равно должен проверять каждый отклик перед отправкой. Агент – твой помощник, а не автономный дропшиппер резюме.

Что пойдет не так (и как это пофиксить)

Проблема: агент начинает врать про твой опыт

Симптом: в откликах появляются технологии, которых нет в твоем резюме.

Решение: добавить слой валидации. Перед генерацией финального текста четвертый агент проверяет каждое утверждение о твоих навыках по исходному резюме. Если утверждение не подтверждено – отправляет на перегенерацию.

Проблема: все отклики звучат одинаково

Симптом: после 20 вакансий ты замечаешь, что агент использует одни и те же фразы.

Решение: ротировать шаблоны. Создай 5-7 различных структур откликов (история успеха, решение проблемы, культурное соответствие) и случайным образом выбирай одну для каждой вакансии.

Проблема: низкая конверсия в ответы

Симптом: отправляешь 100 откликов, получаешь 2 ответа.

Решение: начать A/B-тестирование. Раздели вакансии на две группы. Для первой группы используй стандартный пайплайн. Для второй – добавь дополнительный шаг: анализ компании (последние новости, продукты, культура) и упоминание этого в отклике. Сравни конверсию через неделю.

💡
Здесь поможет подход из статьи «Автономный агент для бенчмаркинга LLM». Создай мини-агента, который будет отслеживать конверсию твоих откликов и предлагать улучшения промптов.

Неочевидный совет: добавь элемент человечности

Самый продвинутый пайплайн будет выдавать идеальные с точки зрения логики отклики. Но люди нанимают людей, а не идеальные резюме. Добавь в конец пайплайна маленький хак.

Перед отправкой позволь агенту добавить одну неформальную фразу, основанную на анализе компании. Например:

  • «Кстати, видел ваш последний продукт на TechCrunch – впечатляющая архитектура.»
  • «Заметил, что в вашем блоге пишут про event-driven архитектуру – как раз мой профиль.»
  • «У вас в команде работает Иван Петров – мы пересекались на конференции в прошлом году.»

Эта одна фраза увеличит конверсию на 20-30%. Потому что покажет, что ты не просто рассылаешь шаблоны, а действительно заинтересован в этой конкретной компании.

Создание такого агента – это не разовый скрипт. Это живая система, которую нужно постоянно улучшать. Анализируй ответы рекрутеров, смотри, на какие отклики реагируют, а на какие – нет, и дорабатывай промпты.

И помни: лучший агент не тот, который пишет за тебя. А тот, который позволяет тебе тратить время на собеседования, а не на заполнение форм.