GitHub Hot Board

GitHub Hot Board · Архив репозитория

career-ops-hq/career-ops

Open-source AI job search agent and job finder: scan job boards, score each job 1-5 against your CV before you apply, tailor an ATS-friendly resume and cover letter, get interview prep and a job application tracker. It helps you fill in each application; you press Submit. Runs locally in your AI coding CLI (Claude Code, Codex, OpenCode and more). (Описание взято из самого репозитория.)

Данные на October 22career-ops-hq

Лучшее место

#23

Мастодонты GitHub · JavaScript

76K

Всего звёзд

14K

Всего форков

1

Дней в рейтингах (30 дн.)

Документация проекта

career-ops

ИИ-агент с открытым кодом для поиска работы.

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

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

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

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

Собственный поиск автора в дашборде career-ops: вакансии с оценками, красный счётчик тех, что помечены «не откликаться», затем полный отчёт об оценке

Мой собственный поиск, на полпути, с интерфейсом на испанском.

Компании используют ИИ для фильтрации кандидатов.
Я дал кандидатам ИИ, чтобы выбирать компании.

Через полгода я ушёл с этой работы.
Теперь мы строим 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

Ваша очередь

Вставьте одну вакансию, на которую собирались откликнуться сегодня вечером. Если в ответ придёт не откликаться, вы только что вернули себе вечер. Если придёт план, вы знаете, что делать дальше.

npx @santifer/career-ops init

Открытый код. Локально. В том ИИ-CLI, которым вы уже пользуетесь. Бесплатные и локальные модели включены.

Вам не обязательно искать в одиночку

Тишина после нажатия «отправить» не про вас. Достаточно людей увидели то же самое, чтобы записать практику в шесть строк:

Откликаться лучше, но на меньшее. Сигнал важнее объёма. Доказательства важнее ключевых слов. Решает человек. Сначала локально. Достоинство по обе стороны стола.

Манифест CareerOps: число подписавших в реальном времени

Несколько из них, их собственными словами.

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

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


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

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

Именно здесь пишется исправление. Комната, а не клуб. Давайте строить вместе.

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.

Возможности

Функция Описание
Оценка A-H Резюме роли, соответствие резюме (с весом каждого требования для этой вакансии и пометкой, взят ли вес из формулировки описания, его структуры или из оценки, с подписью для каждого требования; оценка никогда не может быть верхнего уровня), стратегия уровня, исследование компенсации, персонализация, подготовка к собеседованию (STAR+R), плюс проверка легитимности вакансии в блоке G (открыта ли она ещё, не повторная ли это публикация: наблюдения, а не вердикты) и сигнал разрешения на работу, помечающий описание с явным отказом в спонсорстве визы как жёсткий блокер
Human-in-the-Loop ИИ оценивает и рекомендует, вы решаете и действуете. Система никогда не отправляет отклик: последнее слово всегда за вами
Генерация ATS PDF Резюме, читаемые ATS и адаптированные под каждое описание вакансии на основе вашего собственного опыта, в дизайне Space Grotesk + DM Sans
Генератор сопроводительных писем Сопроводительные письма на основе исследования с зеркалированием ключевых слов, четырьмя интерактивными вопросами об угле подачи (почему/проблемы/подход/тон), утверждением черновика в чате и A4 PDF через тот же конвейер HTML + Playwright, что и для резюме. Готовит черновик при каждой оценке; завершить и сгенерировать по запросу через /career-ops cover
За пределами резюме Исследование компании (deep) раскрывает ИИ-стратегию, недавние шаги, инженерную культуру и угол, под которым стоит подать ваш профиль. Поиск контактов (contacto) определяет hiring-менеджера, рекрутера или коллегу из команды, к кому стоит обратиться, и готовит сообщение для LinkedIn до 300 символов под каждый тип контакта. Черновики формальных писем-откликов (email) превращают оценённый отчёт или вставленное описание в тему, текст и чеклист вложений, ничего не отправляя, не подавая и не кликая. Отклик ставит вас в очередь, исследование даёт вам разговор.
Анализ паттернов Паттерны отказов и доля прохождения по каналам 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/) и детектор тревожных признаков компании (interview-redflag)
Этап оффера Сопровождение чтения контракта: проход по пунктам плюс список вопросов для юриста (offer-prep), и анализатор разрыва между желаемой, заявленной и фактической зарплатой (salary-gap.mjs)
Фоллоу-апы и ответы Калькулятор ритма фоллоу-апов и заготовленные напоминания (followup-cadence.mjs, followup-seed.mjs); классификация ответов работодателя в обновления трекера (reply-watch)
Система плагинов Опциональные интеграции (Gmail, Notion, Apify + реестр сообщества), выключены по умолчанию; см. docs/PLUGINS.md

