Введение в Career-Ops: заставьте AI-агента отфильтровать 700+ вакансий и сгенерировать 100+ персонализированных резюме

June 9, 2026

Одним предложением: вы уже пишете код с помощью Claude Code — почему бы не использовать его и для поиска работы? Career-Ops превращает AI-программирующий CLI в командный центр для трудоустройства: вставьте URL JD, и он автоматически оценит вакансии, сгенерирует ATS-резюме и будет отслеживать прогресс. Сам автор отфильтровал с помощью него 740+ офферов, сгенерировал 100+ персонализированных резюме и в итоге вышел на работу на позицию Head of Applied AI.

Обзор проекта

Career-Ops (также известен как careerops) — это AI-ориентированный конвейер для поиска работы, GitHub: santifer/career-ops, лицензия MIT. Его ключевая идея:

Превратить любой AI-программирующий CLI в полноценный командный центр поиска работы.

Это не очередной инструмент «AI улучшает резюме» и не бот для массовой рассылки. Философия Career-Ops — делать вычитание: из сотен офферов помочь вам отобрать только те, в которые действительно стоит подаваться, используя оценку A–F + 6 больших измерений + оптимизированный под ATS PDF + полностью автоматическое отслеживание.

Ключевые возможности (15 slash-команд):

СценарийКомандаОписание
Вставить JD URL/career-opsАвтоконвейер (оценка + отчёт + PDF + трекер)
Оценка одного варианта/career-ops evaluateОценка A–F + анализ по 6 измерениям
Сравнение нескольких/career-ops compareСортировка по нескольким офферам
Сканирование вакансий/career-ops scan45+ преднастроенных компаний, запуск Ashby/Greenhouse/Lever API
Массовая оценка/career-ops batchПараллельный запуск claude -p workers
Генерация PDF/career-ops pdfATS-оптимизированное резюме (шрифты Space Grotesk + DM Sans)
Экспорт в LaTeX/career-ops latexУдобный для Overleaf .tex
Отслеживание отправок/career-ops trackerОбщая сводка по статусам
Заполнение форм заявок/career-ops applyПомощь AI при заполнении форм (без нажатия Submit)
Глубокое исследование/career-ops deepИсследование компании
Подготовка к интервью/career-ops interviewИстории STAR+R под компанию
Установление контакта в LinkedIn/career-ops contactПоиск людей + черновик сообщения
Режим ретроспективы (patterns)/career-ops patternsАнализ отказов, оптимизация стратегии
Темп follow-up/career-ops followupТайминг и планирование повторных контактов
Оценка курсов/проектов/career-ops training / projectПуть саморазвития

Поддерживаемые AI-программирующие CLI: Claude Code / OpenCode / Gemini CLI / Codex / Qwen / GitHub Copilot / Kimi — главное, чтобы они соответствовали open agent skill standard.

Поддержка языков: по умолчанию английский; также есть немецкий (modes/de/) / французский (modes/fr/) / японский (modes/ja/) / турецкий (modes/tr/) / упрощённый китайский (README.cn.md) / традиционный китайский (README.zh-TW.md).

Результаты: автор santifer с его помощью оценил 740+ офферов, сгенерировал 100+ персонализированных резюме и в итоге получил оффер Head of Applied AI.

Сложность / длительность / что вы получите

  • Сложность: ⭐⭐ (средняя; нужно уметь пользоваться AI-программирующим CLI вроде Claude Code)
  • Время: 30–60 минут на первичное onboarding (включая подготовку cv.md + настройку profile)
  • Что вы получите:
    • Пройдёте настоящий рабочий AI-конвейер для трудоустройства
    • Поймёте дизайн архитектуры агента «User Layer vs System Layer»
    • Научитесь делать точечный поиск с помощью A–F и историй STAR+R
    • Увидите, как собрать open-source проект, который освещали WIRED / Business Insider
    • Подготовите «в кармане» 15 slash-команд и будете использовать их каждый день в период поиска работы

Портрет целевого читателя

  • Разработчики, которые сейчас ищут работу / меняют работу / смотрят возможности
  • Уже пользуются Claude Code / OpenCode / Gemini CLI
  • Хотят перейти с «массовых рассылок» на «точечную подачу» и не тратить время на мусорные офферы
  • Хотят понять, как выглядит production-level AI-агент проект с 7k+ stars

TIP

