Ви витрачаєте 30 хвилин щодня на ручний пошук на cv.lv, ss.com, cvmarket.lv, NVA та інших сайтах. Припиніть. Я написав Telegram-ботаvakances_bot.py — який автоматично перевіряє всі 6 основних латвійських сайтів вакансій, зіставляє нові вакансії в Ризі з вашим резюме й щоранку надсилає у Telegram лише потрібні вакансії. У цій статті я розберу код, як він працює й чому бот для пошуку роботи — це те саме, що робить рекрутер, але за €60, а не за 20% від зарплати.

Це розбір реальної працюючої системи, без маркетингу. Python-бот збирає вакансії в Латвії за графіком, зберігає в PostgreSQL і дає простий Telegram-інтерфейс. Одне натискання — «відгукнувся», «в обране» чи «співбесіда». Шукаєте роботу в Ризі зараз? Гляньте /vakances. Будуєте для компанії? Код усередині.

⚡ Ви отримуєте:

  • Час: З 30 хвилин на день до 4 хвилин — автоматично, щодня вранці
  • Рівень: Telegram-бот (vakances_bot.py), який збирає вакансії з 6 сайтів Латвії
  • Setup: Завантажте резюме, 60 секунд налаштування, перші результати за 5 хвилин
  • Вартість: €5–15/місяць хостинг або €60 індивідуальна версія для компанії
  • Сайти: cv.lv, ss.com, cvmarket.lv, liepajniekiem.lv, портал NVA, prakse.lv
Робота в Ризі - Telegram-бот для пошуку роботи показує вакансії з 6 латвійських сайтів
Бот vakances у Telegram: один чат, який стежить за всіма сайтами вакансій Латвії за вас

Перш ніж перейти до коду, одне чесне зауваження. Цей бот — реальний проєкт, і цифри в статті (кількість вакансій за категоріями, зарплати, розподіл за містами) змінюються щодня: компанії публікують і закривають оголошення. Приблизні цифри тут потрібні, щоб показати загальну картину латвійського ринку праці.

Що ви дізнаєтесь із цієї статті:

  • Чому ручний пошук роботи в Ризі сам по собі перетворюється на роботу на півставки
  • Як vakances_bot.py збирає вакансії з 6 латвійських сайтів і тримає базу в чистоті
  • Як працює оцінка відповідності резюме та вакансії — прозорий збіг ключових слів, без чорної скриньки
  • Усі команди Telegram: від /upload_cv до /vakances та /export
  • Що огляд ринку /vakances говорить про професії в Латвії
  • Повний технологічний стек, щоб зібрати свою версію з нуля

Чому варто обрати Telegram-бота для пошуку роботи?

  • Один чат покриває cv.lv, ss.com, cvmarket, NVA та prakse.lv — без стрибків по вкладках
  • Кожна вакансія оцінюється за вашим резюме: ви бачите збіги, а не шум
  • 6 списків статусів замість таблиць: обране, до відправлення, відгуки, співбесіди…
  • Фільтри за містом, зарплатою та віддаленою роботою під ваше життя
  • Працює на телефоні, в кишені, щоранку о 9:00

Швидка навігація:

Проблема: пошук роботи в Ризі перетворюється на роботу на півставки

Погляньмо чесно, як виглядає пошук роботи в Ризі в 2026 році. У понеділок уранці ви відкриваєте ss.com, одразу переходите у свою категорію, гортаєте свіжі оголошення — можливо, одне чіпляє око, і ви відгукуєтесь. Потім відкриваєте інший портал, переглядаєте його й надсилаєте ще пару резюме. На цьому день можна завершувати. У вівторок відкриваєте третій сайт, потім четвертий, а може, повертаєтесь до вже переглянутих. За пару годин ви надіслали ще 3–10 резюме й прокрутили більше сотні вакансій — і ви втомлені.

У середу приходять три відмови та три «ми вам передзвонимо». Ви знову відкриваєте портали — і нові вакансії виглядають старими, а старі — новими. Ви точно знаєте, що витрачаєте час на сторінки, які вже бачили. І все ж час від часу трапляється пропозиція, яку ви якимось чином пропустили. Весь цей хаос живе у вас у голові.