Быстрый старт

Самый быстрый путь, одна команда:

npx @santifer/career-ops init

💡 npx идёт вместе с Node.js: он запускает установщик один раз, ничего не устанавливая глобально. Ещё нет Node? Сначала установите его. (Уже пользуетесь CLI Claude Code / Codex? Тогда он у вас уже есть.)

Это клонирует последний релиз в ./career-ops и устанавливает зависимости. Затем:

cd career-ops
claude   # or codex / qwen / opencode / agy / grok — open your AI CLI here

При первом запуске career-ops проведёт вас через настройку (ваше резюме, профиль и целевые роли) просто в разговоре. Ничего не нужно редактировать вручную.

Хотите настроить вручную? (git clone)
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. Check setup
npm run doctor                     # Validates all prerequisites

# 3. Configure
cp config/profile.example.yml config/profile.yml  # Edit with your details
cp templates/portals.example.yml portals.yml       # Customize companies

# 4. Add your CV
# Create cv.md in the project root with your CV in markdown

# 5. Open your AI CLI in this directory
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"

# 6. Start using
# Paste a job URL or JD text to trigger auto-pipeline
# If your CLI supports slash commands, use /career-ops (or its CLI-specific alias)
# In Codex, ask for the same mode in plain language, e.g.:
# "Run the career-ops scan mode"
# "Run the career-ops pipeline mode for data/pipeline.md"
# "Run the career-ops pdf mode for the latest evaluated role"
# "Run the career-ops tracker mode and summarize the current statuses"

Глобальная установка

npm i -g @santifer/career-ops

Это устанавливает бинарник career-ops глобально, так что вы можете запускать его напрямую, а не через npx. В отличие от npx @santifer/career-ops init (который создаёт каталог проекта), глобальная установка даёт постоянную команду career-ops, доступную где угодно в вашем терминале.

Что выбрать?

  • npx @santifer/career-ops init: лучше всего для первого запуска; создаёт отдельную папку проекта.
  • npm i -g @santifer/career-ops: лучше всего, когда папка проекта уже есть и вы хотите запускать команды career-ops напрямую.

Система спроектирована так, чтобы её настраивал сам ваш AI-CLI. Режимы, архетипы, веса оценки, скрипты переговоров: просто попросите его изменить их. Он читает те же файлы, которыми пользуется, поэтому точно знает, что редактировать.

Смотрите docs/SETUP.md для полного руководства по настройке, docs/RUNNING_ON_A_BUDGET.md для дешёвого запуска career-ops на своих или локальных моделях (и docs/FREE_TIER.md для запуска без затрат на бесплатном тарифе Antigravity CLI), docs/AUTOMATION.md для планирования регулярных сканирований и рецепта отбора в шортлист без расхода токенов, docs/APPLY_AUTOFILL.md для деталей автозаполнения форм ATS, docs/LINKEDIN_JOIN.md для сверки экспорта ваших контактов LinkedIn с компаниями в вашей воронке, и docs/FAQ.md для ответов на типичные вопросы по настройке, включая как происхождение историй предотвращает выдуманные цифры. Принципы дизайна в ARCHITECTURE.md; потоки выполнения в docs/ARCHITECTURE.md.

Использование

career-ops использует общий роутер команд. В CLI, которые регистрируют слеш-команды, это выглядит так:

/career-ops           → Показать все доступные команды
/career-ops {JD}      → АВТО-КОНВЕЙЕР: оценка + отчёт + PDF + трекер (вставьте текст или URL)
/career-ops pipeline  → Обработать отложенные URL из входящих (data/pipeline.md)
/career-ops oferta    → Только оценка, блоки A–H (без автоматического PDF)
/career-ops ofertas   → Сравнить и ранжировать несколько вакансий
/career-ops contacto  → Ход конём в LinkedIn: найти контакты + подготовить сообщение
/career-ops deep      → Промпт глубокого исследования компании
/career-ops interview-prep → Сгенерировать документ подготовки к собеседованию под конкретную компанию
/career-ops interview    → Интерактивное онбординг-интервью для профиля и резюме
/career-ops master-profile → Импортировать, просмотреть и проверить ваш Master Career Profile
/career-ops eu-swe    → Откалибровать европейский отклик SWE перед резюме, подачей или собеседованием
/career-ops interview/plan → План подготовки по временным блокам к предстоящему собеседованию
/career-ops interview/practice → Тренировочное собеседование, по одному вопросу с обратной связью
/career-ops interview/debrief → Разбор после собеседования: закрыть пробелы, предсказать следующий раунд
/career-ops interview-redflag → Проанализировать тревожные признаки работодателя перед выходом на работу
/career-ops pdf       → Только PDF, ATS-оптимизированное резюме
/career-ops text      → Адаптированное резюме в markdown (зеркалит cv.md, без PDF)
/career-ops latex     → Экспорт резюме в LaTeX/Overleaf .tex
/career-ops latex-tex → Адаптировать собственный resume.tex на месте (опционально; cv.md остаётся по умолчанию)
/career-ops cover     → Сопроводительное письмо: отдельно вставленное описание или /career-ops cover {slug}
/career-ops email     → Черновик формального письма-отклика (только черновик; никогда не отправляет, не подаёт и не кликает)
/career-ops add       → Добавить проект/статью/роль в резюме (загрузить + предпросмотр + подтвердить)
/career-ops expand    → Автоматически найти и добавить недостающие компетенции из ссылок профиля
/career-ops training  → Оценить курс/сертификат относительно North Star
/career-ops project   → Оценить идею проекта для портфолио
/career-ops tracker   → Обзор статусов откликов
/career-ops agent-inbox → Поставить в очередь/разобрать запросы для следующей сессии (data/agent-inbox.md)
/career-ops apply     → Живой помощник подачи (читает форму + генерирует ответы)
/career-ops scan      → Просканировать порталы и найти новые вакансии
/career-ops discover  → Превратить список компаний в сканируемые ATS-доски + добавить в portals.yml (без токенов)
/career-ops batch     → Пакетная обработка параллельными воркерами
/career-ops patterns  → Проанализировать паттерны отказов и улучшить нацеливание
/career-ops offer-prep → Прочитать полученный оффер/контракт вместе с кандидатом: проход по пунктам + вопросы для юриста (не юридическая консультация)
/career-ops titles    → Предложить смежные названия должностей из вашего резюме, чтобы расширить поиск
/career-ops upskill   → Сводный анализ пробелов в навыках по оценённым отчётам
/career-ops followup  → Трекер ритма фоллоу-апов: пометить просроченные, сгенерировать черновики
/career-ops reply-watch → Классифицировать ответы работодателей и предложить обновления трекера
/career-ops outcome   → Записать результат отклика и заархивировать артефакты
/career-ops calibrate → Консультативный отчёт: предсказывают ли ваши оценки реальные результаты? Читает данные /outcome; никогда не меняет оценивание
/career-ops update    → Обновить системные файлы career-ops с предпросмотром diff + проверкой совместимости

Или просто вставьте URL или описание вакансии: career-ops определит его автоматически и запустит полный конвейер.

В Codex слеш-команды не гарантированы. Используйте те же названия режимов в промпте или вызывайте их через codex exec.

Как это работает

You paste a job URL or description
        │
        ▼
┌──────────────────┐
│  Archetype       │  Classifies: LLMOps / Agentic / PM / SA / FDE / Transformation
│  Detection       │
└────────┬─────────┘
         │
┌────────▼─────────┐
│  A-H Evaluation  │  Match, gaps, comp research, STAR stories, legitimacy
│  (reads cv.md)   │
└────────┬─────────┘
         │
    ┌────┼────┐
    ▼    ▼    ▼
 Report  PDF  Tracker
  .md   .pdf  entry

Интеграция с Antigravity CLI