Самые дорогие расходы в период поиска работы — это токены. В batch-режиме Career-Ops оценка 10+ офферов доставляет удовольствие, но когда вы прогоняете 100 офферов через официальные API Claude / Anthropic, за ночь счёт становится $20–40, а за месяц легко выходит пятизначная (в валюте) сумма — это нормально.

Как подключаю я (делюсь, не рекомендую): подключаю Defapi, используется Anthropic-совместимый протокол — достаточно изменить Base URL одной строкой:

# Допустим, вы используете Claude Code — поменяйте в ~/.claude/settings.json или в env
ANTHROPIC_BASE_URL=https://api.defapi.org
ANTHROPIC_API_KEY=sk-xxxxx   # получить в админке defapi.org

Все модели Defapi в основном совместимы с тремя популярными наборами протоколов — v1/chat/completions (OpenAI) / v1/messages (Anthropic) / v1beta/models (Gemini) — без правок на стороне Agent: оценки prompt / истории STAR / schema трекера остаются прежними. Модель всё та же, просто закупка обходится дешевле — и токен-счёт за месяц в реальности срезается почти вдвое. Дальше в FAQ Q5 это раскрою.

Базовые зависимости и окружение

Минимальные требования:

ПроектТребования
Node.js20+
AI-программирующий CLIминимум один (Claude Code / OpenCode / Gemini CLI / Codex / Qwen / Copilot)
PlaywrightChromium-браузер (нужен для генерации PDF)
ОСmacOS / Linux / Windows (WSL рекомендуется)

Опционально / усиление:

ПроектЗачем
Go 1.21+запуск TUI Dashboard
Google AI Studio API Keyзапуск отдельного скрипта gemini-eval.mjs (бесплатная квота)
Chromium браузерпроверка, живы ли офферы (Playwright установит автоматически)
Разные LLM API Keyдостаточно протокола для подключения Claude / OpenAI / Anthropic

TIP

Не обязательно оформлять подписку Claude Max. Career-Ops — это «LLM-протокол-ориентированный» проект: любой API, совместимый с v1/messages или v1/chat/completions, подойдёт (конкретные способы подключения — см. TIP выше после раздела «Целевой читатель»).

Полное дерево структуры проекта

career-ops/
├── AGENTS.md                    # Общие инструкции для Agent (между CLI)
├── CLAUDE.md                    # Специфика для Claude Code (import AGENTS.md)
├── GEMINI.md                    # Специфика для Gemini CLI
├── cv.md                        # Ваше резюме (создаёте сами, ключевой файл)
├── article-digest.md            # Ваши доказательства ярких достижений (опционально)
├── config/
│   └── profile.example.yml      # Шаблон вашего профиля
├── modes/                       # 15 skill mode
│   ├── _shared.md               # общий контекст на уровне системы
│   ├── _profile.template.md     # кастомизация на уровне пользователя (ваш личный archetype)
│   ├── oferta.md                # оценка одного оффера
│   ├── pdf.md                   # генерация PDF
│   ├── scan.md                  # сканирование вакансий
│   ├── batch.md                 # пакетная обработка
│   ├── auto-pipeline.md         # URL → оценка + PDF + tracker
│   ├── de/                      # режим на немецком
│   ├── fr/                      # режим на французском
│   ├── ja/                      # режим на японском
│   └── tr/                      # режим на турецком
├── templates/
│   ├── cv-template.html         # ATS-шаблон CV для оптимизации
│   ├── cv-template.tex          # LaTeX-шаблон
│   ├── portals.example.yml      # 45+ преднастроенных компаний
│   └── states.yml               # словарь статусов отправок
├── data/                        # данные отправок (gitignored)
│   ├── applications.md          # основная таблица трекинга
│   ├── pipeline.md              # входной ящик для URL в обработку
│   ├── scan-history.tsv         # сканирование + дедупликация
│   └── follow-ups.md            # история follow-up
├── reports/                     # отчёты об оценке (gitignored)
├── output/                      # сгенерированные PDF (gitignored)
├── jds/                         # тексты JD храните тут (опционально)
├── interview-prep/              # подготовка к интервью
│   ├── story-bank.md            # накопленные истории STAR+R
│   └── {company}-{role}.md      # инсайты под компанию
├── batch/
│   ├── batch-prompt.md          # промпт для worker'ов
│   ├── batch-runner.sh          # скрипт-оркестратор
│   └── tracker-additions/       # добавления к основной таблице трекинга
├── dashboard/                   # Go TUI (Bubble Tea)
│   ├── main.go
│   └── internal/
├── fonts/                       # Space Grotesk + DM Sans
├── providers/                   # конфигурация LLM-провайдера
├── docs/                        # многоязычная документация + медиа-упоминания
├── examples/                    # примеры CV / отчётов / ярких моментов
└── *.mjs                        # скрипты для сканирования / валидации / мерджа / health-check