А тепер неприємна арифметика. На шести основних порталах — cv.lv, ss.com, cvmarket.lv, державному порталі NVA, liepajniekiem.lv та prakse.lv — просто зараз відкрито понад 15 000 вакансій (15 548 станом на 18 серпня 2026 року). Ретельний ручний обхід усіх шести займає від 30 до 45 хвилин на день. За місяць це 10–15 годин чистого фільтрування: читання, порівняння, спроби згадати, яким компаніям ви вже писали, і повторне читання однієї й тієї ж вакансії, переопублікованої на іншому сайті. Це вже не пошук роботи. Це канцелярщина.

І найприкріше: найкращі вакансії — ті, де зарплата справді відповідає вашому досвіду, — найчастіше ви й упускаєте, бо їх опублікували у вівторок о 14:00, поки ви були на роботі, а до вечора середи там уже 40 відгуків.

Альтернатива, яку я хочу показати: Telegram-бот для пошуку роботи, який робить усю перевірку за вас. Він прокидається раніше за вас, обходить усі шість сайтів, забирає кожну нову вакансію, оцінює її відносно вашого резюме й залишає в чаті акуратний звіт. Ви переглядаєте збіги й пропускаєте нецікаве — назавжди, щоб більше ніколи його не бачити. Усе цікаве, надіслане та відхилене автоматично відстежується серед цих 15 000+ вакансій. Пошук, фільтри, режим «тільки категорія», списки винятків — усе це в парі натискань, а не в кількох годинах перемикання вкладок.

Що таке vakances_bot.py? Знайомтеся: Telegram-бот для пошуку роботи

vakances_bot.py — це Python-бот для Telegram, окремий процес від адміністративного бота, що збирає дані, але з тією самою базою PostgreSQL. Простіше кажучи, це сторона шукача системи збору вакансій. Збір даних (шість скрейперів під кожен сайт плюс пайплайн) наповнює базу вакансіями, а бот vakances перетворює ці сирі дані на персонального асистента з пошуку роботи прямо в Telegram.

Привітальне повідомлення /start Telegram-бота з командами для пошуку роботи в Ризі
Повідомлення /start: завантажте резюме, перегляньте збіги, відкрийте /vakances, шукайте через find

Ось що робить бот, одним подихом:

  • Збирає 6 сайтів за розкладомcv.lv, ss.com, cvmarket.lv, liepajniekiem.lv, cvvp.nva.gov.lv (державний портал NVA) та prakse.lv (стажування).
  • Читає ваше резюмеPDF або DOCX. Виймає текст, визначає категорію професії та ключові навички.
  • Зіставляє кожну нову вакансію з вашим резюмепрозора оцінка від 0 до 100 на основі збігу ключових слів і категорії. Ви бачите причину, а не загадковий відсоток.
  • Веде ваш пошукобране, до відправлення, відгуки, співбесіди, відмови: вісім списків, одне натискання на кожен.
  • Показує ринок/vakances видає всі активні вакансії, згруповані за професіями з кількістю, — одразу видно, де реально є попит.
  • Фільтрує як рекрутермісто, мінімальна зарплата, лише віддалена робота, виключені ключові слова, мінімальний бал збігу.

Якщо ви роботодавець або стартап — та сама архітектура пропонується як послуга розробки індивідуального Telegram-бота від €60: збір даних, зіставлення, сповіщення — усе, що потрібно вашому процесу.

Як це працює: від завантаження резюме до щоденного списку збігів

Крок 1: завантажте резюме один раз

Надішліть /upload_cv і прикріпіть резюме у форматі PDF або DOCX. Бот завантажить файл, витягне текст за допомогою pdfplumber (PDF) або python-docx (Word) і збереже ваш профіль у базі. Якщо PDF виявиться сканом без текстового шару, бот прямо про це скаже й запропонує текстовий експорт — без тихих помилок.

Крок 2: автоматична розмітка

Щойно текст витягнуто, бот розмічає резюме двома речами: категорією (ваша професія, наприклад «Programmēšana» або «Finanses un grāmatvedība») та списком ключових слів (ваші навички, наприклад Python, Django, PostgreSQL). Те саме завдання кожні 30 хвилин у фоні обробляє нові вакансії, тож кожен запис у базі теж отримує категорію та ключові слова. Для зіставлення потрібно, щоб обидві сторони були розмічені. А якщо теги здаються неточними, їх можна виправити за пару команд: /cv_list → Edit.

Крок 3: миттєве зіставлення + щоденний повтор

