career-ops

AI-агент з відкритим кодом для пошуку роботи.

English | Español | Deutsch | Français | Português (Brasil) | 한국어 | 日本語 | 简体中文 | 繁體中文 | Українська | Русский | Polski | Dansk | தமிழ் | العربية | हिन्दी | Türkçe | Tiếng Việt | Bahasa Indonesia

Santiago Fernández de Valderrama Aparicio  Створено @santifer за участі    700+ контриб'юторів

Місяці надсилання резюме в тишу.
Тож я побудував фільтр, який був мені потрібен.

740 вакансій оцінено. 68 відгуків. 12 співбесід. 1 офер.
Я був його першим користувачем. Я отримав роботу. Потім відкрив код.

Вставте вакансію. На вашій машині він скаже, чи вона ще відкрита та чи вам підходить.
Він адаптує ваше резюме й готує чернетки відповідей. Ви натискаєте «Надіслати».

Власний пошук автора в дашборді career-ops: вакансії з оцінками, червоний лічильник тих, що позначені «не відгукуватися», а потім повний звіт оцінки

Мій власний пошук, на півдорозі, з інтерфейсом іспанською.

Компанії використовують AI для фільтрації кандидатів.
Я дав кандидатам AI, щоб вони могли вибирати компанії.

Через пів року я залишив цю роботу.
Тепер ми будуємо career-ops, щоб ви могли отримати свою.

Спробуйте на одній вакансії ↓ · Прочитайте всю історію →

Не хочете працювати в терміналі? Запишіться до списку очікування вебверсії →


Hired with career-ops: public stories on the record

Люди, які прийшли після мене, записали, як їх найняли.

Історії найму, які можна відкрити й прочитати

Кожна картка — публічний issue, який можна відкрити. Отримали свою роботу? Залиште свою картку →

⭐ Якщо career-ops вам допоміг, зірка допоможе наступній людині його знайти.


WIRED      Business Insider

Vercel OSS Program

GitHub Trending: #1 repository of the day (Trendshift)      Featured on Product Hunt

## Ваша черга Вставте одну вакансію, на яку збиралися відгукнутися сьогодні ввечері. Якщо у відповідь прийде не відгукуватися, ви щойно повернули собі вечір. Якщо прийде план, ви знаєте, що робити далі. ```bash npx @santifer/career-ops init ```

Відкритий код. Локально. У тому ШІ-CLI, яким ви вже користуєтесь. Безкоштовні та локальні моделі включно.

## Вам не обов’язково шукати наодинці Тиша після натискання «надіслати» не про вас. Достатньо людей побачили те саме, щоб записати практику в шість рядків: > Відгукуватися краще, але на менше. Сигнал важливіший за обсяг. Докази важливіші за ключові слова. Вирішує людина. Спершу локально. Гідність по обидва боки столу.

Маніфест CareerOps: кількість підписантів наживо

Кілька з них, їхніми власними словами.

Три підписи під маніфестом CareerOps, їхніми власними словами

Кожен підпис — коміт, який можна перевірити. Прочитати всі або додати свій →


Найм сам себе не виправить. Люди, які через нього проходять, можуть, і вони вже в кімнаті: звіряють нотатки й лагодять одне одному налаштування.

Анімована стіна з GitHub-аватарів учасників, що заповнюється в порядку приходу з квітень 2026 р.; наступна клітинка лишається вільною.

[Саме тут пишеться виправлення](CONTRIBUTING.md). Кімната, а не клуб. **Будуймо разом.**

Discord: кількість учасників сервера career-ops наживо

## Спонсори career-ops безкоштовний для кандидатів, назавжди. Ці компанії спонсорують проєкт:

SerpApi

SerpApi · Build a portfolio project with live search data. SerpApi gives developers structured JSON/Markdown from Google Search, Maps, Shopping, and other engines through a simple API call.