Как пользователь, вам нужно трогать только 4 файла: cv.md / config/profile.yml / modes/_profile.md / portals.yml — это и есть User Layer, системные обновления не будут его затрагивать. Всё остальное пусть обрабатывает Agent.

Пошаговая инструкция

Шаг 1: Clone + установка

git clone https://github.com/santifer/career-ops.git
cd career-ops
npm install
npx playwright install chromium   # нужен для генерации PDF

WARNING

Не пропускайте npx playwright install chromium. Далее команда /career-ops pdf рендерит через Playwright, и если Chromium нет — напрямую будет ошибка «browser not found».

Шаг 2: Health check

npm run doctor

Проверит версию Node.js, Playwright, ключевые файлы и права на директории. Если упадёт — врач подскажет, чего не хватает; исправьте и запустите снова.

Шаг 3: Создайте ваш cv.md

Это источник всего конвейера — без него Agent не сможет оценить офферы.

В корне проекта создайте cv.md:

# Your Name

**Email:** [email protected]
**Location:** Berlin, Germany (CET)
**LinkedIn:** linkedin.com/in/you
**GitHub:** github.com/you

## Summary

Senior backend engineer with 6 years building distributed systems...
(цель: 2–3 абзаца, пишите «что вы делаете + ваши 1–2 сильнейшие вещи»)

## Experience

### Staff Engineer — Company A (2023 - Present)
- Led migration of X to Y, reducing Z by 40%
- (по возможности с цифрами; Agent использует это для match JD)

### Senior Engineer — Company B (2020 - 2023)
- ...

## Education
...

## Skills
Backend: Go, Python, PostgreSQL, Kafka
AI/ML: PyTorch, LangChain, RAG
...

TIP

Не хотите писать сами? После запуска Claude Code скажите ему «я вставлю своё старое резюме» / «вот мой LinkedIn URL» / «я продиктую — помоги написать», и Agent превратит это в cv.md. В README есть подсказки для трёх сценариев onboarding.

Шаг 4: Настройте config/profile.yml

cp config/profile.example.yml config/profile.yml

Откройте config/profile.yml и заполните:

personal:
  name: "Your Name"
  email: "[email protected]"
  location: "Berlin, Germany"
  timezone: "CET"

targeting:
  roles:
    - "Senior Backend Engineer"
    - "Staff Engineer"
    - "AI Platform Engineer"
  comp_target:
    base_min: 130000
    base_target: 160000
    currency: "EUR"
  remote_preference: "remote-first"
  deal_breakers:
    - "no on-call"
    - "no Java"
    - "no < 20 person startups"

# Если хотите режимы на китайском / немецком / французском / японском / турецком — добавьте эту строку
# language:
#   modes_dir: modes/de

WARNING

Не меняйте modes/_shared.md вручную. Системные обновления перезапишут его. Ваш личный archetype / формулировки для переговоров / цели по зарплате — всё записывайте только в modes/_profile.md или config/profile.yml. Это правило Data Contract, которое многократно подчёркивается в README.

Шаг 5: Настройте portals.yml

cp templates/portals.example.yml portals.yml

По умолчанию включены 45+ компаний и 19 поисковых query — покрытие:

# AI Labs
- anthropic
- openai
- mistral
- cohere

# Voice AI
- elevenlabs
- vapi
- deepgram

# AI Platforms
- retool
- airtable
- vercel
- temporal

Хотите добавить свои компании, за которыми следите — просто добавьте их в portals.yml. Job board покрывает Ashby / Greenhouse / Lever / Wellfound / Workable / RemoteFront.

Шаг 6: Пусть Agent поможет вам «Onboard»

# выберите один из установленных AI CLI
claude       # Claude Code
# или
gemini       # Gemini CLI
# или
opencode     # OpenCode
# или
codex        # Codex

В CLI скажите:

Настрой мне career-ops. Я только что клонировал проект, cv.md и config/profile.yml уже заполнены.
Проверь, полный ли мой onboarding, и что ещё стоит добавить.

