Как мы устали искать работу руками, создали AI-агента на Python + Gemini, который реверс-инжинирит выдачу вакансий и «допрашивает» пользователя, чтобы улучшить резюме. Релиз версии 2.0 сегодня в 18:00.
Привет, Хабр! На связи команда стартапа Аврора.
В нашей команде объединились экспертиза IT-рекрутмента и Python-разработка. И нас, как и вас, достал современный найм.
В 2025 году поиск работы превратился во вторую работу. Бесконечный думскроллинг, фильтры HH, которые показывают сеньору вакансии стажеров, и "немые" отказы. Мы решили, что эту рутину должен делать искусственный интеллект.
Сегодня, 8 декабря, ровно в 18:00 мы релизим версию 2.0 нашего AI-агента. Ниже - рассказ о том, как мы заставили нейросеть «пытать» кандидата вопросами, чтобы вытащить цифры для резюме, как построили снайперский поиск вакансий и почему отказались от Redis в пользу чистого SQL.
Проблема №1: Почему Сеньор видит вакансии Джунов (и курсы Python)
Главная боль любого соискателя — нерелевантная выдача.
Алгоритм HH по запросу "Python Developer" часто ищет вхождение слов везде: в описании стека, в разделе "плюшки", в описании компании.
В итоге в ленте оказывается:
Python Tech Lead (Ок).
Стажер Python (Мусор, если ты сеньор).
Преподаватель курсов Python (Мусор).
HR-менеджер (в тексте было "ищем в Python-команду") (Мусор).
Обычный пользователь крутит фильтры зарплаты, но это помогает слабо. Продвинутый знает про Boolean Search (язык логических запросов), но писать вручную с телефона конструкции на 300 символов с кучей скобок AND/OR/NOT — это ад UX.
Наше решение: Reverse Engineering рынка (Smart Profile)
Мы решили не спрашивать пользователя, что он ищет. Мы решили показать ему, из чего состоит рынок под его резюме, и дать выбрать.
Как работает наш «Снайперский поиск»:
Data Mining: Аврора берет
resume_idи забирает через API 300-400 "сырых" вакансий, которые алгоритм площадки считает подходящими.-
AI-Кластеризация (Gemini Flash):
Мы скармливаем заголовки этих вакансий в LLM с температурой 0.0 (чтобы убрать галлюцинации). Нейросеть группирует этот хаос.
Она понимает: QA Auto и QA Manual — это разные кнопки. Java Senior и Java Junior — разные вселенные.
-
Интерфейс в Telegram: Пользователь получает клавиатуру с "облаком тегов". Вы просто кликаете:
[✅ QA Manual (Mid)] [❌ QA Auto] [❌ Team Lead]
-
Компилятор запроса (The Magic):
Самое интересное. На основе ваших кликов мы генерируем не просто список ключевых слов. Агент собирает сложнейшую логическую формулу (Boolean Query).
Алгоритм жестко прописывает, где именно искать вхождение (только в заголовке или в скиллах) и какие слова "минусовать" агрессивно. Если вы выбрали "Manual QA", система автоматически добавит в исключения Automation, Java, Selenium (если они не выбраны явно).
Результат: Агент отсекает 90% шума. Вы видите только то, что реально подходит.
Проблема №2: "У меня есть опыт, но я не умею о нем писать"
Все знают совет: "Пиши в резюме цифры и достижения".
Но когда садишься писать, получается: "Занимался разработкой бэкенда, писал тесты, фиксил баги". Это слабое описание, которое ATS-системы и рекрутеры пролистывают.
А еще есть страх: "Если я отдам резюме нейросети, она придумает, что я работал в NASA".
Наше решение: AI-Интервьюер и методология STAR
Мы реализовали паттерн "Интервью, а не рерайт". Мы не просим нейросеть "сделать красиво" из пустоты. Мы заставляем её работать как въедливого карьерного консультанта.
Как это выглядит для пользователя:
-
Gap Analysis (Поиск дыр):
Ассистент читает ваше текущее резюме. Он видит строку: "Оптимизировал SQL запросы".
Для системы это триггер: здесь не хватает контекста.
-
Допрос (Interrogation Mode):
Аврора приходит к вам в личку и задает конкретные вопросы:
"Ты пишешь, что оптимизировал запросы. На сколько ускорилась выборка? Было 5 секунд, стало 0.5? Или ты сэкономил место на диске? Какие инструменты использовал (Explain, Indexing)?"
-
Синтез (STAR Method):
Вы отвечает�� в чате (текстом). Можно писать коротко и по фактам — "мясо" нарастит нейросеть.
Агент берет ваш старый опыт + ваши новые ответы и переписывает блок по формуле STAR (Situation -> Task -> Action -> Result).
Было: "Оптимизировал SQL запросы."
Стало: "Провел рефакторинг медленных SQL-запросов (PostgreSQL), используя анализ Explain Analyze. Результат: ускорил формирование отчетов с 30 секунд до 2 секунд и снизил нагрузку на CPU на 40%."
-
Безопасность (Immutable Source):
Мы никогда не редактируем ваше основное резюме. Скрипт создает скрытую копию-черновик на HH.
Вы получаете ссылку. Нравится — публикуете одной кнопкой. Не нравится — удаляете. Риск равен нулю.
Технический стек: Back to Basics
Мы делаем стартап, а не тренируем навыки девопса. Поэтому никаких Kubernetes и микросервисов. Честный асинхронный монолит.
Язык: Python 3.11
Фреймворк: Aiogram 3.x.
БД: PostgreSQL + asyncpg.
LLM: Google Gemini (Flash для быстрых задач, Pro для текстов).
Почему мы выкинули Redis?
Для очередей задач (рассылка откликов, парсинг) обычно ставят Celery + Redis. Но это лишняя инфраструктура.
Мы используем возможности Postgres: SELECT ... FOR UPDATE SKIP LOCKED.
SQL
UPDATE tasks
SET status = 'processing', updated_at = NOW()
WHERE id = (
SELECT id
FROM tasks
WHERE status = 'pending'
ORDER BY priority DESC, created_at ASC
FOR UPDATE SKIP LOCKED
LIMIT 1
)
RETURNING *;
Это позволяет использовать таблицу Postgres как надежный брокер сообщений. Атомарность гарантирована базой, деплой упрощается в разы, оперативной памяти потребляется меньше. Для нашей нагрузки — идеальное решение.
Building in Public: Статус и планы
Мы не продаем "успешный успех". Мы продаем математику воронки найма.
Чтобы найти работу в конце 2025 года, нужно пробивать ATS-фильтры и делать много релевантных откликов. Аврора забирает эту рутину.
Наши цифры перед запуском v2.0:
Пользователи: 104 (MVP).
Отклики: >2000 отправлено системой.
Результат: 1 подтвержденный оффер и десятки приглашений на интервью.
Очередь: ~750 человек в листе ожидания.
Релиз v2.0 — сегодня в 18:00.
Мы открываем доступ к "умным фильтрам" и AI-интервьюеру. Если вам интересно потыкать архитектуру, о которой мы рассказали, и проверить, как Gemini «прожарит» ваше резюме — присоединяйтесь.
Триал бесплатный (3 дня), карту не просим. Нам сейчас важнее всего ваша обратная связь по качеству поиска.
Будем рады ответить на технические вопросы в комментариях. Особенно про боль с документацией HH API — там есть о чем поговорить.