career-ops поддерживает Antigravity CLI нативно, так же как Claude Code и OpenCode. Все слеш-команды доступны через общую точку входа скилла с той же логикой оценки из modes/*.md.

Google перевёл потребительский доступ к Gemini CLI на Antigravity CLI. GEMINI.md теперь является бездействующим предохранителем совместимости, чтобы Antigravity не дублировал полные инструкции проекта, читая и AGENTS.md, и GEMINI.md.

Нативный Antigravity CLI

# 1. Run in the career-ops directory
cd career-ops
agy

# 2. Use the unified /career-ops command with subcommands:
/career-ops "Senior AI Engineer at Anthropic..."
/career-ops pipeline
/career-ops scan
/career-ops pdf
/career-ops tracker

Скилл определён по открытому стандарту в .agents/skills/career-ops/SKILL.md и подключён символической ссылкой или ссылкой для каждого поддерживаемого CLI (например .claude/, .qwen/, .antigravitycli/, .grok/). Cursor автоматически обнаруживает общий скилл в .agents/skills/.

Интеграция с Codex

career-ops поддерживает Codex через тот же общий роутер, но модель вызова отличается от CLI, которые автоматически регистрируют слеш-команды. Полное руководство: docs/CODEX.md.

Интерактивный Codex

cd career-ops
codex

Слеш-команды в Codex не гарантированы. Если /career-ops недоступна, попросите Codex запустить режим напрямую простым языком:

Evaluate this JD with career-ops auto-pipeline: https://company.com/jobs/123
Run the career-ops scan mode and summarize new matches.
Run the career-ops pipeline mode for data/pipeline.md.
Run the career-ops pdf mode for the latest evaluated role.
Run the career-ops tracker mode and summarize the current statuses.

Codex одним вызовом (codex exec)

codex exec "Evaluate this JD with career-ops auto-pipeline: https://company.com/jobs/123"
codex exec "Run career-ops scan mode in this repo and summarize new matches."
codex exec "Run career-ops pipeline mode for data/pipeline.md."
codex exec "Run career-ops pdf mode for the latest evaluated role."
codex exec "Run career-ops tracker mode and summarize the current statuses."

Интеграция с Grok Build CLI

career-ops поддерживает Grok Build CLI нативно, так же как Claude Code и OpenCode. AGENTS.md автоматически загружается как правила проекта, а все слеш-команды доступны через общую точку входа скилла.

Нативный Grok Build CLI

# 1. Run in the career-ops directory
cd career-ops
grok

# 2. Use the unified /career-ops command with subcommands:
/career-ops "Senior AI Engineer at Anthropic..."
/career-ops pipeline
/career-ops scan
/career-ops pdf
/career-ops tracker

Для headless пакетных воркеров используйте grok -p "prompt" (добавьте --yolo, чтобы автоматически одобрять выполнение инструментов).

Интеграция с Pi

career-ops поддерживает Pi нативно, без файла-обёртки, который нужно поддерживать: Pi читает AGENTS.md из корня репозитория как контекст проекта и сам находит общий скилл в .agents/skills/career-ops/SKILL.md. После этого роутер доступен как /skill:career-ops.

Нативный Pi

# 1. Run in the career-ops directory
cd career-ops
pi

# 2. Use the shared skill with subcommands:
/skill:career-ops "Senior AI Engineer at Anthropic..."
/skill:career-ops pipeline
/skill:career-ops scan
/skill:career-ops pdf
/skill:career-ops tracker

Pi одним вызовом (pi -p)

pi -p "Evaluate this JD with career-ops auto-pipeline: https://company.com/jobs/123"
pi -p "Run career-ops scan mode and summarize new matches."
pi -p "Run career-ops tracker mode and summarize the current statuses."

Если сборка Pi закрывает ресурсы проекта за решением о доверии, один раз выполните /trust внутри репозитория и перезапустите pi, чтобы скилл проекта загрузился (/trust действует на будущие процессы Pi), или запустите с -a: так доверие даётся одному запуску и перезапуск не нужен.

Отдельный скрипт для Gemini API (без установки CLI)

# 1. Get a free API key at https://aistudio.google.com/apikey
cp .env.example .env
# Edit .env, set GEMINI_API_KEY=your_key_here

# 2. Install dependencies
npm install

# 3. Evaluate a job description
node gemini-eval.mjs "We are looking for a Senior AI Engineer..."
node gemini-eval.mjs --file ./jds/my-job.txt
node agent-inbox.mjs add "..."   # queue a request for the next session
npm run gemini:eval -- "JD text here"

Бесплатный тариф: оба варианта работают без оплаты. Нативный CLI использует Google OAuth; скрипт API использует gemini-3.6-flash (лимиты запросов зависят от модели и тарифа; актуальные квоты смотрите в документации Google AI).

Настройка порталов

Сканер поставляется со 100+ компаниями, готовыми к сканированию, и 35+ поисковыми запросами по основным доскам вакансий. Скопируйте templates/portals.example.yml в portals.yml и добавьте свои:

AI-лаборатории: Anthropic, OpenAI, Mistral, Cohere, LangChain, Pinecone Голосовой ИИ: 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-ленты и локальные парсеры. Полная таблица: Поддерживаемые доски вакансий.

По умолчанию node scan.mjs (он же npm run scan) доверяет тому, что возвращает каждая лента ATS. Некоторые компании оставляют устаревшие объявления в своём публичном API даже после закрытия вакансии, так что эти просроченные записи могут попасть в pipeline.md. Передайте --verify, чтобы после прохода по API запустить Playwright и отбросить просроченные объявления до того, как они попадут в конвейер:

node scan.mjs --verify          # zero-token discovery + Playwright liveness check

Проверка последовательная и выполняется только для новых вакансий (после дедупликации), так что стоимость остаётся ограниченной.

🇷🇺 Российские площадки

career-ops поддерживает ключевые российские джоб-борды:

Площадка URL Тип Особенности
HeadHunter hh.ru API + Web Главная площадка РФ. Открытый API. 600k+ IT-вакансий
Хабр Карьера career.habr.com Web IT-вакансии, грейды, зарплатные вилки, техническое комьюнити
Работа в России trudvsem.ru API + Web Госпортал Роструда. Открытый API для массового парсинга
Rabota.ru rabota.ru Web Принадлежит Сберу. Крупные компании, финтех
Superjob superjob.ru Web Вторая по величине после hh.ru
Geekjob geekjob.ru Web IT-вакансии с указанием вилок
Буду budu.jobs Web IT-вакансии, бывший Хантфлоу

Telegram-каналы подключаются как обычный источник сканера через provider: telegram-channel (читает публичное превью t.me/s/<канал> — без ключей и логина, историю до since_days), образец записи — в templates/portals.example.yml. В выдачу попадают только посты, где назван работодатель («Компания: …», «Title @ Компания») и есть ссылка на саму вакансию (ATS работодателя или страница вакансии на борде): компанией становится работодатель, URL — эта ссылка, пермалинк поста уходит в описание. Посты «пишите @hr» без работодателя, подборки и анонимные вакансии отбрасываются, так что для HR-каналов вроде @jobforjunior или @job_python это работает, для чатов свободного формата — почти нет. Приватные каналы и каналы с выключенным превью так не читаются — сканер сообщит об этом явно.

Особенности российского рынка в оценке

  • Зарплата: gross (до НДФЛ 13%) vs net (на руки) — система учитывает разницу
  • Оформление: ТК РФ, ГПХ, самозанятость — влияет на оценку стабильности
  • Бенефиты: ДМС, ДМС стомат., компенсация питания/спорта/обучения
  • Испытательный срок: до 3 мес. (6 мес. для руководителей по ТК РФ)
  • Отпуск: 28 календарных дней минимум по ТК + доп. дни

Dashboard TUI

Встроенный терминальный дашборд позволяет просматривать ваш конвейер визуально:

npm run serve:dashboard   # launch the TUI
npm run build:dashboard   # optional: build the standalone binary

Функции: 6 вкладок фильтров, 4 режима сортировки, сгруппированный/плоский вид, ленивая загрузка предпросмотра, изменение статусов в строке.

Есть также экспериментальный веб-интерфейс (альфа, опционально: ничего не запускается, пока вы его не запустите): смотрите 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:
    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 и режимы ИИ-агента автоматически соблюдают эту иерархию.

Технологии

Claude Code Node.js Playwright Go Bubble Tea

  • Агент: 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: сайт-портфолио (santifer.io) с ИИ-чатботом, дашбордом LLMOps и кейс-стади. Если вам нужно портфолио в дополнение к поиску работы, сделайте форк и сделайте его своим.

FAQ

Что такое career-ops? career-ops (career-ops.org, также известный как careerops) является ИИ-поиском работы с открытым кодом, который работает локально в вашем AI-CLI (Claude Code, Codex, OpenCode и других) и оставляет каждое решение за вами. Он оценивает вакансии относительно вашего резюме, генерирует ATS-адаптированные PDF, находит нужного человека для контакта и отслеживает всё в одном месте: последнее слово всегда за вами. Это первая эталонная реализация Манифеста CareerOps.

Может ли адаптированное резюме что-то выдумать? Не должно, и промпты это говорят: переформулировать, никогда не выдумывать. generate-pdf блокирует резюме, в котором есть цифры или факты, отсутствующие в ваших источниках, если только вы не передадите --skip-fact-check. Названия должностей он пока не проверяет и переформулировки не оценивает. Это отслеживают два открытых issue: #2677 (названия должностей должны совпадать с cv.md) и #1411 (проверка достоверности, блокирующая при несовпадении). Пока они не смержены, читайте каждое резюме перед отправкой. Юридическая оговорка говорит то же самое длиннее.

Могу ли я запускать career-ops бесплатно или на более дешёвой / локальной модели? Да. career-ops не зависит от CLI и работает на бесплатных и локальных моделях (бесплатные модели OpenRouter, Ollama или любой OpenAI-совместимый эндпоинт), так что вы не привязаны к платной подписке. Полная настройка: 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.

С какими 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/FAQ.md. Полные шаги в docs/SETUP.md.

Откликается ли career-ops на вакансии за меня? Нет. career-ops является фильтром, а не инструментом массовой автоматической рассылки. ИИ оценивает, ранжирует и готовит черновики; вы просматриваете и решаете. Он готовит черновики и заполняет поля; он никогда не отправляет. Вы нажимаете «Отправить». Именно в этом дизайне с человеком в контуре вся суть.

Бесплатен ли career-ops и открыт ли его код? Да. career-ops бесплатен и с открытым кодом, и для кандидата так будет всегда. Это первая эталонная реализация Манифеста CareerOps. Прочитайте его, и если он говорит то, во что вы верите, подпишите.

Об авторе

Я Santiago Fernández de Valderrama Aparicio (santifer), бывший основатель: построил и продал бизнес, который до сих пор работает под моим именем. Я создал career-ops для управления собственным поиском работы, и это сработало: с его помощью я получил должность Head of Applied AI. Через полгода я ушёл с этой должности, чтобы сосредоточиться на career-ops и работать над ним полный рабочий день.

Интересно, как флот ИИ-агентов поддерживает репозиторий такого размера, а решение о каждом слиянии принимает человек? Читайте Agentic maintenance: how career-ops is run by a fleet of AI agents.

Моё портфолио и другие open source проекты → santifer.io

Wikidata: Santiago Fernández de Valderrama Aparicio · career-ops.

Дисклеймер

career-ops является локальным open-source инструментом, а НЕ хостинг-сервисом. Используя это ПО, вы подтверждаете:

  1. Вы контролируете свои данные. Ваше резюме, контакты и персональные данные остаются на вашей машине и отправляются напрямую выбранному вами AI-провайдеру (Anthropic, OpenAI и др.). Мы не собираем, не храним и не имеем доступа ни к каким вашим данным.
  2. Вы контролируете ИИ. Промпты по умолчанию инструктируют ИИ не отправлять отклики автоматически, но ИИ-модели могут вести себя непредсказуемо. Если вы меняете промпты или используете другие модели, вы делаете это на свой риск. Всегда проверяйте точность сгенерированного ИИ контента перед отправкой.
  3. Вы соблюдаете условия сервиса третьих сторон. Вы должны использовать этот инструмент в соответствии с Условиями использования карьерных порталов, с которыми взаимодействуете (Greenhouse, Lever, Workday, LinkedIn и др.). Не используйте этот инструмент для спама работодателям или перегрузки систем ATS.
  4. Без гарантий. Оценки являются рекомендациями, а не истиной. ИИ-модели могут галлюцинировать навыки или опыт. Авторы не несут ответственности за результаты трудоустройства, отклонённые отклики, ограничения учётных записей или любые другие последствия.

Смотрите LEGAL_DISCLAIMER.md за полной информацией. Это ПО распространяется по лицензии MIT «как есть», без каких-либо гарантий.

Контрибьюторы

Все, кто внёс вклад кодом, документацией, переводами или тестами, перечислены в CONTRIBUTORS.md, включая вклады без кода, которые график выше показать не может.

Получили работу с career-ops? Поделитесь своей историей!

Лицензия и товарный знак

Код лицензирован по MIT. Название и бренд «career-ops» регулируются Политикой товарного знака: разрешительной для использования сообществом, зарезервированной для названий коммерческих продуктов и одобрений.

История звёзд

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

Создал и поддерживает Santiago Fernández de Valderrama Aparicio (@santifer)

Контакты

Website LinkedIn X Discord Email

Текущие места

Динамика за 30 дней

Накопленные звёзды

Динамика мест

Соседи по рейтингу в том же топе

← К рейтингам