Agent прогонит проверку при запуске:

  1. cv.md есть? ✅
  2. config/profile.yml настоящий (не .example)? ✅
  3. modes/_profile.md сделан как копия из _profile.template.md? ⚠️
  4. portals.yml настоящий (не .example)? ✅

Любой ❌ переведёт в режим гида, где 1:1 подскажет, что нужно до заполнить.

TIP

При первом запуске Agent сам спросит: «кадровое достижение, которым вы больше всего гордитесь?», «какие ваши deal-breaker?», «в чём ваша суперсила?» — потрать 5 минут на вдумчивые ответы. Эта часть попадёт в modes/_profile.md, и именно от этого будет зависеть, насколько точной будет оценка в дальнейшем. В первую неделю это ощущается как onboarding нового рекрутера, а во вторую — он начнёт разбираться в вас лучше, чем большинство реальных recruiter’ов.

Шаг 7: Первая оценка

Вставьте Agent URL JD:

/career-ops https://jobs.anthropic.com/staff-software-engineer-applied-ai

Agent прогонит полностью автоматизированный конвейер:

  1. Определение archetype — классифицирует в LLMOps / Agentic / PM / SA / FDE / Transformation
  2. Оценка A–F — 6 измерений (Role summary / CV match / Level strategy / Comp research / Personalization / Interview prep)
  3. Генерация отчёта — записывает в reports/001-anthropic-2026-06-09.md
  4. Генерация PDF — рендерит ATS-резюме через Playwright и выводит в output/001-anthropic-cv.pdf
  5. Запись в трекер — добавляет строку в data/applications.md
  6. Проверка целостности pipeline — запускает node verify-pipeline.mjs для health-check

Через 30–60 секунд вы должны увидеть: полный отчёт об оценке + PDF ATS-резюме.

WARNING

Первая оценка будет неточной. Система ещё не знает вас — вероятны завышенные или заниженные баллы. Не переживайте: прогоните 3–5 оценок, а по результатам скажите Agent «этот скор я не согласен, потому что XX» / «я не упоминал, что у меня есть опыт XX» — и Agent запишет это как выученное в modes/_profile.md. Чем больше прогонов, тем точнее.

Шаг 8: Первая сканировка

/career-ops scan

или эквивалентно:

node scan.mjs                  # без токенов, только захват данных по API
node scan.mjs --verify         # API + повторная валидация через Playwright, фильтрация просроченных вакансий

После одного прохода (45+ преднастроенных компаний + 19 поисковых query) обычно появляется 200–500 новых вакансий — они сразу попадут во входной ящик data/pipeline.md. Затем claude -p workers параллельно запускают оценку; обработать за одну ночь 100+ офферов — не мечта.

Шаг 9: Запуск TUI Dashboard (опционально)

Если вы хотите смотреть прогресс в терминальном UI:

cd dashboard
go build -o career-dashboard .
./career-dashboard --path ..

6 фильтров вкладок, 4 режима сортировки, групповой/плоский вид, ленивые превью, состояние меняется при выборе. Тема Catppuccin Mocha — выглядит отлично.

Шаг 10: Обновление системы (важно!)

Career-Ops развивается быстро — раз в пару недель появляются новые modes / новые конфигурации компаний.

# в корне проекта, попросите Agent проверить
claude  # скажите ему: «проверь, есть ли у career-ops новая версия»

Agent автоматически запускает node update-system.mjs check, JSON-вывод выглядит примерно так:

{"status": "update-available", "local": "1.3.0", "remote": "1.4.0", "changelog": "..."}

Он сообщит: «v1.3.0 → v1.4.0 доступно, ваши данные (CV / profile / tracker / reports) не будут тронуты, обновляться?» Для обновления:

node update-system.mjs apply       # обновить
node update-system.mjs rollback    # если не понравилось — откатить

Частые вопросы и диагностика

Q1: cv.md не найден / Agent зависает на onboarding

Самая частая причина: cv.md лежит не в корне проекта.

# проверьте, что файл в корне
ls -la cv.md
# должно быть что-то вроде -rw-r--r-- cv.md

# если нет — создайте (в корне)
cd career-ops
touch cv.md
# затем заполните содержимое

Q2: Ошибка генерации PDF, «browser not found»

Не установлен Playwright или не установлен Chromium:

npx playwright install chromium
# если в сети из России всё медленно, можно добавить mirror
PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright npx playwright install chromium

Q3: Оценки завышены / занижены