У момент розмітки бот оцінює резюме за всіма ще не переглянутими вакансіями й повідомляє, скільки збігів знайшлося. Потім щоранку о 09:00 за ризьким часом планувальник повторно проганяє зіставлення по всьому новому, а о 09:30 надсилає добірку всім, у кого ввімкнені сповіщення:

📬 Щоденна добірка:

«Щоденна добірка: у вас 7 нових відповідних вакансій! Скористайтеся /review, щоб переглянути їх.»

Крок 4: пайплайн стежить за чесністю бази

Збір даних — це не просто «завантажити сторінку». Кожен запуск порівнює те, що сайт показує зараз, з тим, що вже є в базі. Зниклі з сайту вакансії позначаються видаленими; ті, що повернулися, — відновлюються. Кожен запуск записує результати по кожному сайту в таблицю scrape_results, яку й показує /status — одразу видно, чи встигає бот за кожним із шести порталів.

6 сайтів вакансій, які перевіряє бот — і чому важливий кожен

Ринок праці Латвії розмазаний по кількох порталах, і в кожного свій характер. Саме тому скрейпер справді корисний: ви отримуєте все в одному місці, без дублікатів — база ключує вакансії за унікальним посиланням.

Сайти вакансій, які збирає vakances_bot.py — 15 548 активних вакансій (знімок від 18 серпня 2026)
Сайт Що це Активних вакансій Частка
ss.com Велика дошка оголошень із великим розділом «Darbi» 6,412 41%
cvvp.nva.gov.lv Публічний портал вакансій Державного агентства зайнятості (NVA) 4,442 29%
cv.lv Найбільший латвійський портал вакансій — тут публікується майже кожен роботодавець 2,228 14%
cvmarket.lv Невеликий портал, орієнтований на конкретні галузі 2,017 13%
liepajniekiem.lv Регіональний сайт, найсильніший у Курземе та Лієпаї 274 2%
prakse.lv Стажування та студентські позиції 175 1%

Пара спостережень із реального експорту. На один ss.com припадає 41% ринку, і там повно оголошень, які ніколи не потрапляють на cv.lv, — тому скрейпити лише «головний» портал означає втрачати майже половину вакансій. Державний портал NVA (cvvp.nva.gov.lv) — друге за величиною джерело, 29%: він читається через власний JSON API сайту, і саме там живуть оголошення зареєстрованих і державних роботодавців. cv.lv і cvmarket.lv разом додають ще 27%. На регіональні та студентські сайти припадає лише близько 3% — але для людини в Лієпаї чи для студента ці 3% і є весь сенс.

Скрейпери навмисно ввічливі: випадкові затримки 2–5 секунд між запитами, справжній User-Agent браузера та жорсткий ліміт сторінок. NVA та prakse.lv збираються через їхні власні публічні JSON-ендпоінти — ті самі запити, що робить їхній сайт, — це швидше та надійніше, ніж розбирати HTML.

Повний довідник команд: ваш пульт керування пошуком роботи

Ось повна карта команд бота vakances. Щодня всі вони не потрібні — більшість живе у /review, /vakances та find, — але знання повного набору перетворює бота з іграшки на систему.

Усі команди vakances_bot.py
Команда Що робить
/start Привітальне меню з головним сценарієм: резюме, перегляд, vakances, пошук, нещодавні
/upload_cv Завантажити резюме PDF/DOCX — воно одразу розмічається та зіставляється
/cv_list Список ваших резюме: активувати, деактивувати, редагувати теги, завантажити, видалити
/review Обрати категорію та переглядати збіги по одній вакансії
find <запит> Пошук вакансій за назвою на всіх сайтах (наприклад, find Python, find Rimi)
/recent Останні 50 вакансій, опублікованих за останні 24 години
/vakances Усі активні вакансії, згруповані за професіями з кількістю, — огляд ринку
/status Статус збору за сайтами: кількість по порталах, підсумки, час наступного зіставлення
/stats Ваш особистий процес: обране, до відправлення, відгуки, співбесіди, відмови
/saved Усі збережені вакансії з усіх списків
/pending Ще не переглянуті збіги, спершу кращі за балом
/wishlist, /to_send, /applied, /to_interview, /rejected, /skipped Доступ до кожного списку статусів одним натисканням
/location Задати одне або кілька міст: /location Rīga, Liepāja, Jelgava
/locations Топ-40 локацій із кількістю вакансій — де робота є насправді
/settings Сортування, сповіщення, мінімальний бал, показ переглянутих, лише віддаленка, зарплата
/export Завантажити відстежувані вакансії в Excel, згруповані за резюме
/xls Завантажити всю базу вакансій і компаній в Excel
/log, /logs Завантажити сьогоднішні або останні логи бота — зручно для налагодження
/help Повна інструкція з командами, завжди в одному повідомленні

