LIVEПет-проект · работает с июля 2026

Бот, который ищет мне работу, пока я сплю

Каждые 15 минут он обходит десятки тысяч карьерных страниц компаний и LinkedIn, читает каждую подходящую вакансию, оценивает её по моему резюме с помощью нейросети и присылает в Telegram только те, на которые действительно стоит откликнуться.

0
карточек вакансий просмотрено*
→
0
вакансий прислано мне в Telegram

* с 31 августа, когда появился учёт по каждому опросу; одну и ту же вакансию бот видит много раз.

jobbotбот
09:41
91
Откликаться
Senior Product Manager
Northwind · Remote, EU
  • ✓Домен совпадает с опытом: travel-tech
  • ✓Удалёнка по ЕС — подходит
  • ✓Уровень и масштаб роли — в цель
  • ?Уточнить: часовой пояс команды
Открыть вакансию ↗

Пример уведомления · вакансия вымышленная

Вся суть

Миллион вакансий на входе — единицы на выходе

Каждая точка — вакансия. Повторы склеиваются, правила и две ступени ИИ отсеивают лишнее, а до Telegram долетает примерно одна карточка из 1 700.

симуляция воронки
0карточек просмотрено
0уникальных вакансий
0прошли правила
0оценены ИИ
0прислано в Telegram
0

дней работает без остановки

0

карьерная страница компаний под наблюдением — от стартапов на Ashby до корпораций на Workday

0

уникальных вакансий в базе от 12 016 разных компаний

0

источника: LinkedIn, Workday, Greenhouse, Ashby, Lever, SmartRecruiters…

~9 в день

хороших вакансий вместо сотен — каждая с объяснением, почему подходит

01Как это работает

Конвейер из семи шагов

Вакансия проходит через сито: сначала дешёвые и быстрые правила, потом всё более «умные» и дорогие проверки. До нейросети доходит меньше одной вакансии из десяти.

01

Сбор

Бот опрашивает LinkedIn и публичные карьерные страницы компаний (системы найма Workday, Greenhouse, Ashby, Lever и ещё 15 других). Большие списки компаний обходятся по очереди: тихие страницы — реже, активные — чаще.

02

Фильтр-правила

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

03

Полное описание

Для выживших бот скачивает полный текст вакансии и прогоняет фильтры второй раз — теперь уже по описанию, а не только по заголовку.

04

Склейка дублей

Одна и та же вакансия часто висит в пяти городах и на трёх сайтах. Бот находит такие «семьи» по тексту и оценивает каждую только один раз.

05

Быстрая сортировкаAI

Дешёвая модель за секунды решает «оставить / выбросить». Это отсекает ещё ~3 из 4 вакансий, не тратя деньги на подробный разбор.

06

Подробная оценкаAI

Сильная модель сравнивает вакансию с моим профилем по рубрике: роль, уровень, домен, география, формат. Ставит балл 0–100 и вердикт: «откликаться», «уточнить», «пропустить». Спорную географию перепроверяет вторая модель.

07

Telegram и таблица

Лучшее прилетает в Telegram с объяснением, почему вакансия подходит. Всё остальное складывается в Google-таблицу, раз в день приходит сводка.

02Откуда бот знает 67 тысяч компаний

Охота за «слагами»

У каждой компании в системе найма есть короткое имя — «слаг». Узнал слаг — получил прямой доступ ко всем вакансиям компании, раньше и полнее, чем на LinkedIn. Общего списка ни у кого нет, поэтому бот собирает его сам, как детектив.

Архив интернета

Common Crawl — ежемесячный снимок миллиардов веб-страниц. Бот ищет в нём все когда-либо встречавшиеся адреса вида jobs.lever.co/… и вытаскивает имена компаний.

Журналы сертификатов

Каждый HTTPS-сертификат публично регистрируется. Поддомены вроде acme.recruitee.com выдают компанию ещё до того, как её страницу кто-то проиндексирует.

Открытые каталоги

Чужие базы слагов, список компаний Y Combinator, агрегаторы. Доверять им нельзя: в одном каталоге Workday 46% записей оказались битыми — каждую проверяем вживую.

Работодатели из LinkedIn

Видишь компанию на LinkedIn — угадай её слаг (acme, acmehq, acme-inc…) и проверь. Засчитывается, только если сама система найма называет компанию так же.