Так бывает в первую неделю. Исправление:

  1. Прогоните 3–5 оценок — каждый раз дайте Agent обратную связь «с этим скором я не согласен, потому что XX»
  2. Agent запишет это в modes/_profile.md
  3. Сфокусируйтесь на том, есть ли дополняющее в modes/_profile.md: ваша минимальная зарплата / предпочтение по удалёнке / позиционирование роли / reverse case

Важно: персонализированный контент записывайте в modes/_profile.md или config/profile.yml, не меняйте modes/_shared.md — он будет перезаписан системными обновлениями.

Q4: Верификация WebSearch / WebFetch — насколько точно

Не точно. Внутреннее правило Career-Ops: обязательно верифицировать, что оффер ещё жив, через Playwright:

# через slash-команду, внутри запустится Playwright
/career-ops verify --url <JD_URL>

В batch-режиме (claude -p) Playwright недоступен — будет пометка **Verification:** unconfirmed (batch mode), и вы должны перепроверить вручную.

Q5: В batch-оценке токены начинают «улетать»

При оценке 100+ офферов за ночь легко набирается счёт более $20. Исправление в три шага:

  1. Уменьшить количество batch — прогоняйте по 10–20 за раз, не сканируйте сразу 100+
  2. Локальная модель в качестве запасного варианта — структурированные задачи типа ofertas (для сравнения) / tracker / pdf можно заменить локальными небольшими моделями
  3. Подключить Defapi API со скидкой — протокол полностью совместим; вы используете тот же тип модели, но месячный счёт выходит почти вдвое ниже (конкретная настройка — в TIP после раздела «Целевой читатель»)

Q6: Хотите сменить режим на немецкий / французский / японский / турецкий

# 1. Отредактируйте config/profile.yml
language:
  modes_dir: modes/de   # или fr / ja / tr

Или просто скажите Agent: «запусти на немецком», и он переключит логику оценок на modes/de/ (с локальными терминами рынка DACH: 13. Monatsgehalt / Probezeit / AGG / Tarifvertrag и т. п.).

WARNING

После переключения на modes/de/ вы будете прогонять и английские вакансии через немецкую оценку. Если вы подаёте не только на немецкие вакансии — оставляйте режим по умолчанию английским и вручную переключайте только для немецких офферов.

Q7: В полях статусов появляется «грязная» разметка вроде **Applied**

Статус трекера был вручную выделен жирным. Исправление:

node normalize-statuses.mjs     # нормализация статусов
node dedup-tracker.mjs          # дедупликация
node verify-pipeline.mjs        # health-check

Дальше замените в templates/states.yml на canonical статусы.

Дополнительное чтение / направление для углубления

  • User Layer vs System Layer: это самая интересная часть инженерного дизайна Career-Ops — modes/_profile.md (user) никогда не перезаписывается modes/_shared.md (system). Вся персонализация для onboarding остаётся при системных обновлениях: хоть 100 раз обновляй систему — ничего не пропадёт. Рекомендуется прочитать DATA_CONTRACT.md, чтобы понять полную картину
  • Сменить archetype: скажите Agent «change the archetypes to data engineering roles» — он поменяет modes/_profile.md, а не modes/_shared.md
  • Переключение языков: при подаче на вакансии DE/FR/JP/TR переключайте modes/{de,fr,ja,tr}/ — логика оценок автоматически локализуется (включая местные термины вроде CDI / 賞与 / 通勤手当)
  • Углубление TUI Dashboard: dashboard написан на Go + Bubble Tea + Lipgloss, цветовая схема Catppuccin Mocha. Исходники в dashboard/internal/; чтобы добавить кастомные фильтры/сортировки — правьте там
  • Банк историй STAR+R: interview-prep/story-bank.md накапливает ваши истории «Situation + Task + Action + Result + Reflection» через оценки; после 3–5 оценок у вас появится 5–10 историй, с которыми можно закрыть практически любые поведенческие вопросы на интервью
  • Fork-подборка портфолио: портфолио автора тоже open-source — santifer/cv-santiago. Там есть AI-чат-бот + панель LLMOps + case studies — форкните и переделайте под себя

GitHub репозиторий: santifer/career-ops. Многоязычная документация лежит в README.{cn,es,ja,ko-KR,pt-BR,ru,ua,zh-TW}.md. Философию дизайна смотрите в DATA_CONTRACT.md. Медиа-упоминания — в docs/press/. Roadmap — в ROADMAP.md (если не находится в проекте, попросите Agent: «show me your roadmap»).

Updated June 9, 2026