І одна прихована можливість: будь-яке повідомлення, що починається з show N (наприклад, show 25), відкриває вакансії категорії під цим номером зі списку /vakances. Бот підказує це після кожного огляду ринку — це найшвидший шлях від питання «скільки вакансій?» до «покажіть самі вакансії».

Вакансії в Латвії за професіями - огляд ринку в Telegram-боті з кількістю за категоріями
Вивід /vakances: усі активні вакансії Латвії, згруповані за професіями з кількістю

Як працює зіставлення: прозора оцінка без чорної скриньки

Поговорімо про серце бота — і заразом розвіємо один міф. Багато «розумних доборів вакансій» продають загадковий алгоритм. Цей бот влаштований навпаки: оцінка — це коротка читабельна функція на Python, яку можна скопіювати в notebook і перевірити вручну.

Оцінка вакансії складається з двох частин:

  • Збіг ключових слів (до 80 балів)скільки ключових слів вакансії зустрічається в ключових словах вашого резюме. Використовується перетин у стилі Jaccard: перетин ÷ ключові слова вакансії.
  • Бонус за категорію (20 балів)якщо категорія вашого резюме точно збігається з категорією вакансії (без урахування регістру), ви отримуєте всі 20.
  • Запасний пошук за назвоюякщо за ключовими словами нічого не знайшлося, бот усе одно чіпляє вакансії, у назві яких є ваші ключові слова (наприклад, «Python» у «Python Developer»).

Розберімо три реальні приклади, щоб оцінка перестала бути абстракцією:

Як рахуються бали збігу (резюме: Python Developer, ключові слова: python, django, postgresql)
Вакансія Ключові слова вакансії Збіг Категорія? Бал
Backend Developer (Python) python, django, postgresql, git 3/4 → 75 ✅ +20 95
Full-stack JS Developer javascript, react, node.js 0/3 → 0 ❌ +0 0 (ігнорується)
Python Data Analyst python, sql, excel 1/3 → 33 ❌ +0 33
Django Developer (пошук за назвою) ще не розмічено назва містить «django» 30 (запасний)

Чому оцінка саме така, а не хитромудріша? Три причини. Вона швидка — зіставлення сотень вакансій займає секунди на чистому Python, без зовнішніх викликів. Вона пояснювальна — у кожного бала видима причина, яку можна прочитати та перевірити. І вона керована — свій мінімальний поріг задається в /settings (30, 50, 70 або 90), тож режим «тільки сильні збіги» вмикається одним натисканням.

/vakances: ринок праці Латвії одним поглядом (за професіями)

Тепер найцікавіше. /vakances перетворює всю базу на звіт про ринок: кожна активна вакансія в Латвії, згрупована за професіями та відсортована за попитом. Бот веде словник із 41 категорії професій — від Pārdošana (продажі) та Ražošana (виробництво) до Programmēšana (програмування), Medicīna, Loģistika та Noliktavas (склади) — і кожна вакансія отримує один або кілька таких тегів.

Ось як виглядає типовий вивід — реальні цифри з експорту від 18 серпня 2026 року, 15 548 вакансій. SQL під таблицею дозволить отримати актуальні дані в будь-який день:

Вакансії в Латвії за професіями — 15 548 активних вакансій (18 серпня 2026)
ID Категорія (професія) Вакансій Частка ринку
04 Vadība un menedžments (управління) 2,430 15.6%
01 Pārdošana (продажі) 2,168 13.9%
41 Інше (без категорії / змішане) 2,023 13.0%
05 Būvniecība (будівництво) 1,723 11.1%
02 Ražošana (виробництво) 1,651 10.6%
03 Auto un serviss (авто та сервіс) 1,258 8.1%
37 Speciālisti (спеціалісти) 1,003 6.5%
11 Virtuve un ēdināšana (кухня та громадське харчування) 903 5.8%
07 Māksla un dizains (мистецтво та дизайн) 815 5.2%
08 Noliktavas (склади) 778 5.0%
22 Izglītība (освіта) 718 4.6%
26 IT atbalsts un tīkli (IT-підтримка та мережі) 689 4.4%
+ ще 29 (Santehnika un remonts 490, Medmāsas un farmācija 117, Programmēšana 157, Mediji 62, Juridiskie 74, Tūrisms un valodas 31…) решта решта