> Спонсорство купує чітко позначену видимість, ніколи не вплив: жодна сума грошей не змінює дорожню карту і нічого не розміщує в продукті. Спонсори ніколи не з’являються в оцінках, рейтингах чи рекомендаціях. ## Що career-ops робить для вас Вставте вакансію. Він скаже, чи варта вона цього вечора. - **Ще відкрита?** Він перевіряє, що оголошення досі активне, перш ніж ви напишете хоч слово. - **Не ваше?** Він оцінює роль проти вашого справжнього резюме і радить пропустити слабкий збіг. Ви можете його переважити. - **Варте уваги?** Він готує чернетки резюме, супровідного листа та відповідей. Ви їх читаєте. Ви їх надсилаєте. - **З ким говорити?** Він знаходить людину й готує чернетку повідомлення. Він ніколи його не надсилає. - **Куди все це йде?** Кожен відгук залишається на вашій машині. Нам нічого не завантажується. - **Що мені вивчити?** Після серії відмов він називає прогалину. Перші запуски шорсткі. Він вас ще не знає. Поговоріть з ним: ваше резюме, чого ви хочете, від чого відмовляєтесь. Сприймайте це як перший тиждень рекрутера. Під час першого запуску він запитує все це в чаті. Нічого налаштовувати вручну. ## Чого career-ops не робить - **Надсилати відгук автоматично.** Він готує чернетку відповіді для кожного поля; ви перевіряєте й натискаєте «Надіслати». Скрипт ніколи не робить POST (`prepare-application.mjs`). - **Не надсилає листи.** Лише чернетки. У всьому коді немає жодного поштового транспорту. - **Не дзвонить додому.** Без телеметрії, без нашого бекенду. Ваше резюме йде з вашої машини до обраного вами AI-провайдера і більше нікуди. Єдиний публічний реєстр: цей репозиторій, `HIRED.md` та його issues. - **Не штовхає подаватися нижче 4.0/5.** Скаже не робити цього. Ви можете проігнорувати, і він про це скаже. Він переформульовує ваше резюме; вигадувати не має права ніколи. Перевірка в коді зупиняє PDF, у якому є цифри чи факти, яких немає ні у вашому резюме, ні в `article-digest.md`, але оцінити кожне переформулювання вона поки не може. Читайте кожне резюме перед відправкою. Деталі у [FAQ](#faq). ## Що система вміє | Функція | Опис | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- | | **Оцінка A-H** | Резюме ролі, відповідність резюме (з вагою кожної вимоги для цієї вакансії та позначкою, чи взято вагу з формулювання опису, його структури чи з оцінки, з підписом для кожної вимоги; оцінка ніколи не може бути найвищого рівня), стратегія рівня, дослідження компенсації, персоналізація, підготовка до співбесіди (STAR+R), плюс перевірка легітимності вакансії в блоці G (чи вона ще відкрита, чи це не повторна публікація: спостереження, а не вердикти) і сигнал дозволу на роботу, що позначає опис із явною відмовою у спонсорстві візи як жорсткий блокер | | **Human-in-the-Loop** | AI оцінює та рекомендує, ви вирішуєте та дієте. Система ніколи не подає заявку: останнє слово завжди за вами | | **Генерація ATS PDF** | Резюме, читабельні для ATS і адаптовані під кожен опис вакансії на основі вашого власного досвіду, у дизайні Space Grotesk + DM Sans | | **Генератор супровідних листів** | Супровідні листи на основі дослідження з віддзеркаленням ключових слів, чотирма інтерактивними запитаннями про кут подачі (чому/проблеми/підхід/тон), затвердженням чернетки в чаті та A4 PDF через той самий конвеєр HTML + Playwright, що й для резюме. Готує чернетку при кожній оцінці; завершити й згенерувати на вимогу через `/career-ops cover` | | **Поза межами резюме** | Дослідження компанії ([`deep`](modes/deep.md)) розкриває AI-стратегію, нещодавні кроки, інженерну культуру та кут, під яким варто подати ваш профіль. Пошук контактів ([`contacto`](modes/contacto.md)) визначає hiring-менеджера, рекрутера або колегу з команди, до кого варто звернутися, і готує повідомлення для LinkedIn до 300 символів під кожен тип контакту. Чернетки формальних листів-заявок ([`email`](modes/email.md)) перетворюють оцінений звіт або вставлений опис на тему, текст і чекліст вкладень, нічого не надсилаючи, не подаючи і не клікаючи. Заявка ставить вас у чергу, дослідження дає вам розмову. | | **Аналіз патернів** | Патерни відмов і частка проходження по каналах ATS (`analyze-patterns.mjs`), статистика воронки за весь пошук (`stats.mjs`), виявлення перепублікацій, які можуть вказувати на вакансію-привид (`detect-reposts.mjs`) |
Усе інше, що він робить | Функція | Опис | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- | | **Авто-конвеєр** | Вставте URL і отримайте повну оцінку + PDF + запис у трекері | | **Банк історій для співбесід** | Накопичує історії STAR+Reflection між оцінками: 5-10 головних історій, які можна адаптувати під поставлені вам поведінкові питання | | **Скрипти переговорів** | Фреймворки переговорів про зарплату, відповідь на географічну знижку, важіль конкурентних оферів | | **Чернетки листів-заявок** | Формальні листи рекрутеру, за рекомендацією або холодні заявки зі звіту чи вставленого опису, з темою, чеклістом вкладень, обґрунтованими пунктами відповідності та блоком контактів із профілю. Лише чернетки: career-ops ніколи не надсилає, не подає і не клікає нічого. | | **Сканер порталів** | 100+ попередньо налаштованих компаній (Anthropic, OpenAI, ElevenLabs, Retool, n8n...) + власні пошукові веб-запити по Ashby, Greenhouse, Lever, Wellfound | | **Пошук профінансованих компаній** | Команда `company:funded` (спершу перегляд) показує компанії з нещодавнім фінансуванням і діагностику джерел зі структурованих публічних стрічок, не змінюючи ваші дані | | **Пакетна обробка** | Паралельна оцінка headless CLI-воркерами (`claude -p` / `opencode run`) | | **Dashboard TUI** | Термінальний інтерфейс для перегляду, фільтрації та сортування вашого конвеєра | | **Цілісність конвеєра** | Автоматичне злиття, дедуплікація, нормалізація статусів, перевірки стану | | **Набір для співбесід** | Плани підготовки за часовими блоками, тренувальні сесії зі зворотним зв'язком, розбори після співбесіди ([`interview/`](modes/interview/README.md)) і детектор тривожних ознак компанії ([`interview-redflag`](modes/interview-redflag.md)) | | **Етап оферу** | Супровід читання контракту: прохід по пунктах плюс список питань для юриста ([`offer-prep`](modes/offer-prep.md)), і аналізатор розриву між бажаною, заявленою та фактичною зарплатою (`salary-gap.mjs`) | | **Фоллоу-апи та відповіді** | Калькулятор ритму фоллоу-апів і заготовлені нагадування (`followup-cadence.mjs`, `followup-seed.mjs`); класифікація відповідей роботодавця в оновлення трекера ([`reply-watch`](modes/reply-watch.md)) | | **Система плагінів** | Опціональні інтеграції (Gmail, Notion, Apify + реєстр спільноти), вимкнені за замовчуванням; див. [docs/PLUGINS.md](docs/PLUGINS.md) |
## Як це працює