живая проверка · каждая клетка — слаг

Каждого кандидата бот проверяет вживую

живые, с вакансиями27 362 пустые15 312 мёртвые (404)55 840 ошибка / блок2 010
0

кандидатов-слагов собрано из всех источников

0

оказались мёртвыми (страница 404) — отсеяны проверкой

0

живых досок с открытыми вакансиями прямо сейчас

0

угадываний по LinkedIn попадают в цель: 1 525 из 50 005

Как обойти 67 тысяч страниц и никого не задолбать

Каждый цикл бот берёт небольшую порцию досок — сначала те, что давно не проверялись. Доска без вакансий опрашивается всё реже:

6 ч
→
12 ч
→
сутки
→
двое суток
·
404 ×2 → раз в 14 дней

Две «404» подряд — доска помечается надгробием и перепроверяется раз в две недели: вдруг компания снова начнёт нанимать. Пустые доски тоже перепроверяются — однажды так нашлось сразу 153 доски, которые снова начали нанимать.

03Playwright

Где скрипт не пускают — настоящий браузер

Некоторые площадки отвечают обычному HTTP-запросу ошибкой 429 и проверкой на JavaScript. Для них бот открывает страницы в Chromium без окна через Playwright.

тот же IP, та же минута

      
01Бот
→
02Chromium без окна
→
03JS-проверка пройдена
→
04Cookie сохранена
→
200 OK · вакансии

Так же: hiring.cafe и Wellfound за Cloudflare.

0

опросов заблокировано за 4 дня до перехода

0

блокировок после перехода на браузер (с 14 октября)

0

новых вакансий с этой площадки с тех пор

04Воронка

Из 1,65 миллиона — 968

Каждый этап отрезает большую часть. Шкала логарифмическая, иначе последние ступени было бы не разглядеть.

Таблица
05Почему отсеивается

Главные причины отказа на этапе правил

Число вакансий, отброшенных каждым правилом (у одной вакансии может быть несколько причин).

06Источники

Где больше всего шума, а где — золото

Workday приносит почти половину всех вакансий, но лишь 0,2% из них доходят до Telegram. Маленькие стартаповые системы найма (Ashby, Greenhouse) — в 50 раз «точнее».

найдено вакансийприслано в Telegram% — доля дошедших
Таблица
07Анатомия оценки

ИИ оценивает, код считает

Нейросеть не ставит итоговый балл сама. Она лишь оценивает каждое требование вакансии по шкале 0–1–2 и пять критериев «хорошей работы». Всю арифметику, пороги и вердикт считает обычный код: когда считала сама модель, в 20% случаев её балл противоречил её же правилам.

пример · вакансии вымышленные
 
 
Требования · вес × оценка
    соответствие = Σ(в·о) / 2Σв—
    Привлекательность · 5 критериев
      привлекательность = Σ / 10—
      Вердикт · считает код
      0

      Все оценённые вакансии на одной карте

      2 735 вакансий, оценённых по текущей рубрике. Две из трёх упираются в стоп-фактор — чаще всего географию, — даже при высоком соответствии.

      08Ритм

      Когда появляются хорошие вакансии

      По вакансиям, которые бот прислал в Telegram.

      0

      медиана от момента, когда бот впервые увидел вакансию, до сообщения в Telegram

      0

      приходят быстрее чем за полчаса, 89% — за два часа

      0

      реже публикуют хорошие вакансии в выходной день, чем в будний

      День публикации

      Час публикации, CET

      Только вакансии с точным временем публикации (476). Пик — с 15 до 18.

      Отрасли

      Грубая группировка по отрасли, которую называет ИИ; одна вакансия — одна группа.

      Прислано по месяцам

      Июль — неполный месяц (с 13-го).

      Формат работы

      09Под капотом

      Скромно, но надёжно

      0

      строк Python

      0

      автотест

      0

      сторонних библиотек в ядре · ~400 коммитов

      Принципы

      Один процесс, одна база SQLite, только стандартная библиотека Python. Никаких серверов и очередей.

      Любой сбой — локальный: упал один источник, остальные работают. Если сайт просит притормозить, бот уважает паузу.

      Сомнение трактуется в пользу вакансии: правила режут только при явных признаках, остальное решает ИИ.

      Python 3.12SQLiteDeepSeekGrokClaudePlaywrightTelegram Bot APIGoogle Sheets