
Пошук нової роботи часто перетворюється на монотонну рутину: розробникам доводиться щодня переглядати сотні оголошень на різних платформах, відсіювати нерелевантні пропозиції, формувати супровідні листи та відстежувати статуси співбесід. Із цією проблемою зіткнувся Software Engineer Євген Ляшенко, коли вирішив розглянути нові вакансії та проєкти на QA Automation / SDET ролі.
Щоб оптимізувати цей процес, Євген розробив власну систему JobRadar — персональний локальний інструмент, який збирає вакансії з кількох джерел, дедуплікує їх, фільтрує, оцінює за допомогою LLM на відповідність резюме та відображає в єдиній стрічці.
«Кожен, хто шукав роботу, знає цю доволі невеселу рутину: сидиш передивляєшся вакансії, вичитуєш, ухвалюєш рішення, чи цікаво чи ні, формуєш cover letters, трекаєш, в якому статусі діалог із представниками компанії… З часом перестаєш розуміти, чи вже бачив якусь вакансію, чи відгукувався, коли це було, на чому зупинився, що про себе розказував», — ділиться Євген Ляшенко у LinkedIn.
Як працює JobRadar: від збору до Telegram
Архітектурно інструмент побудований за ланцюжком: джерела (DOU та Djinni тощо) → дедуплікація → L0-фільтр → LLM-скоринг на відповідність профілю → сповіщення в Telegram → рендер у web. Інженерний стек проєкту включає також Playwright і pytest автотести

Головні технологічні рішення та можливості інструменту
-
Двоступеневий фільтр для економії токенів: на етапі L0 працює дешевий детермінований фільтр на регулярних виразах. Він відсікає завідомо неактуальні рівні, тайтли, релокейт та вакансії із зарплатою нижче вказаного порогу. На оцінку нейромережею відправляються лише ті пропозиції, які пройшли первинну перевірку.
-
Глибокий скоринг та «межі» профілю: система формує не просто загальний бал відносно резюме, а розгорнуту матрицю (strong, gap, partial). Крім CV, у профілі є блок «меж» (наприклад, «Python — не робоча мова» або «Playwright — це ownership, а не щоденний hands-on»), які модель зобовʼязана трактувати як суворий gap. Це робить оцінку значно точною.
-
Розумне створення профілю: стек не потрібно вписувати вручну — достатньо вставити текст CV. JobRadar сам підсвічує та групує технології, визначає рівень (Senior/Middle тощо) за першими згадками й роками досвіду, після чого дозволяє відвалідувати або додати скіли.
-
Дедуплікація та пам’ять: кожна вакансія має свій унікальний відбиток. Якщо одна й та сама позиція опублікована на DOU та Djinni, система склеює їх в одну картку. Якщо ж вакансія зникає і відкривається знову через понад 180 днів, радар повертає її як нову.
-
Дворівневий пошук: пошукова логіка розділена: «Роль» збирає широкі стрічки ринку, а поле «Stack» створює додаткові вузькі запити (наприклад, під Playwright чи pytest), щоб дістати те, що втрачається через ліміти видачі на платформах.
-
Повний контроль та локальність: інструмент працює на власному API-ключі користувача (Anthropic, OpenAI або локальна Ollama). Всі дані, база та Telegram-токени зберігаються виключно на локальній машині.
- Зручний інтерфейс та трекінг: у веб-інтерфейсі доступні система статусів (new, applied, pre-screen, tech тощо), календар відгуків, аналітика популярних ринкових скілів, генератор супровідних листів та лог опрацювань. Також реалізовано самоконтроль радара: якщо за N годин не з’явилося нових вакансій, розробник отримує сповіщення в Telegram про можливе падіння парсера.

Пошук тестувальників для розширення функціоналу
Наразі JobRadar оптимізований під ролі QA, QA Automation, Front-end та Back-end рівнів Junior, Middle та Senior.
«Для розширення ролей, які підтримує інструмент, потрібні тестувальники — люди, яким цікаво спробувати інструмент і перевірити, як він відпрацьовує на інших ролях, стеку чи технологіях», — зазначає Євген.
Інструмент працює локально і доступний на GitHub.