How it works: you paste a job URL or description. Archetype Detection classifies it as LLMOps, Agentic, PM, SA, FDE or Transformation. The A-H Evaluation reads cv.md and covers match, gaps, comp research, STAR stories and legitimacy. It produces a report (reports/*.md), the tailored CV in the format set by cv.output_format — a PDF by default — and a tracker entry (data/applications.md).

## Швидкий старт **Найшвидший шлях, одна команда:** ```bash npx @santifer/career-ops init ``` > 💡 `npx` іде разом із [Node.js](https://nodejs.org): він запускає інсталятор один раз, > нічого не встановлюючи глобально. Ще немає Node? Спершу встановіть його. > (Уже користуєтеся CLI Claude Code / Codex? Тоді він у вас уже є.) Це клонує останній реліз у `./career-ops` і встановлює залежності. Потім: ```bash cd career-ops claude # or codex / qwen / opencode / agy / grok — open your AI CLI here ``` **При першому запуску career-ops проведе вас через налаштування (ваше резюме, профіль і цільові ролі) просто в розмові. Нічого не треба редагувати вручну.**
Хочете налаштувати вручну? (git clone) ```bash git clone https://github.com/career-ops-hq/career-ops.git cd career-ops && npm install npx playwright install chromium # only needed for PDF generation # On a non-Debian/Ubuntu Linux distro (Fedora, Arch, ...), Chromium's system # libraries aren't installed by the line above — install them yourself with # your distro's package manager if PDF generation fails to launch the browser # (Playwright's own docs list the required libraries per platform). # 2. Open your AI CLI in this directory. On first launch it walks you # through setup (your CV, profile and target roles) by chatting claude # or codex / opencode / qwen / agy / grok # Then ask your CLI to adapt the system to you: # "Change the archetypes to backend engineering roles" # "Translate the modes to English" # "Add these 5 companies to portals.yml" # "Update my profile with this CV I'm pasting" # 3. Start using # Вставте URL вакансії або текст опису, щоб запустити auto-pipeline. # Усі інші режими й те, як викликати їх у вашому CLI: див. розділ «Використання» нижче. ```
### Глобальне встановлення ```bash npm i -g @santifer/career-ops ``` Це встановлює бінарник `career-ops` глобально, тож ви можете запускати `career-ops init [folder]` без `npx`. `init` — його єдина команда: вона створює робочий простір, а все подальше відбувається всередині вашого AI-кодинг CLI (див. «Використання» нижче), а не через цей бінарник. **Що обрати?** - `npx @santifer/career-ops init`: найкраще для першого запуску; створює окрему теку проєкту. - `npm i -g @santifer/career-ops`: якщо вам зручніше набирати `career-ops init`, ніж форму з `npx`. Інших команд він не додає. ### Інші способи запуску - **З будь-якої теки, як плагін Claude Code:** [docs/CLAUDE_PLUGIN.md](docs/CLAUDE_PLUGIN.md). - **Без ШІ-CLI:** автономні скрипти для Gemini, Ollama та OpenAI-сумісних моделей оцінюють вакансію самостійно. Див. [docs/SCRIPTS.md](docs/SCRIPTS.md#geminieval--ollamaeval--openaieval). > **Система спроєктована так, щоб її налаштовував сам ваш AI-кодинг CLI.** Режими, архетипи, ваги оцінювання, скрипти переговорів: просто попросіть його змінити їх. Він читає ті самі файли, якими користується, тож точно знає, що редагувати. Дивіться [docs/SETUP.md](docs/SETUP.md) для повного посібника з налаштування, [docs/RUNNING_ON_A_BUDGET.md](docs/RUNNING_ON_A_BUDGET.md) для дешевого запуску career-ops на власних або локальних моделях (і [docs/FREE_TIER.md](docs/FREE_TIER.md) для запуску без витрат на безкоштовному тарифі Antigravity CLI), [docs/AUTOMATION.md](docs/AUTOMATION.md) для планування регулярних сканувань і рецепту відбору в шортліст без витрат токенів, [docs/APPLY_AUTOFILL.md](docs/APPLY_AUTOFILL.md) для деталей автозаповнення форм ATS, [docs/LINKEDIN_JOIN.md](docs/LINKEDIN_JOIN.md) для звірки експорту ваших контактів LinkedIn з компаніями у вашій воронці, та [docs/FAQ.md](docs/FAQ.md) для відповідей на типові питання з налаштування, зокрема [як походження історій запобігає вигаданим цифрам](docs/FAQ.md#why-does-career-ops-refuse-to-use-a-number-from-my-story-bank). Принципи дизайну в [ARCHITECTURE.md](ARCHITECTURE.md); потоки виконання в [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md). ## Використання Вставте URL або опис вакансії у ваш ШІ-CLI. career-ops перевіряє, що вакансія за посиланням ще відкрита (у вставленого тексту немає посилання для перевірки), оцінює її за вашим резюме, пише звіт, адаптує ваше резюме (за замовчуванням у PDF) і додає рядок до трекера. Цього вистачає на більшість днів. Усе інше — режими, які ви викликаєте за назвою. Якщо вакансію не вдається прочитати, пайплайн зупиняється і просить вставити текст. ### Як викликати режим | CLI | Як викликати `scan` | | --- | --- | | Claude Code, OpenCode, Antigravity CLI (`agy`), Grok Build CLI | `/career-ops scan` | | Pi | `/skill:career-ops scan` | | Codex, Qwen, Cursor або будь-який інший підтримуваний CLI | Звичайною мовою: "Run the career-ops scan mode" | `/career-ops` без аргументів показує меню команд у CLI, які його використовують. Звичайна мова працює в будь-якому підтримуваному CLI. Якщо career-ops встановлено як плагін Claude Code, команда має вигляд `/career-ops:career-ops`. Усі вони мають один спільний роутер, `.agents/skills/career-ops/SKILL.md`, і ті самі файли `modes/*.md`, тому будь-який CLI спрямовує запит однаково (режимам, що активно використовують браузер, також потрібні інструменти Playwright). Slash-команди в Codex не гарантовані: просіть звичайною мовою або запустіть один промпт у headless-режимі через `codex exec "Evaluate this JD with career-ops auto-pipeline: https://company.com/jobs/123"` ([docs/CODEX.md](docs/CODEX.md)). Як запускати career-ops у кожному підтримуваному CLI, headless-команди там, де вони є, і нотатки щодо налаштування окремих CLI — у [docs/SUPPORTED_CLIS.md](docs/SUPPORTED_CLIS.md). ### Щоденні команди | Команда | Що робить | | --- | --- | | *вставте URL або опис вакансії* | Повний пайплайн: перевірка, що вакансія ще відкрита (лише для URL), оцінка за блоками A-G (і H, якщо бал високий), звіт, адаптоване резюме (за замовчуванням PDF), рядок у трекері | | `scan` | Сканує ваші портали в пошуку нових вакансій і додає їх до вхідних (`data/pipeline.md`) | | `pipeline` | Обробляє URL, що чекають у вхідних (рівні standard і premium можуть пропускати явні невідповідності) | | `apply` | Заповнює форму заявки разом із вами, поле за полем. Зупиняється перед надсиланням | | `tracker` | На якому етапі кожна заявка | | `followup` | За якими заявками час нагадати про себе, з готовими чернетками |
Усі команди за етапами пошуку `oferta`, `ofertas` і `contacto` зберігають первісні іспанські назви: пропозиція, пропозиції, контакт. **Знайти вакансії** | Команда | Що робить | | --- | --- | | [`scan`](modes/scan.md) | Сканує портали та знаходить нові вакансії | | [`discover`](modes/discover.md) | Перетворює список назв компаній на сторінки вакансій в ATS, які можна сканувати. За замовчуванням лише показує попередній перегляд і додає їх до `portals.yml` тільки з `--write` (без токенів) | | [`pipeline`](modes/pipeline.md) | Обробляє відкладені URL із вхідних (`data/pipeline.md`) | | [`triage`](modes/triage.md) | Швидка первинна оцінка «варто / не варто» за `modes/_brief.md` перед повною оцінкою (файлів не пише) | | [`batch`](modes/batch.md) | Оцінює багато вакансій headless-воркерами (паралельно з Claude, по одній з іншими CLI) | | [`titles`](modes/titles.md) | Пропонує суміжні назви посад за вашим резюме, щоб розширити пошук | **Оцінити вакансію** | Команда | Що робить | | --- | --- | | *вставте URL або опис вакансії* | [Auto-pipeline](modes/auto-pipeline.md): оцінка + звіт + адаптоване резюме (за замовчуванням PDF) + запис у трекері | | [`oferta`](modes/oferta.md) | Лише оцінка за блоками A–G (і H, якщо бал високий), без PDF | | [`ofertas`](modes/ofertas.md) | Порівнює та ранжує кілька вакансій | | [`deep`](modes/deep.md) | Промпт для глибокого дослідження компанії | | [`eu-swe`](modes/regional/eu-swe.md) | Калібрує європейську заявку на посаду в розробці ПЗ перед резюме, заявкою або співбесідою | **Подати заявку** | Команда | Що робить | | --- | --- | | [`pdf`](modes/pdf.md) | ATS-оптимізоване резюме у PDF | | [`ats`](modes/ats.md) | Перевірка сумісності згенерованого резюме з ATS: оцінка та проблеми, які можна виправити | | [`text`](modes/text.md) | Адаптоване резюме у markdown (повторює `cv.md`, без PDF) | | [`latex`](modes/latex.md) | Експортує резюме в LaTeX/Overleaf `.tex` | | [`latex-tex`](modes/latex-tex.md) | Адаптує ваш власний `resume.tex` на місці (за бажанням; `cv.md` лишається типовим) | | [`cover`](modes/cover.md) | Супровідний лист за вставленим описом вакансії або за оціненим звітом (`cover {slug}`) | | [`email`](modes/email.md) | Чернетка офіційного листа-заявки. Лише чернетка: нічого не надсилає і не натискає | | [`contacto`](modes/contacto.md) | Знаходить менеджера з найму, рекрутера або колегу та готує чернетку повідомлення в LinkedIn | | [`apply`](modes/apply.md) | Допомагає заповнити заявку в реальному часі (Playwright з цього репозиторію). Не надсилає | **Співбесіда** | Команда | Що робить | | --- | --- | | [`interview-prep`](modes/interview-prep.md) | Документ підготовки до співбесіди під конкретну компанію | | [`interview/plan`](modes/interview/plan.md) | План підготовки за часовими блоками до майбутньої співбесіди | | [`interview/practice`](modes/interview/practice.md) | Тренувальна співбесіда, по одному питанню, зі зворотним зв'язком | | [`interview/debrief`](modes/interview/debrief.md) | Розбір після співбесіди: закрити прогалини, передбачити наступний раунд | | [`interview-redflag`](modes/interview-redflag.md) | Аналізує тривожні ознаки роботодавця, перш ніж ви підете до нього працювати | **Після заявки** | Команда | Що робить | | --- | --- | | [`tracker`](modes/tracker.md) | Огляд статусів заявок | | [`followup`](modes/followup.md) | Ритм фоллоу-апів: позначає прострочені заявки, генерує чернетки | | [`reply-watch`](modes/reply-watch.md) | Класифікує відповіді роботодавців і пропонує оновлення трекера | | [`outcome`](modes/outcome.md) | Записує результат заявки та архівує її артефакти | | [`offer-prep`](modes/offer-prep.md) | Читає разом із вами отриманий офер або договір: розбір пунктів і питання до юриста (не юридична консультація) | **Ваш профіль і резюме** | Команда | Що робить | | --- | --- | | [`interview`](modes/interview.md) | Налаштування профілю: інтерактивне інтерв'ю про ваш досвід, з якого будуються резюме та профіль (це не тренувальна співбесіда) | | [`intake`](modes/intake.md) | Створює або доповнює профіль за файлами з `documents/` (основне резюме, експорт LinkedIn). Без вашого підтвердження нічого не записується | | [`master-profile`](modes/master-profile.md) | Імпортує, перевіряє та валідує ваш Master Career Profile і готує вибрані факти як пункти резюме | | [`add`](modes/add.md) | Додає проєкт, статтю або роль до резюме (завантаження, попередній перегляд, підтвердження) | | [`expand`](modes/expand.md) | Знаходить компетенції, яких бракує в резюме, за посиланнями з вашого профілю | | [`retro`](modes/retro.md) | Розбирає цю сесію й зберігає як правила те, чого ви навчили агента (записує лише ті, що ви приймете) | **Покращити таргетинг** | Команда | Що робить | | --- | --- | | [`patterns`](modes/patterns.md) | Аналізує закономірності відмов і покращує таргетинг | | [`calibrate`](modes/calibrate.md) | Перевіряє, чи ваші оцінки передбачають реальні результати. Лише рекомендації: оцінки ніколи не змінює | | [`upskill`](modes/upskill.md) | Аналіз прогалин у навичках за вашими оціненими звітами | | [`training`](modes/training.md) | Оцінює курс або сертифікацію відносно вашої North Star | | [`project`](modes/project.md) | Оцінює ідею проєкту для портфоліо | **Система** | Команда | Що робить | | --- | --- | | [`agent-inbox`](modes/agent-inbox.md) | Ставить запити в чергу на наступну сесію й опрацьовує їх уже в ній (`data/agent-inbox.md`). `inbox` теж працює | | [`update`](modes/update.md) | Оновлює системні файли career-ops з попереднім переглядом diff і перевіркою сумісності |
## Попередньо налаштовані портали Сканер постачається зі **100+ компаніями**, готовими до сканування, і **35+ пошуковими запитами** по основних дошках вакансій. Скопіюйте `templates/portals.example.yml` у `portals.yml` і додайте свої: **AI-лабораторії:** Anthropic, OpenAI, Mistral, Cohere, LangChain, Pinecone **Голосовий AI:** ElevenLabs, PolyAI, Parloa, Hume AI, Deepgram, Vapi, Bland AI **AI-платформи:** Retool, Airtable, Vercel, Temporal, Glean, Arize AI **Контакт-центри:** Ada, LivePerson, Sierra, Decagon, Talkdesk, Genesys **Enterprise:** Salesforce, Twilio, Gong, Dialpad **LLMOps:** Langfuse, Weights & Biases, Lindy, Cognigy, Speechmatics **Автоматизація:** n8n, Zapier, Make.com **Європа:** Factorial, Attio, Tinybird, Clarity AI, Travelperk **Дошки вакансій, що скануються:** 55+ модулів провайдерів покривають API ATS, стрічки цілих дошок, XML/RSS-стрічки, markdown-стрічки та локальні парсери. Повна таблиця: [Підтримувані дошки вакансій](docs/SUPPORTED_JOB_BOARDS.md). За замовчуванням `node scan.mjs` (він же `npm run scan`) довіряє тому, що повертає кожна стрічка ATS. Деякі компанії залишають застарілі оголошення у своєму публічному API навіть після закриття вакансії, тож ці прострочені записи можуть потрапити в `pipeline.md`. Передайте `--verify`, щоб після проходу API запустити Playwright і відкинути прострочені оголошення до того, як вони потраплять у конвеєр: ```bash node scan.mjs --verify # zero-token discovery + Playwright liveness check ``` Перевірка послідовна і виконується лише для нових вакансій (після дедуплікації), тож вартість лишається обмеженою. ## Дашборд TUI Вбудований термінальний дашборд дає змогу переглядати ваш конвеєр візуально: ```bash npm run serve:dashboard # launch the TUI npm run build:dashboard # optional: build the standalone binary ``` Функції: 10 вкладок фільтрів, 8 режимів сортування, згрупований/плоский вигляд, ліниве завантаження попереднього перегляду, зміна статусів у рядку. Є також **експериментальний веб-інтерфейс** (альфа, опційно: нічого не запускається, поки ви його не запустите): дивіться [`web/README.md`](web/README.md). ## Структура проєкту ``` career-ops/ ├── AGENTS.md # Canonical agent instructions (all CLIs) ├── CLAUDE.md # Claude Code wrapper (imports AGENTS.md) ├── CODEX.md # Codex wrapper (imports AGENTS.md) ├── OPENCODE.md # OpenCode wrapper (imports AGENTS.md) ├── GEMINI.md # Legacy no-op guard to avoid Antigravity duplicate context ├── cv.md # Your CV (create this) ├── article-digest.md # Your proof points (optional) ├── config/ │ └── profile.example.yml # Template for your profile ├── modes/ # Skill modes │ ├── _shared.md # Shared context (customize this) │ ├── oferta.md # Single evaluation │ ├── pdf.md # PDF generation │ ├── cover.md # Cover letter generation │ ├── email.md # Formal application email drafts │ ├── scan.md # Portal scanner │ ├── batch.md # Batch processing │ └── ... ├── templates/ │ ├── cv-template.html # ATS-optimized CV template │ ├── portals.example.yml # Scanner config template │ └── states.yml # Canonical statuses ├── batch/ │ ├── batch-prompt.md # Self-contained worker prompt │ └── batch-runner.sh # Orchestrator script ├── dashboard/ # Go TUI pipeline viewer ├── data/ # Your tracking data (gitignored) ├── reports/ # Evaluation reports (gitignored) ├── output/ # Generated PDFs (gitignored) ├── fonts/ # Space Grotesk + DM Sans ├── docs/ # Setup, customization, budget guide, architecture └── examples/ # Sample CV, report, proof points ``` ## Зовнішній каталог даних (опційно) За замовчуванням дані користувацького шару (такі як `cv.md`, `portals.yml` і теки `data/`, `reports/`, `output/`) живуть у кореневій теці проєкту. Щоб відокремити особисті дані від коду (простіше перемикати гілки, підтягувати оновлення чи тестувати кілька профілів), ви можете налаштувати зовнішній каталог даних із таким пріоритетом: 1. **Змінні середовища:** задайте змінну `CAREER_OPS_ROOT` або `CAREER_OPS_DATA_DIR`: ```bash export CAREER_OPS_ROOT=~/my-career-data ``` 2. **Файл-маркер:** створіть у корені репозиторію файл `.career-ops-data` зі шляхом до вашого каталогу даних. 3. **За замовчуванням:** корінь репозиторію. Після визначення всі користувацькі файли розв'язуються і записуються відносно цієї теки, тоді як файли промптів і скрипти далі розв'язуються відносно репозиторію. - **Перевизначення трекера:** можна також задати `CAREER_OPS_TRACKER`, щоб напряму вказати шлях до файлу трекера заявок. - **Записи:** усі операції запису (наприклад, злиття) канонічно спрямовані в `{DATA_ROOT}/data/applications.md`. - **Конфігурація сканера:** `portals.yml` читається й валідується за шляхом `{DATA_ROOT}/portals.yml`, тож `node validate-portals.mjs` перевіряє той самий файл, який читає `scan.mjs`. - **Згенеровані документи:** адаптовані резюме та супровідні листи записуються в `{DATA_ROOT}/output/`, а PDF-маніфест, що пов'язує їх зі звітом, лежить у `{DATA_ROOT}/data/pdf-index.tsv`. Поки `CAREER_OPS_TRACKER` не задано, робочим простором трекера, що обмежує ці записи, є корінь даних, а не checkout репозиторію. - **PDF із перевизначеним трекером:** `generate-pdf.mjs` розв'язує `CAREER_OPS_TRACKER` до того, як визначити робочий простір, тож із заданим перевизначенням робочим простором стає тека з цим трекером (або тека рівнем вище, якщо трекер лежить у теці `data/`). HTML резюме і кожен PDF мають тоді бути всередині цього робочого простору, а маніфест переїжджає в його `data/pdf-index.tsv`. Супровідні листи й далі записуються в `{DATA_ROOT}/output/`, тож їх буде відхилено, якщо ця тека опиниться поза робочим простором трекера. - **Шар коду лишається на місці:** `node_modules/`, `providers/`, `modes/` і самі скрипти завжди розв'язуються відносно репозиторію, ніколи відносно кореня даних. Дашборд TUI на Go, скрипти Node.js і режими AI-агента автоматично дотримуються цієї ієрархії. ## Технологічний стек ![Claude Code](https://img.shields.io/badge/Claude_Code-000?style=flat&logo=anthropic&logoColor=white) ![Node.js](https://img.shields.io/badge/Node.js-339933?style=flat&logo=node.js&logoColor=white) ![Playwright](https://img.shields.io/badge/Playwright-2EAD33?style=flat&logo=playwright&logoColor=white) ![Go](https://img.shields.io/badge/Go-00ADD8?style=flat&logo=go&logoColor=white) ![Bubble Tea](https://img.shields.io/badge/Bubble_Tea-FF75B5?style=flat&logo=go&logoColor=white) - **Агент**: AI-кодинг CLI зі спільними скілами та режимами (`AGENTS.md` + обгортка для CLI) - **PDF**: Playwright + HTML-шаблон - **Супровідні листи**: HTML-шаблон + Playwright (A4 PDF, той самий конвеєр, що й для резюме) - **Сканер**: Playwright + Greenhouse API + WebSearch - **Дашборд**: Go + Bubble Tea + Lipgloss (тема Catppuccin Mocha) - **Дані**: таблиці Markdown + конфігурація YAML + пакетні файли TSV

Latest release

Built with Claude Code

Працює також у будь-якому CLI зі стандартом agent skills. Див. підтримувані CLI.
Claude Code OpenCode Antigravity CLI Codex Qwen Kimi GitHub Copilot Grok Build CLI Pi
Node.js Go Playwright Bubble Tea MIT Trademark Policy

## Також у відкритому коді - **[cv-santiago](https://github.com/santifer/cv-santiago)**: сайт-портфоліо (santifer.io) з AI-чатботом, дашбордом LLMOps і кейс-стаді. Якщо вам потрібне портфоліо на додачу до пошуку роботи, зробіть форк і зробіть його своїм. ## FAQ **Що таке career-ops?** career-ops ([career-ops.org](https://career-ops.org), також відомий як **careerops**) є AI-пошуком роботи з відкритим кодом, який працює локально у вашому AI-кодинг CLI (Claude Code, Codex, OpenCode та інших) і залишає кожне рішення за вами. Він оцінює вакансії відносно вашого резюме, генерує ATS-адаптовані PDF, знаходить потрібну людину для контакту і відстежує все в одному місці: останнє слово завжди за вами. Це перша еталонна реалізація [Маніфесту CareerOps](https://career-ops.org/manifesto). **Чи може адаптоване резюме щось вигадати?** Не має права, і промпти це кажуть: переформульовувати, ніколи не вигадувати. `generate-pdf` блокує резюме, у якому є цифри чи факти, відсутні у ваших джерелах, якщо тільки ви не передасте `--skip-fact-check`. Режим `pdf` також запускає `cv-title-check.mjs`: він порівнює кожну назву посади в адаптованому резюме з назвою, яку cv.md дає тій самій роботі (зіставлення за компанією та датами), і питає, залишити чи повернути кожну, що відрізняється. Він лише попереджає, а не блокує, бо переформулювати назву посади іноді ваше рішення. Переформулювання поки ніщо не оцінює: це відстежує [#1411](https://github.com/career-ops-hq/career-ops/issues/1411) (перевірка достовірності, що блокує в разі невідповідності). До того часу читайте кожне резюме перед відправкою. [Юридичне застереження](LEGAL_DISCLAIMER.md) каже те саме довше. **Чи можу я запускати career-ops безкоштовно або на дешевшій / локальній моделі?** Так. career-ops не залежить від CLI і працює на безкоштовних та локальних моделях (безкоштовні моделі OpenRouter, Ollama або будь-який OpenAI-сумісний ендпоінт), тож ви не прив'язані до платної підписки. Повне налаштування: [docs/RUNNING_ON_A_BUDGET.md](docs/RUNNING_ON_A_BUDGET.md). **Я плачу за Claude Pro/Max, але career-ops спалює API-кредити. Чому?** Бо `ANTHROPIC_API_KEY` у вашому середовищі має пріоритет над підпискою, в яку ви увійшли: CLI використовує ключ і тарифікує за токен. Виконайте `echo $ANTHROPIC_API_KEY`, і якщо щось виводиться, приберіть його з профілю оболонки, перезапустіть термінал і виконайте `/login`. Пакетний режим є винятком, бо воркери `claude -p` не використовують інтерактивний вхід: один раз виконайте `claude setup-token` і експортуйте результат як `CLAUDE_CODE_OAUTH_TOKEN`. Повний покроковий опис: [docs/RUNNING_ON_A_BUDGET.md](docs/RUNNING_ON_A_BUDGET.md#2b-already-paying-for-a-subscription-make-sure-you-are-using-it). **З якими AI CLI працює career-ops?** career-ops працює з будь-яким основним AI-кодинг CLI (Claude Code, Codex, Gemini / Antigravity, OpenCode, Grok, Qwen та іншими) через відкритий Agent Skill Standard, тож ніколи не прив'язаний до одного вендора. Використовуйте той CLI, що у вас уже є. **Як встановити career-ops на Windows?** career-ops працює на Windows. Специфічне для платформи налаштування і відомі гострі кути (пошук Git Bash, кінці рядків, Планувальник завдань) описано в [docs/WINDOWS.md](docs/WINDOWS.md). Якщо скіли не завантажуються з помилкою символічного посилання під час встановлення, рішення в [docs/FAQ.md](docs/FAQ.md). Повні кроки в [docs/SETUP.md](docs/SETUP.md). **Чи подає career-ops заявки замість мене?** Ні. career-ops є фільтром, а не інструментом масової автоматичної розсилки. AI оцінює, ранжує і готує чернетки; ви переглядаєте і вирішуєте. Він готує чернетки й заповнює поля; він ніколи не подає заявку. Ви натискаєте «Надіслати». Саме в цьому дизайні з людиною в контурі вся суть. **Чи career-ops безкоштовний і з відкритим кодом?** Так. career-ops безкоштовний і з відкритим кодом, і для кандидата так буде завжди. Це перша еталонна реалізація [Маніфесту CareerOps](https://career-ops.org/manifesto). Прочитайте його, і якщо він каже те, у що ви вірите, підпишіть. ## Про автора Я [Santiago Fernández de Valderrama Aparicio](https://santifer.io/about) (santifer), колишній засновник: побудував і продав бізнес, який досі працює під моїм ім'ям. Я створив career-ops для управління власним пошуком роботи, і це спрацювало: з його допомогою я отримав посаду Head of Applied AI. Через пів року я залишив цю посаду, щоб зосередитися на career-ops і працювати над ним повний робочий день. Цікаво, як флот AI-агентів підтримує репозиторій такого розміру, а рішення про кожне злиття ухвалює людина? Читайте [Agentic maintenance: how career-ops is run by a fleet of AI agents](https://santifer.io/ai-agent-fleet). Моє портфоліо та інші open source проєкти → [santifer.io](https://santifer.io) Wikidata: [Santiago Fernández de Valderrama Aparicio](https://www.wikidata.org/wiki/Q138710224) · [career-ops](https://www.wikidata.org/wiki/Q139007988). ## Застереження **career-ops є локальним інструментом з відкритим кодом, а НЕ хмарним сервісом.** Використовуючи це програмне забезпечення, ви підтверджуєте: 1. **Ви контролюєте свої дані.** Ваше резюме, контактна інформація та персональні дані залишаються на вашому комп'ютері і надсилаються безпосередньо обраному вами AI-провайдеру (Anthropic, OpenAI тощо). Ми не збираємо, не зберігаємо і не маємо доступу до жодних ваших даних. 2. **Ви контролюєте AI.** Промпти за замовчуванням інструктують AI не подавати заявки автоматично, але AI-моделі можуть поводитися непередбачувано. Якщо ви змінюєте промпти або використовуєте інші моделі, ви робите це на власний ризик. **Завжди перевіряйте точність згенерованого AI контенту перед надсиланням.** 3. **Ви дотримуєтеся умов сервісу третіх сторін.** Ви повинні використовувати цей інструмент відповідно до Умов використання кар'єрних порталів, з якими взаємодієте (Greenhouse, Lever, Workday, LinkedIn тощо). Не використовуйте цей інструмент для спаму роботодавцям чи перевантаження систем ATS. 4. **Без гарантій.** Оцінки є рекомендаціями, а не істиною. AI-моделі можуть вигадувати навички або досвід. Автори не несуть відповідальності за результати працевлаштування, відхилені заявки, обмеження облікових записів чи будь-які інші наслідки. Дивіться [LEGAL_DISCLAIMER.md](LEGAL_DISCLAIMER.md) за повною інформацією. Це програмне забезпечення надається за [ліцензією MIT](LICENSE) "як є", без будь-яких гарантій. ## Контриб'ютори Усі, хто зробив внесок кодом, документацією, перекладами чи тестами, перелічені в [CONTRIBUTORS.md](CONTRIBUTORS.md), включно з внесками без коду, які графік вище показати не може. Отримали роботу з career-ops? [Поділіться своєю історією!](https://github.com/career-ops-hq/career-ops/issues/new?template=i-got-hired.yml) ## Ліцензія та торгова марка Код ліцензовано за [MIT](LICENSE). Назва та бренд "career-ops" регулюються [Політикою торгової марки](TRADEMARK.md): дозвільною для використання спільнотою, зарезервованою для назв комерційних продуктів і схвалень. ## Історія зірок

Live star telemetry of career-ops-hq/career-ops

Створив і підтримує Santiago Fernández de Valderrama Aparicio (@santifer)

## Контакти [![Website](https://img.shields.io/badge/santifer.io-000?style=for-the-badge&logo=safari&logoColor=white)](https://santifer.io) [![LinkedIn](https://img.shields.io/badge/LinkedIn-0A66C2?style=for-the-badge&logo=linkedin&logoColor=white)](https://linkedin.com/in/santifer) [![X](https://img.shields.io/badge/X-000?style=for-the-badge&logo=x&logoColor=white)](https://x.com/santifer) [![Discord](https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/8pRpHETxa4) [![Email](https://img.shields.io/badge/Email-EA4335?style=for-the-badge&logo=gmail&logoColor=white)](mailto:hi@santifer.io)