Примітка: одна вакансія може нести кілька категорій (наприклад, «проєктний менеджер у будівництві»), тому відсотки в сумі дають більше 100% — вони показують, як часто професія зустрічається у всій базі, а не строгий поділ ринку.

Що це дає на практиці? Дві речі. Перша — де багато вакансій: управління (2 430), продажі (2 168), будівництво (1 723) і виробництво (1 651) домінують на ринку. Якщо ви працюєте в одній із цих сфер, пропозицій зараз багато. Друга — де конкуренція нижча: ніша на кшталт Programmēšana (157 розмічених вакансій) чи Medmāsas un farmācija (117) тонка порівняно з 2 430-сильною стопкою менеджменту — іноді найпривітніший ринок той, де оголошень менше, а не більше. А далі, коли в розібраній базі накопичиться достатньо даних, може з'явитися й /trends: які професії ростуть, де є попит, а які повільно вмирають.

Введіть show 25 у чаті, щоб одразу відкрити категорію програмування — бот перетворює будь-який ID категорії з /vakances на переглядний список вакансій.

/locations: де знаходяться вакансії (і чому «Riga» = «Rīga»)

/vakances показує, які професії потрібні ринку; /locationsде вони знаходяться. Бот групує кожну активну вакансію за локацією та ранжує місця за кількістю вакансій — 589 унікальних локацій мали відкриті вакансії в серпневому знімку 2026 року. За замовчуванням показується топ-40; /locations 100 виводить повну карту ринку.

Команда /locations Telegram-бота - топ латвійських міст із кількістю вакансій
/locations: кожна локація за кількістю відкритих вакансій, вуличний хаос вичищено
Топ латвійських локацій для роботи — 15 548 вакансій (18 серпня 2026)
# Локація Вакансій Частка
1 Rīga 4,382 28.2%
2 Rīga, centrs 932 6.0%
3 Liepāja 498 3.2%
4 Rīga / Hibrīddarbs 481 3.1%
5 Jelgava 286 1.8%
6 Rīgas rajons, Mārupes pag. 245 1.6%
7 Rīga, Pļavnieki 224 1.4%
8 Mārupe 214 1.4%
9 Daugavpils 203 1.3%
10 Jelgava un raj., Jelgava 182 1.2%
11 Rīga, Ziepniekkalns 177 1.1%
12 Rīga, Purvciems 163 1.0%
+ ще 577 локацій (Rēzekne 105, Sigulda 99, Bauska 103, Ventspils 87, Olaine 83…) решта решта

Географія жорстко сконцентрована: складіть усі записи про Ригу з топ-40 — саме місто, центр, кожен район, гібридні оголошення — і вийде 8 662 з 15 548 вакансій, майже половина всього ринку в одному місті, ще до того як приєднається ризьке кільце (Mārupes pag. 245, Ķekavas pag. 95, Ādažu nov. 94). Друге місто, Лієпая, налічує 498 (591 разом із районом), далі Єлгава — 286, Даугавпілс — 203. Практичний висновок для тих, хто шукає роботу в Ризі: фільтр за містом — не приємний бонус, а різниця між 28.2% ринку та 100% шуму.

Віддалена, гібридна та часткова зайнятість: чесні цифри

У Латвії жартують, що тепер будь-яка робота гібридна, — дані кажуть протилежне. У серпневому знімку 2026 року лише 587 з 15 548 оголошень (3.8%) згадують віддаленку в будь-якій формі, і 581 з них приходять з одного cv.lv. Часткова зайнятість зустрічається ще рідше. Ось повна картина з експорту:

Віддалена та часткова зайнятість у Латвії — 15 548 вакансій (18 серпня 2026)
Тип Латиський термін Вакансій Частка
Гібрид Hibrīddarbs 547 3.5%
Повністю віддалена Attālināti / Darbs no mājām 40 0.3%
Часткова зайнятість Nepilna slodze / Pusslodze / Part-time 51 0.3%

