843 lines
32 KiB
YAML
843 lines
32 KiB
YAML
# Portal Scanner Configuration
|
||
# Used by /career-ops scan to discover new offers automatically.
|
||
#
|
||
# Strategy (4 levels):
|
||
# 0. Local parser → per-company `parser:` script for SSR/static career pages (zero-token)
|
||
# 1. Playwright → careers_url of each company (real-time, reliable)
|
||
# 2. HTTP JSON (WebFetch) → per-company `api:` on tracked_companies (see board_api_catalog below)
|
||
# 3. WebSearch with site: filters (broad discovery, may be stale)
|
||
#
|
||
# IMPORTANT: Each company in tracked_companies MUST have careers_url.
|
||
# Prefer the BRANDED company careers URL whenever available; use ATS-hosted URL only as fallback.
|
||
# ✅ https://careers.mastercard.com ⚠️ https://mastercard.wd1.myworkdayjobs.com (fallback only)
|
||
# ✅ https://openai.com/careers ⚠️ https://job-boards.greenhouse.io/openai (fallback only)
|
||
# Exception: ATS-hosted careers_url is acceptable when no branded careers page exists.
|
||
# Using raw ATS URLs when a branded page exists can cause false 410 errors (job ID mismatch).
|
||
#
|
||
# HOW TO CUSTOMIZE:
|
||
# 1. Copy this file to portals.yml in the project root
|
||
# 2. Edit title_filter.positive with YOUR target role keywords
|
||
# 3. Add/remove companies in tracked_companies
|
||
# 4. Adjust search_queries for your preferred job boards
|
||
# 5. Set enabled: false on companies you don't care about
|
||
|
||
# -- Scan history recheck policy (optional) --
|
||
# By default, URLs recorded in data/scan-history.tsv are deduped forever.
|
||
# Set recheck_after_days to let previously added URLs become eligible again
|
||
# after N days, useful for roles that reopen or are republished at the same URL.
|
||
# Permanent invalid statuses such as blocked host or malformed URL still remain
|
||
# deduped forever.
|
||
#
|
||
# scan_history:
|
||
# recheck_after_days: 30
|
||
|
||
# -- Location filter (optional) --
|
||
# Filter scanned jobs by location. Applied AFTER title filter, BEFORE dedup.
|
||
# If this entire block is absent, all locations pass (current default behavior).
|
||
#
|
||
# Semantics (case-insensitive substring, in this order):
|
||
# - Empty location string on a job → pass (don't penalize missing data)
|
||
# - Any `always_allow` keyword present → pass (takes precedence over `block`)
|
||
# - Any `block` keyword present → reject
|
||
# - `allow` empty → pass (already cleared block)
|
||
# - `allow` non-empty → must match at least one keyword
|
||
#
|
||
# `always_allow` is optional. It rescues multi-location postings that name your
|
||
# home region: with always_allow ["New York"] and block ["India"], a job listed
|
||
# "Remote, New York or India" passes (New York wins), while "Remote, India" is
|
||
# still rejected. Omit always_allow entirely and the filter behaves as before.
|
||
#
|
||
# Example below targets US-based remote + a couple of US metros, blocking
|
||
# common foreign hubs. Customize to your geography.
|
||
|
||
# location_filter:
|
||
# # always_allow is checked BEFORE block — keep this list to your home region only
|
||
# always_allow:
|
||
# - "United States" # (replace with your home region)
|
||
# - "New York"
|
||
# allow:
|
||
# - "Remote"
|
||
# - "United States"
|
||
# - "USA"
|
||
# - "Atlanta"
|
||
# - "New York"
|
||
# block:
|
||
# - "India"
|
||
# - "Bengaluru"
|
||
# - "United Kingdom"
|
||
# - "London"
|
||
# - "Germany"
|
||
# - "France"
|
||
# - "Singapore"
|
||
# - "Japan"
|
||
# - "Brazil"
|
||
# - "Australia"
|
||
|
||
# -- Salary filter (optional) --
|
||
# Filter scanned jobs by annual compensation range. Applied AFTER location
|
||
# filter, BEFORE dedup. Only applies when structured salary data exists.
|
||
#
|
||
# Semantics:
|
||
# - min/max are annual compensation filters (use annualized values)
|
||
# - max: 0 means "no upper limit"
|
||
# - If no salary data exists on a job, it passes (conservative behavior)
|
||
# - If both currencies are known and differ, the job is rejected by the salary filter
|
||
# - Partial ranges (min only or max only) work correctly
|
||
# - If this entire block is absent, salary is not filtered (default behavior)
|
||
#
|
||
# Example: target roles paying at least $100k, no upper limit
|
||
# salary_filter:
|
||
# min: 100000
|
||
# max: 0
|
||
# currency: "USD"
|
||
|
||
# Active: 100,000 ₽/month net minimum (see config/profile.yml) → annualized
|
||
salary_filter:
|
||
min: 1200000
|
||
max: 0
|
||
currency: "RUB"
|
||
|
||
# -- Trust filter (optional) --
|
||
# Enriches each scanned job with a trust score (0-100) and flags.
|
||
# Jobs are NEVER dropped — only annotated. The trust score helps you
|
||
# prioritize which postings to evaluate first.
|
||
#
|
||
# Heuristics (V1):
|
||
# 1. URL structure validation (malformed or non-http URLs)
|
||
# 2. Missing application URL
|
||
# 3. Suspicious domain detection (link shorteners, form builders)
|
||
# 4. Company ↔ domain mismatch (with ATS allowlist)
|
||
#
|
||
# If this block is absent or enabled: false, all jobs get score 100.
|
||
#
|
||
# trust_filter:
|
||
# enabled: true
|
||
# suspicious_domains:
|
||
# - "bit.ly"
|
||
# - "tinyurl.com"
|
||
# - "t.co"
|
||
# - "forms.gle"
|
||
# - "goo.gl"
|
||
# - "shorturl.at"
|
||
# # Override the built-in ATS allowlist (greenhouse, lever, workday, etc.).
|
||
# # URLs hosted on these domains skip the company↔domain mismatch check.
|
||
# # ats_allowlist:
|
||
# # - "greenhouse.io"
|
||
# # - "ashbyhq.com"
|
||
# # - "lever.co"
|
||
# # - "custom-ats.example.com"
|
||
|
||
# -- Content filter (optional) --
|
||
# Filters on the job DESCRIPTION text, not just the title — useful when
|
||
# companies post generic titles ("Software Engineer") with very different
|
||
# stacks. Case-insensitive substring match.
|
||
# Semantics:
|
||
# - A job with no description always passes (see provider support below)
|
||
# - Any `negative` keyword present → reject
|
||
# - `positive` empty → pass (after clearing negatives)
|
||
# - `positive` non-empty → at least one keyword must be present
|
||
# - If this entire block is absent, descriptions are not filtered (default)
|
||
#
|
||
# Provider support: the scanner is zero-token and only reads descriptions that
|
||
# a provider already returns in its list payload — it never fetches each job
|
||
# page. Currently Lever (`descriptionPlain`) supplies descriptions; jobs from
|
||
# providers that don't always pass this filter (they're never silently dropped).
|
||
#
|
||
# Example: keep roles that mention Rust/Go, drop legacy PHP/WordPress shops
|
||
# content_filter:
|
||
# positive:
|
||
# - "rust"
|
||
# - "golang"
|
||
# negative:
|
||
# - "php"
|
||
# - "wordpress"
|
||
|
||
# -- Title filter --
|
||
# The scanner uses these keywords to decide if a title is relevant.
|
||
# At least 1 positive must match AND 0 negatives must match (case-insensitive).
|
||
#
|
||
# skip_tiers: [intern, entry] # optional: skip listings by seniority tier (note: unrecognized/plain titles fall back to 'mid')
|
||
|
||
title_filter:
|
||
positive:
|
||
# [CUSTOMIZE] Add keywords matching YOUR target roles
|
||
# -- Frontend (Vue.js) --
|
||
- "Frontend"
|
||
- "Front-end"
|
||
- "Фронтенд"
|
||
- "Фронтенд-разработчик"
|
||
- "Vue"
|
||
- "Vue.js"
|
||
- "Nuxt"
|
||
- "Frontend-разработчик"
|
||
- "Web-разработчик"
|
||
- "Веб-разработчик"
|
||
# -- Mobile (Flutter) --
|
||
- "Flutter"
|
||
- "Dart"
|
||
- "Mobile Developer"
|
||
- "Мобильный разработчик"
|
||
# -- Adjacent (fullstack, JS/TS generalist) --
|
||
- "JavaScript"
|
||
- "TypeScript"
|
||
- "Fullstack"
|
||
- "Full-stack"
|
||
- "Full stack"
|
||
negative:
|
||
# [CUSTOMIZE] Add keywords for roles you want to exclude
|
||
- "iOS-разработчик"
|
||
- "Android-разработчик"
|
||
- "Swift"
|
||
- "Kotlin"
|
||
- "Java "
|
||
- ".NET"
|
||
- "PHP"
|
||
- "Ruby"
|
||
- "C++"
|
||
- "1С"
|
||
- "1C"
|
||
- "SAP "
|
||
- "Data Scientist"
|
||
- "DevOps"
|
||
- "QA-инженер"
|
||
- "Тестировщик"
|
||
- "Manual QA"
|
||
- "Sysadmin"
|
||
- "Системный администратор"
|
||
- "SMM"
|
||
- "Дизайнер"
|
||
- "Designer"
|
||
- "Продажи"
|
||
- "Sales Manager"
|
||
- "Embedded"
|
||
- "Firmware"
|
||
- "Blockchain"
|
||
- "Web3"
|
||
- "Crypto"
|
||
seniority_boost:
|
||
# These prefixes add relevance but are not required
|
||
- "Middle"
|
||
- "Мидл"
|
||
- "Senior"
|
||
- "Старший"
|
||
- "Ведущий"
|
||
- "Lead"
|
||
|
||
# -- Search queries --
|
||
# Each query triggers a WebSearch. Use site: to filter by portal.
|
||
# The scanner extracts title, URL, and company from results.
|
||
|
||
search_queries:
|
||
# -- hh.ru --
|
||
- name: hh.ru — Frontend (Vue)
|
||
query: 'site:hh.ru "Frontend-разработчик" OR "Frontend разработчик" Vue удалённо'
|
||
enabled: true
|
||
|
||
- name: hh.ru — Vue.js Developer
|
||
query: 'site:hh.ru "Vue.js разработчик" OR "Vue разработчик" middle OR senior'
|
||
enabled: true
|
||
|
||
- name: hh.ru — Flutter Developer
|
||
query: 'site:hh.ru "Flutter-разработчик" OR "Flutter разработчик" удалённо'
|
||
enabled: true
|
||
|
||
- name: hh.ru — Mobile Developer
|
||
query: 'site:hh.ru "Мобильный разработчик" Flutter удалённо'
|
||
enabled: true
|
||
|
||
# -- Хабр Карьера --
|
||
- name: Хабр Карьера — Frontend (Vue)
|
||
query: 'site:career.habr.com "Frontend" Vue удалённо'
|
||
enabled: true
|
||
|
||
- name: Хабр Карьера — Flutter
|
||
query: 'site:career.habr.com "Flutter" разработчик удалённо'
|
||
enabled: true
|
||
|
||
# -- Хабр Карьера / Хабр Вакансии (общий) --
|
||
- name: Хабр — Frontend вакансии
|
||
query: 'site:habr.com/ru/vacancies "Frontend-разработчик" Vue'
|
||
enabled: true
|
||
|
||
# -- Superjob --
|
||
- name: Superjob — Frontend (Vue)
|
||
query: 'site:superjob.ru "Frontend-разработчик" Vue удалённо'
|
||
enabled: true
|
||
|
||
- name: Superjob — Flutter
|
||
query: 'site:superjob.ru "Flutter-разработчик" удалённо'
|
||
enabled: true
|
||
|
||
# -- Rabota.ru --
|
||
- name: Rabota.ru — Frontend (Vue)
|
||
query: 'site:rabota.ru "Frontend-разработчик" Vue удалённо'
|
||
enabled: true
|
||
|
||
# -- Geekjob --
|
||
- name: Geekjob — Frontend (Vue)
|
||
query: 'site:geekjob.ru "Frontend" Vue удалённо'
|
||
enabled: true
|
||
|
||
- name: Geekjob — Flutter
|
||
query: 'site:geekjob.ru "Flutter" удалённо'
|
||
enabled: true
|
||
|
||
# -- Общий поиск: удалённые Frontend/Flutter вакансии --
|
||
- name: Общий поиск — Frontend Vue удалённо
|
||
query: '"Frontend-разработчик" OR "Frontend разработчик" Vue OR "Vue.js" удалённо -стажёр'
|
||
enabled: true
|
||
|
||
- name: Общий поиск — Flutter удалённо
|
||
query: '"Flutter-разработчик" OR "Flutter разработчик" удалённо -стажёр'
|
||
enabled: true
|
||
|
||
# -- Hirify.me — AI meta-aggregator (960+ Telegram channels + career sites) --
|
||
# No public API; SSR category pages are crawlable. Covers both Russia-market
|
||
# and global/remote roles open to Russian candidates.
|
||
- name: Hirify.me — Frontend (Vue)
|
||
query: 'site:hirify.me/frontend-dev-jobs Vue OR "Vue.js"'
|
||
enabled: true
|
||
|
||
- name: Hirify.me — Mobile (Flutter)
|
||
query: 'site:hirify.me/mobile-development-jobs Flutter'
|
||
enabled: true
|
||
|
||
- name: Hirify.me — Russia / Remote
|
||
query: 'site:hirify.me/jobs-in-russia "Frontend" OR "Vue" OR "Flutter"'
|
||
enabled: true
|
||
|
||
- name: Hirify.me — Remote (global, RU-friendly)
|
||
query: 'site:hirify.me/remote-jobs "Frontend" OR "Vue" OR "Flutter"'
|
||
enabled: true
|
||
|
||
# -- ГородРабот.ру (aggregates hh.ru/superjob/rabota.ru/zarplata.ru + 330 sources, no public API) --
|
||
- name: ГородРабот.ру — Frontend (Vue)
|
||
query: 'site:gorodrabot.ru "Frontend" Vue удалённо'
|
||
enabled: true
|
||
|
||
- name: ГородРабот.ру — Flutter
|
||
query: 'site:gorodrabot.ru "Flutter" удалённо'
|
||
enabled: true
|
||
|
||
# -- Zarplata.ru (HeadHunter group sister site, no public API) --
|
||
- name: Zarplata.ru — Frontend (Vue)
|
||
query: 'site:zarplata.ru "Frontend-разработчик" OR "Frontend разработчик" Vue'
|
||
enabled: true
|
||
|
||
- name: Zarplata.ru — Flutter
|
||
query: 'site:zarplata.ru "Flutter-разработчик" OR "Flutter разработчик"'
|
||
enabled: true
|
||
|
||
# -- jsJob.ru (JS/frontend-only niche board, no public API) --
|
||
- name: jsJob.ru — Frontend/JS
|
||
query: 'site:jsjob.ru Vue OR "Vue.js" OR TypeScript'
|
||
enabled: true
|
||
|
||
# -- Remote-job.ru (RU-focused remote-work board, no public API; XML feed exists but undocumented) --
|
||
- name: Remote-job.ru — Frontend/Mobile
|
||
query: 'site:remote-job.ru "Frontend" OR Vue OR Flutter'
|
||
enabled: true
|
||
|
||
tracked_companies:
|
||
|
||
# -- Крупные российские tech-компании (own careers pages, websearch discovery) --
|
||
|
||
- name: Яндекс
|
||
careers_url: https://yandex.ru/jobs
|
||
scan_method: websearch
|
||
scan_query: 'site:yandex.ru/jobs "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Москва + удалённо. Крупнейший российский IT-холдинг."
|
||
enabled: true
|
||
|
||
- name: VK (ВКонтакте)
|
||
careers_url: https://team.vk.company/vacancy/
|
||
scan_method: websearch
|
||
scan_query: 'site:team.vk.company/vacancy "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Москва + удалённо. Соцсети, VK Mini Apps, мобильные продукты."
|
||
enabled: true
|
||
|
||
- name: Ozon
|
||
careers_url: https://ozon.tech/vacancies
|
||
scan_method: websearch
|
||
scan_query: 'site:ozon.tech/vacancies "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Москва + удалённо. E-commerce, крупная frontend-платформа."
|
||
enabled: true
|
||
|
||
- name: Wildberries
|
||
careers_url: https://career.rwb.ru/vacancies
|
||
scan_method: websearch
|
||
scan_query: '"Wildberries" careers "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Москва + удалённо. E-commerce маркетплейс."
|
||
enabled: true
|
||
|
||
- name: Avito
|
||
careers_url: https://career.avito.com/vacancies/
|
||
scan_method: websearch
|
||
scan_query: 'site:career.avito.com/vacancies "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Москва + удалённо. Классифайд-платформа, сильная инженерная культура."
|
||
enabled: true
|
||
|
||
- name: Т-Банк (Тинькофф)
|
||
careers_url: https://www.tbank.ru/career
|
||
scan_method: websearch
|
||
scan_query: 'site:tbank.ru/career "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Москва + удалённо. Финтех, много mobile/frontend вакансий."
|
||
enabled: true
|
||
|
||
- name: СберТех / Сбер
|
||
careers_url: https://developers.sber.ru/kak-v-sbere/vacancies
|
||
scan_method: websearch
|
||
scan_query: 'site:developers.sber.ru/kak-v-sbere/vacancies "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Москва + удалённо. Крупнейший банк, большой tech-департамент."
|
||
enabled: true
|
||
|
||
- name: МТС
|
||
careers_url: https://job.mts.ru/vacancies
|
||
scan_method: websearch
|
||
scan_query: 'site:job.mts.ru/vacancy "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Москва + удалённо. Телеком + цифровые сервисы (МТС Digital)."
|
||
enabled: true
|
||
|
||
- name: Kaspersky
|
||
careers_url: https://careers.kaspersky.ru/vacancies
|
||
scan_method: websearch
|
||
scan_query: 'site:careers.kaspersky.ru "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Москва + удалённо. Кибербезопасность — совпадает с профильным ИБ-образованием."
|
||
enabled: true
|
||
|
||
- name: 2ГИС
|
||
careers_url: https://job.2gis.ru/
|
||
scan_method: websearch
|
||
scan_query: 'site:job.2gis.ru "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Новосибирск + удалённо. Картографический сервис, мобильные и веб-продукты."
|
||
enabled: true
|
||
|
||
- name: Skyeng
|
||
careers_url: https://vacancies.skyeng.ru/
|
||
scan_method: websearch
|
||
scan_query: 'site:vacancies.skyeng.ru "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Удалённо-first. EdTech, известны Vue/Flutter вакансиями. (careers_url corrected 2026-07-07: old skyeng.ru/vacancies 404s; real board is vacancies.skyeng.ru)"
|
||
enabled: true
|
||
|
||
- name: Купер (СберМаркет)
|
||
careers_url: https://team.kuper.ru/catalog-vacancies
|
||
scan_method: websearch
|
||
scan_query: 'site:team.kuper.ru "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Москва + удалённо. E-grocery, экс-СберМаркет."
|
||
enabled: true
|
||
|
||
- name: Lamoda
|
||
careers_url: https://job.lamoda.ru/vacancies?city=none
|
||
scan_method: websearch
|
||
scan_query: 'site:career.habr.com/companies/lamodatech "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Москва + удалённо. Fashion e-commerce, отдельный tech-бренд Lamoda Tech (сайт tech.lamoda.ru редиректит на latech.ru; реальные вакансии живут на job.lamoda.ru — careers_url обновлён 2026-07-07)."
|
||
enabled: true
|
||
|
||
- name: Aviasales
|
||
careers_url: https://www.aviasales.ru/about/vacancies
|
||
scan_method: websearch
|
||
scan_query: '"Aviasales" careers "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Удалённо-first (Кипр/Россия распределённо). Travel-поиск, mobile-friendly культура."
|
||
enabled: true
|
||
|
||
- name: DomClick
|
||
careers_url: https://career.domclick.ru/
|
||
scan_method: websearch
|
||
scan_query: 'site:career.domclick.ru "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Москва + удалённо. Недвижимость, экосистема Сбера."
|
||
enabled: true
|
||
|
||
- name: ivi
|
||
careers_url: https://career.habr.com/companies/ivi/vacancies
|
||
scan_method: websearch
|
||
scan_query: 'site:career.habr.com/companies/ivi "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Москва + удалённо. Видеостриминг, сильная мобильная разработка. (careers_url corrected 2026-07-09: old www.ivi.ru/info/vacancy 404s; no standalone corporate careers page found, using Хабр Карьера company page as fallback per scan.md 'Managing careers_url' rule)"
|
||
enabled: true
|
||
|
||
- name: Ситимобил / Городские сервисы
|
||
careers_url: https://city-mobil.ru/career
|
||
scan_method: websearch
|
||
scan_query: '"Ситимобил" careers "Frontend" OR "Vue" OR "Flutter"'
|
||
notes: "Москва + удалённо. Райдхейлинг, мобильные приложения."
|
||
enabled: true
|
||
|
||
- name: HeadHunter (hh.ru как работодатель)
|
||
careers_url: https://hh.ru/employer/1455
|
||
scan_method: websearch
|
||
scan_query: 'site:hh.ru/vacancy employer_id=1455 "Frontend" OR "Vue"'
|
||
notes: "Москва + удалённо. Сам hh.ru как работодатель, публичный tech-блог/вакансии."
|
||
enabled: true
|
||
|
||
- name: Positive Technologies
|
||
careers_url: https://ptsecurity.com/about/vacancy/
|
||
scan_method: websearch
|
||
scan_query: 'site:ptsecurity.com/about/vacancy "Frontend" OR "Vue"'
|
||
notes: "Москва + удалённо. Кибербезопасность — совпадает с профильным ИБ-образованием."
|
||
enabled: true
|
||
|
||
- name: Ecwid (Lightspeed)
|
||
careers_url: https://github.com/Ecwid/new-job
|
||
scan_method: websearch
|
||
scan_query: '"Ecwid" careers "Frontend" OR "Vue"'
|
||
notes: "Удалённо-first, российские корни. E-commerce SaaS. (careers_url corrected 2026-07-07: www.ecwid.com/careers 404s; Ecwid hires via a GitHub 'send us a completed test task' funnel with no discrete per-role listings — TypeScript.md test task exists, no Vue/Flutter-specific one)."
|
||
enabled: true
|
||
|
||
- name: JetBrains
|
||
careers_url: https://www.jetbrains.com/careers
|
||
scan_method: websearch
|
||
scan_query: 'site:jetbrains.com/careers "Frontend" OR "Vue"'
|
||
notes: "Санкт-Петербург + удалённо (международная структура). Инструменты для разработчиков."
|
||
enabled: true
|
||
|
||
# ── Job Boards ────────────────────────────────────────────────────────
|
||
# Multi-employer aggregators. Unlike tracked_companies (one entry = one employer),
|
||
# job boards return offers from many companies in a single API call.
|
||
# Same title/location filtering and dedup apply.
|
||
|
||
job_boards:
|
||
|
||
# ── SolidJobs (Polish market) ──────────────────────────────────────
|
||
# Public API — no auth needed. Division in URL path, campaign=career-ops for tracking.
|
||
# Available divisions: it, engineering, marketing, sales, hr, logistics, finances, other
|
||
|
||
- name: SolidJobs IT
|
||
careers_url: https://solid.jobs/public-api/offers/it?campaign=career-ops
|
||
provider: solidjobs
|
||
enabled: false
|
||
notes: "Polish IT job board — IT division (not RU market, disabled)"
|
||
|
||
- name: SolidJobs Engineering
|
||
careers_url: https://solid.jobs/public-api/offers/engineering?campaign=career-ops
|
||
provider: solidjobs
|
||
enabled: false
|
||
notes: "Polish job board — Engineering & Production division"
|
||
|
||
- name: SolidJobs Marketing
|
||
careers_url: https://solid.jobs/public-api/offers/marketing?campaign=career-ops
|
||
provider: solidjobs
|
||
enabled: false
|
||
notes: "Polish job board — Marketing division"
|
||
|
||
- name: SolidJobs Sales
|
||
careers_url: https://solid.jobs/public-api/offers/sales?campaign=career-ops
|
||
provider: solidjobs
|
||
enabled: false
|
||
notes: "Polish job board — Sales division"
|
||
|
||
- name: SolidJobs HR
|
||
careers_url: https://solid.jobs/public-api/offers/hr?campaign=career-ops
|
||
provider: solidjobs
|
||
enabled: false
|
||
notes: "Polish job board — HR division"
|
||
|
||
- name: SolidJobs Logistics
|
||
careers_url: https://solid.jobs/public-api/offers/logistics?campaign=career-ops
|
||
provider: solidjobs
|
||
enabled: false
|
||
notes: "Polish job board — Logistics division"
|
||
|
||
- name: SolidJobs Finances
|
||
careers_url: https://solid.jobs/public-api/offers/finances?campaign=career-ops
|
||
provider: solidjobs
|
||
enabled: false
|
||
notes: "Polish job board — Finances division"
|
||
|
||
- name: SolidJobs Other
|
||
careers_url: https://solid.jobs/public-api/offers/other?campaign=career-ops
|
||
provider: solidjobs
|
||
enabled: false
|
||
notes: "Polish job board — Other specialists division"
|
||
|
||
# ── JustJoin.it / NoFluffJobs (Polish tech market) ────────────────────────
|
||
# Public job-board APIs. Disabled by default; enable and rely on the global
|
||
# title_filter/location_filter/salary_filter above for your target profile.
|
||
|
||
- name: JustJoin.it
|
||
careers_url: https://justjoin.it/job-offers/all-locations
|
||
provider: justjoin
|
||
enabled: false
|
||
notes: "Polish tech job board — newest public offers"
|
||
|
||
- name: NoFluffJobs
|
||
careers_url: https://nofluffjobs.com/pl
|
||
provider: nofluffjobs
|
||
enabled: false
|
||
notes: "Polish tech job board — newest public postings"
|
||
|
||
# -- Indonesia job boards (provider: jobstreet / glints) --
|
||
|
||
- name: Jobstreet Indonesia
|
||
provider: jobstreet
|
||
api: https://id.jobstreet.com/api/jobsearch/v5/search
|
||
siteKey: ID-Main
|
||
searchKeywords: "data scientist"
|
||
searchLocation: "Jakarta"
|
||
pageSize: 30
|
||
maxPages: 3
|
||
enabled: false
|
||
notes: "Indonesia's largest job board (SEEK group). Uses SEEK v5 JobSearch API — zero tokens."
|
||
|
||
- name: Glints Indonesia
|
||
provider: glints
|
||
api: https://glints.com/api/v2-alc/graphql # searchJobsV3 endpoint
|
||
searchKeywords: "data scientist"
|
||
countryCode: ID
|
||
pageSize: 30
|
||
maxPages: 3
|
||
enabled: false
|
||
notes: "SEA job platform covering ID/SG/MY/VN. Uses searchJobsV3 GraphQL endpoint (v2-alc). WAF blocks non-browser requests — works best from Playwright context."
|
||
|
||
# ── Telegram channels (public preview page, no API key/login) ──────
|
||
# Reads https://t.me/s/{channel} — zero-token, but title/company/location
|
||
# are heuristically parsed from free-form post text, and only the ~20 most
|
||
# recent posts are seen per scan. Tune title_filter/content_filter per channel.
|
||
#
|
||
# jsJob.ru (@jsjobru) intentionally excluded: its posts carry the real
|
||
# apply link behind an inline button that only renders in the Telegram
|
||
# client, invisible on the public /s/ web preview — so the scanned "JD"
|
||
# never has an actual application URL. Not worth parsing.
|
||
|
||
- name: Javascript jobs (Vue/React/Angular) — Telegram
|
||
provider: telegram
|
||
channel: jsdevjob
|
||
enabled: true
|
||
notes: "https://t.me/jsdevjob — вакансии по фронтенду/JS, явно упоминает Vue"
|
||
|
||
- name: Job for Frontend (JS+Node) — Telegram
|
||
provider: telegram
|
||
channel: forfrontend
|
||
enabled: true
|
||
notes: "https://t.me/forfrontend — JS/Node.js frontend вакансии"
|
||
|
||
- name: Front-end Job Offers — Telegram
|
||
provider: telegram
|
||
channel: runello_rus_frontend
|
||
enabled: true
|
||
notes: "https://t.me/runello_rus_frontend"
|
||
|
||
- name: Frontend — вакансии и стажировки — Telegram
|
||
provider: telegram
|
||
channel: senior_frontender
|
||
enabled: true
|
||
notes: "https://t.me/senior_frontender"
|
||
|
||
- name: JavaScript Job Offers — Telegram
|
||
provider: telegram
|
||
channel: runello_rus_javascript
|
||
enabled: true
|
||
notes: "https://t.me/runello_rus_javascript"
|
||
|
||
- name: TypeScript Job Offers — Telegram
|
||
provider: telegram
|
||
channel: runello_rus_typescript
|
||
enabled: true
|
||
notes: "https://t.me/runello_rus_typescript"
|
||
|
||
- name: React Job — Telegram
|
||
provider: telegram
|
||
channel: job_react
|
||
enabled: true
|
||
notes: "https://t.me/job_react — JS/React, adjacent stack to Vue"
|
||
|
||
- name: Dart Jobs — Telegram
|
||
provider: telegram
|
||
channel: dartlang_jobs
|
||
enabled: true
|
||
notes: "https://t.me/dartlang_jobs — Dart = Flutter's language, Mobile (Flutter) archetype"
|
||
|
||
- name: Mobile App Development Job Offers — Telegram
|
||
provider: telegram
|
||
channel: runello_rus_mobileappdevelopment
|
||
enabled: true
|
||
notes: "https://t.me/runello_rus_mobileappdevelopment — mobile dev (Flutter/native mixed)"
|
||
|
||
- name: Вакансии для разработчиков — Telegram
|
||
provider: telegram
|
||
channel: backend_frontend_jobs
|
||
enabled: true
|
||
notes: "https://t.me/backend_frontend_jobs — general dev board, frontend+backend mixed"
|
||
|
||
# ── Additional Telegram channels found via tgstat.ru tag pages ────────
|
||
# (geekjob/it-vacancies/headhunter/vacancies-abroad/vacancies) — curated
|
||
# for Frontend (Vue.js) / Mobile (Flutter) / Fullstack (Vue+Node) fit.
|
||
|
||
- name: Job for Mobile (iOS/Android/React Native) — Telegram
|
||
provider: telegram
|
||
channel: forallmobile
|
||
enabled: true
|
||
notes: "https://t.me/forallmobile"
|
||
|
||
- name: Fullstack / Web Development Job Offers — Telegram
|
||
provider: telegram
|
||
channel: runello_rus_webdevelopment
|
||
enabled: true
|
||
notes: "https://t.me/runello_rus_webdevelopment"
|
||
|
||
- name: Backend / Server-side Job Offers — Telegram
|
||
provider: telegram
|
||
channel: runello_rus_backend
|
||
enabled: true
|
||
notes: "https://t.me/runello_rus_backend — Node.js-adjacent, fits Fullstack (Vue+Node)"
|
||
|
||
- name: JavaScript Job | Вакансии | Стажировки — Telegram
|
||
provider: telegram
|
||
channel: JScript_jobs
|
||
enabled: true
|
||
notes: "https://t.me/JScript_jobs"
|
||
|
||
- name: Mobile jobs — Telegram
|
||
provider: telegram
|
||
channel: mobiledevjob
|
||
enabled: true
|
||
notes: "https://t.me/mobiledevjob"
|
||
|
||
- name: hh.ru official — Telegram
|
||
provider: telegram
|
||
channel: hh_ru_official
|
||
enabled: true
|
||
notes: "https://t.me/hh_ru_official — official hh.ru channel"
|
||
|
||
- name: Хабр Карьера — Telegram
|
||
provider: telegram
|
||
channel: habr_career
|
||
enabled: true
|
||
notes: "https://t.me/habr_career"
|
||
|
||
- name: Яндекс нанимает — Telegram
|
||
provider: telegram
|
||
channel: ya_jobs
|
||
enabled: true
|
||
notes: "https://t.me/ya_jobs"
|
||
|
||
- name: Remote IT (Inflow) — Telegram
|
||
provider: telegram
|
||
channel: Remoteit
|
||
enabled: true
|
||
notes: "https://t.me/Remoteit — remote-only, fits location policy"
|
||
|
||
- name: RemoteGeekjob — Telegram
|
||
provider: telegram
|
||
channel: remotegeekjob
|
||
enabled: true
|
||
notes: "https://t.me/remotegeekjob"
|
||
|
||
- name: Job in IT&Digital — Telegram
|
||
provider: telegram
|
||
channel: geekjobs
|
||
enabled: true
|
||
notes: "https://t.me/geekjobs"
|
||
|
||
- name: Hidden Gurus - Remote IT — Telegram
|
||
provider: telegram
|
||
channel: hiddengurus
|
||
enabled: true
|
||
notes: "https://t.me/hiddengurus"
|
||
|
||
- name: Удаленка — IT и Digital — Telegram
|
||
provider: telegram
|
||
channel: theyseeku_it
|
||
enabled: true
|
||
notes: "https://t.me/theyseeku_it"
|
||
|
||
- name: Job in IT Remote — Telegram
|
||
provider: telegram
|
||
channel: jobs_in_it_remoute
|
||
enabled: true
|
||
notes: "https://t.me/jobs_in_it_remoute"
|
||
|
||
- name: СЕТИ — IT & Digital вакансии — Telegram
|
||
provider: telegram
|
||
channel: it_vakansii_jobs
|
||
enabled: true
|
||
notes: "https://t.me/it_vakansii_jobs"
|
||
|
||
- name: БИГТЕХ - вакансии и стажировки — Telegram
|
||
provider: telegram
|
||
channel: bigtechjobs
|
||
enabled: true
|
||
notes: "https://t.me/bigtechjobs — Avito/Yandex/Apple/Google etc."
|
||
|
||
- name: Connectable Jobs — Telegram
|
||
provider: telegram
|
||
channel: zarubezhom_jobs
|
||
enabled: true
|
||
notes: "https://t.me/zarubezhom_jobs — foreign companies w/ RU-speaking founders/teams, remote not relocation-forced"
|
||
|
||
- name: Dev & ML Connectable Jobs — Telegram
|
||
provider: telegram
|
||
channel: dev_connectablejobs
|
||
enabled: true
|
||
notes: "https://t.me/dev_connectablejobs"
|
||
|
||
- name: CHOICY.WORK Global — Telegram
|
||
provider: telegram
|
||
channel: choicy_work
|
||
enabled: true
|
||
notes: "https://t.me/choicy_work"
|
||
|
||
- name: Selectel [команда] — Telegram
|
||
provider: telegram
|
||
channel: selectelcareers
|
||
enabled: true
|
||
notes: "https://t.me/selectelcareers — cloud/hosting company engineering team"
|
||
|
||
- name: T-Crew (Т-Банк IT) — Telegram
|
||
provider: telegram
|
||
channel: t_crew
|
||
enabled: true
|
||
notes: "https://t.me/t_crew"
|
||
|
||
- name: Alfa Digital — Telegram
|
||
provider: telegram
|
||
channel: alfadigital_jobs
|
||
enabled: true
|
||
notes: "https://t.me/alfadigital_jobs — Альфа-Банк IT/Digital"
|
||
|
||
- name: ЛАНИТ ищет — Telegram
|
||
provider: telegram
|
||
channel: lanit_in_search
|
||
enabled: true
|
||
notes: "https://t.me/lanit_in_search — major RU systems integrator"
|
||
|
||
# ── Trudvsem.ru / "Работа России" (Russian government open-data API) ───
|
||
# Public, no-auth JSON API — https://trudvsem.ru/opendata/api. Zero tokens.
|
||
# region is optional (omit for all-Russia); see API docs for region codes.
|
||
|
||
- name: Trudvsem — Frontend (Vue)
|
||
provider: trudvsem
|
||
searchKeywords: "Frontend Vue"
|
||
pageSize: 100
|
||
maxPages: 3
|
||
enabled: true
|
||
notes: "Государственный портал вакансий (Роструд). Официальный open-data API, без ключа."
|
||
|
||
- name: Trudvsem — Flutter
|
||
provider: trudvsem
|
||
searchKeywords: "Flutter"
|
||
pageSize: 100
|
||
maxPages: 2
|
||
enabled: true
|
||
notes: "Государственный портал вакансий (Роструд). Официальный open-data API, без ключа."
|
||
|
||
# ── Adzuna (global aggregator, requires free app_id/app_key registration) ──
|
||
# https://developer.adzuna.com — does NOT cover Russia (no "ru" country code;
|
||
# Western/English-speaking markets + a handful of others). Disabled by
|
||
# default for this RU-focused config; no scan.mjs provider exists yet either
|
||
# (would need a new providers/adzuna.mjs wired to your app_id/app_key).
|
||
|
||
- name: Adzuna
|
||
careers_url: https://www.adzuna.com/
|
||
enabled: false
|
||
notes: "Global job aggregator, no Russia coverage. Needs free app_id/app_key + a new provider — disabled until both exist."
|
||
|
||
# ── HigherEdJobs (university / higher-ed RSS) ────────────────────────
|
||
# Public no-auth RSS category feed. cat_id selects the HigherEdJobs
|
||
# category. Common ones:
|
||
# 68 = Higher Education, 64 = Educational Administration, 22 = Career Development
|
||
# Full list: https://www.higheredjobs.com/rss/
|
||
|
||
# - name: HigherEdJobs — Higher Education
|
||
# provider: higheredjobs
|
||
# cat_id: 68
|
||
# enabled: true
|