Повністю віддалена робота — рідкісний птах: усього 40 оголошень (35 «Attālināti» плюс 5 «Darbs no mājām») на всю країну. Якщо віддаленка для вас обов'язкова умова, шорт-лист буде коротким — краще дізнатися це на першому тижні, ніж після місяця скролінгу. Часткова зайнятість (nepilna slodze, pusslodze) зосереджена саме там, де й очікуєш: роздрібні мережі (Douglas, Jysk, New Yorker, Maxima), Lido та прилавки ризьких магазинів. Із 51 вакансії з частковою зайнятістю 23 знаходяться на ss.com, 18 на cvmarket.lv і лише 9 на cv.lv — ще один аргумент збирати не лише «великі» портали. Перемикач віддаленої роботи в /settings враховує всі синоніми — Hibrīddarbs, Attālināti, Darbs no mājām, remote, hybrid — тому фільтр справді знаходить усе.

«Riga» і «Rīga» — одне й те саме місце

Сирі дані шести скрейперів хаотичні цілком по-людськи. ss.com і cv.lv пишуть адреси («Meistaru iela 10, Rīga»), деякі сайти додають країну («Rīga, Latvija» або «Rīga, Latvia»), а ви як користувач у половині випадків наберете Riga на англійській клавіатурі без макрона. Шар локацій у боті обробляє все це:

  • Вуличні адреси зливаються у своє місто«Meistaru iela 10, Rīga», «Hipokrāta iela 2, Rīga» та «Bruņinieku iela 5 k-2, Rīga» враховуються як Rīga, а не як три фантомні локації.
  • Суфікси країн відкидаються«Rīga, Latvija» і «Rīga, Latvia» — це одна й та сама Rīga.
  • Діакритика не важливаRiga, Rīga, Liepaja та Liepāja вважаються однаковими скрізь — і в групуванні /locations, і у ваших фільтрах /location.

До цієї нормалізації в базі було 2 451 рядок локацій, які не збігалися ні з чим із канонічного списку. Після неї 589 канонічних локацій покривають увесь ринок, і ззовні залишаються лише кілька сільських адрес-чудасій. Той самий механізм працює й у фільтрах: задавши /location Riga, ви мовчки отримуєте всі варіанти написання Rīga — близько 9 500 вакансій у серпневому знімку.

Задайте свої міста один раз: /location Riga, Liepaja, Jelgava — макрони не потрібні — і кожен список, добірка та перегляд у боті їх враховуватимуть.

Процес перегляду: 8 кнопок, 6 списків, жодної таблиці

Щоденний цикл — це /review. Бот групує непереглянуті збіги за категоріями, ви обираєте одну, і далі вакансії йдуть по одній картці. На кожній картці — назва посади, компанія, зарплата, локація, бал збігу з розшифровкою та шість кнопок дій:

🔘 Сітка з 6 кнопок дій:

  • Обране — «залишу, повернуся до неї»
  • Пропустити — «не моє» (потім можна знайти в /skipped)
  • 📤 До відправлення — «резюме готове, відправлю сьогодні»
  • Відгукнувся — «надіслав»
  • 🎤 Співбесіда — «вони хочуть зустрітися»
  • Відмова — «вони відмовили»

Плюс рядок prev/next для гортання та авто-перехід: натискаєте статус — наступна картка завантажується миттєво. Одна сесія, сорок вакансій, шість хвилин.

Картка вакансії в Telegram-боті - з балом збігу та 8 кнопками дій
Картка перегляду: бал із причиною, зарплата, локація та відстеження статусу в одне натискання

Кожен статус перетворюється на список, який можна відкрити будь-коли: /wishlist, /to_send, /applied, /to_interview, /rejected, /skipped. А оскільки кожна дія записується в таблицю user_actions, на вічне питання будь-якого шукача — «де я в цьому процесі?» — відповідає /stats одним повідомленням.

Налаштування: місто, зарплата, віддаленка, ключові слова — налаштуйте бота під себе

Бот для пошуку роботи, якому байдуже, де ви живете та скільки заробляєте, — це вітрина, а не фільтр. Тому у vakances є повноцінна система налаштувань, доступна через /settings та /location:

Налаштування бота vakances
Налаштування Що робить Приклад
📍 Бажані локації Показувати лише вакансії в обраних містах (можна кілька) /location Rīga, Liepāja, Jelgava
💰 Мінімальна зарплата Ховати все нижче вашої суми в євро 1500
🏠 Лише віддаленка Лише оголошення, де згадуються Hibrīddarbs, Attālināti, Darbs no mājām, remote або hybrid Увімк / Вимк
🎯 Мінімальний бал збігу Поріг для збігів: 30, 50, 70 або 90 70 = лише сильні збіги
🔎 Слова для пошуку Ключові слова, які вам важливі (використовуються в find/пошуку) Python, Django, Backend
🚫 Виключені слова Ніколи не показувати це — наприклад, Junior, Internship Junior, Internship
👁 Показувати переглянуті Ховати вже переглянуті вакансії, щоб списки залишалися свіжими Сховати
📂 Сортування за замовчуванням Спершу нові або спершу кращі збіги Кращі збіги
🔔 Сповіщення Щоденна добірка нових збігів о 09:30 Увімк

Зверніть увагу на прийом із виключеними словами — це найнедооціненіша функція. Якщо ви розробник рівня middle, додавання Junior, Internship, Prakse до винятків однією дією прибирає найдратівливіший шум і зі зіставлення, і з пошуку.

Налаштування Telegram-бота - фільтри за локацією, зарплатою, віддаленою роботою та балом збігу
/settings: кожен фільтр, який потрібен шукачеві, налаштовується за секунди

Технологічний стек (для технарів): як влаштований vakances_bot.py

Якщо ви розробник і думаєте «хочу таке для своєї компанії» або просто «хочу зібрати своє» — ось що всередині. Усе перелічене нижче — відкритий код і безкоштовно.

Технологічний стек бота vakances
Шар Технологія Чому
Мова Python 3 Екосистема для скрейпінгу та Telegram майже ідеальна
Інтерфейс Telegram python-telegram-bot Чистий async API для команд, inline-клавіатур і колбеків
Планувальник APScheduler (AsyncIOScheduler) Розмітка кожні 30 хвилин, зіставлення о 09:00, добірка о 09:30, часовий пояс Риги
База даних PostgreSQL + psycopg2 Одна спільна база для адмін-бота та бота vakances
Збір даних requests + BeautifulSoup Розбір HTML із ввічливими затримками 2–5 секунд; JSON API для NVA та prakse.lv
Розбір резюме pdfplumber + python-docx Витягування тексту з PDF і DOCX
Експорт openpyxl XLSX-експорт відстежуваних вакансій та всієї бази
Часовий пояс pytz Europe/Riga Усі розклади та мітки часу живуть у ризькому часі

Щоб бот працював 24/7, я запускаю його як сервіс — так він переживає перезавантаження та збої:

/etc/systemd/system/vakances-bot.service
[Unit]
Description=Vakances Telegram Job Bot
After=network.target postgresql.service

[Service]
WorkingDirectory=/root/bot-folder
ExecStart=/root/bot-folder/venv/bin/python vakances_bot.py
Restart=always

[Install]
WantedBy=multi-user.target

Утримання справді недороге: VPS за €5–15 на місяць (серверну частину дивіться в моєму посібнику з налаштування nginx) тягне всю систему, а PostgreSQL безкоштовний. Якщо не хочете збирати все самі — саме цю архітектуру я постачаю як послугу розробки бота-скрейпера — від €60.

Чесні обмеження: чого бот не робить

У будь-якого хорошого інструмента має бути чесний розділ про обмеження. Ось чого бот vakances не робить — і це варто знати, перш ніж довірити йому пошук роботи.

  • Він не відгукується за васБот відстежує відгуки, а надсилаєте їх ви. Більшість латвійських роботодавців усе одно чекають живого повідомлення — сліпа автоподача шкодить частіше, ніж допомагає.
  • Скрейпінг — сіра зонаУмови використання порталів технічно забороняють автоматичний збір. На практиці ввічливий збір із низькою частотою терплять, бо він приводить трафік. Тримайте затримки розумними й ніколи не довбайте сайт.
  • Сайти змінюють HTMLКоли портал змінює дизайн, скрейпер ламається. Пайплайн чітко повідомляє про це, а полагодження парсера зазвичай займає 15–30 хвилин.
  • Зіставлення за ключовими словами, а не читання думокВакансія, яка описує вашу роль зовсім іншими словами, може отримати низький бал. Тому розшифровка видна, пороги налаштовуються, а пошук (find) існує як страховка.
  • Вакансії зникаютьКомпанії закривають оголошення; бот позначає їх видаленими та прибирає зі списків. Якщо запрошення на співбесіду зникло з історії — це прибирання робить свою роботу.

Бот проти ручного пошуку та рекрутерів: чесне порівняння

А чи справді бот кращий за альтернативи? Поставимо їх поруч, із реальними цифрами латвійського ринку.

Способи знайти роботу в Ризі: порівняння
Метод Час на день Охоплення Відстеження Вартість
Ручна перевірка сайтів 30–45 хв Лише сайти, які ви пам'ятаєте Блокнот / пам'ять Безкоштовно (ваш час)
Email-розсилки сайтів ~10 хв (читання шуму) Один сайт на підписку Немає Безкоштовно
LinkedIn / нетворкінг 20–30 хв Компанії, які там публікуються Вручну Безкоштовно / Premium
Рекрутер ~5 хв Лише список його клієнтів Робить він 10–20% від першої зарплати
Telegram-бот для пошуку роботи 2–4 хв 6 сайтів без дублікатів 6 автоматичних списків €5–15/міс за хостинг (або €300 за розробку)

Математика проста: бот не замінює рекрутерів і нетворкінг — він замінює нудні 30 хвилин. Нетворкінг залишається важливим (людська частина найму нікуди не дінеться), але ніхто ще не отримував співбесіду за те, що по п'ять разів на день перечитував одні й ті самі результати пошуку на cv.lv.

Часті запитання про пошук роботи в Латвії

За скільки часу знайти роботу в Ризі без ручного пошуку?
Поєднайте великі портали (cv.lv, ss.com, cvmarket.lv) з державним порталом NVA та автоматичною перевіркою — Telegram-бот робить усе це в одному чаті. Завантажте резюме один раз, задайте місто та зарплату в /settings і переглядайте щоденні збіги. Швидкість дають охоплення та ранній відгук — саме те, що дає автоматизація.
Що таке /vakances?
Команда огляду ринку: усі активні вакансії в базі, згруповані за професіями з кількістю та відсортовані за попитом. Введіть show N (номер зі списку), щоб відкрити вакансії цієї категорії. Найшвидший спосіб побачити, де зараз реально є робота в Латвії.
Чи може бот відгукуватися за мене?
Ні. Він показує вакансію з прямим посиланням і відстежує ваш статус (до відправлення → відгукнувся → співбесіда → відмова), але резюме надсилаєте ви. Системи автоподачі зазвичай дають зворотний ефект у роботодавців — особисте повідомлення досі виграє.
Наскільки точний бал збігу?
Оцінка — це збіг ключових слів (до 80 балів) плюс бонус за категорію (20 балів), із запасним пошуком за назвою. Усе прозоро: кожна картка показує збіглі ключові слова та категорію, а поріг (30/50/70/90) задаєте ви. Шум він відсікає надійно; читання опису вакансії він не замінить ніколи.
Які сайти охоплені?
Шість: cv.lv, ss.com, cvmarket.lv, liepajniekiem.lv, cvvp.nva.gov.lv (державний портал NVA з 4 442 активними оголошеннями) та prakse.lv для стажувань. Скрейпери додаються — зазвичай саме з цього починаються індивідуальні версії.
Скільки коштує індивідуальний бот для пошуку роботи?
Індивідуальна розробка — від €60 (збір даних + інтерфейс Telegram + зіставлення). Хостинг — €5–15 на місяць. Бот vakances із цієї статті — еталонна реалізація: скажіть, які сайти та фільтри вам потрібні, і я зберу ваш.
Чи законний скрейпінг сайтів вакансій?
Технічно він порушує умови більшості сайтів, але ввічливий збір із низькою частотою та затримками між запитами на практиці широко терпимий, бо повертає трафік на портали. Не перевантажуйте сервери, не перепродавайте дані — і ви в тій самій сірій зоні, що й тисячі аналітичних інструментів.

Ви ще шукаєте вручну?

Якщо ви активно шукаєте роботу в Ризі чи в іншому місті Латвії і заходите на сайти вакансій частіше за двічі на тиждень, припиніть. 30 хвилин щодня на перемикання cv.lv, ss.com, cvmarket.lv та порталу NVA — це саме та робота, яку має робити комп'ютер.

Ваш ранок тепер: відкрити Telegram, прочитати добірку, прогортати збіги, ставити «відгукнувся» чи «ні» — всього 4 хвилини. Огляд ринку показує, де реальний попит. Експорт кладе все в Excel. Списки відслідковують, на якому етапі кожна заявка.

Компанії й агентства можуть те саме. Індивідуальна розробка Telegram-бота від €60, код з цієї статті як основа.

Просто математика: ринок праці Латвії розпорошений на 6 сайтів. Бот збирає все в один чат. Першим його побачить той, хто запустить сьогодні.