ИИ-агент с открытым кодом для поиска работы.
English | Español | Deutsch | Français | Português (Brasil) | 한국어 | 日本語 | 简体中文 | 繁體中文 | Українська | Русский | Polski | Dansk | தமிழ் | العربية | हिन्दी | Türkçe | Tiếng Việt | Bahasa Indonesia
Создано @santifer
Месяцы отправки резюме в тишину.
Поэтому я построил фильтр, который был мне нужен.
740 вакансий оценено. 68 откликов. 12 собеседований. 1 оффер.
Я был его первым пользователем. Я получил работу. Потом открыл код.
Вставьте вакансию. На вашей машине он скажет, открыта ли она ещё и подходит ли вам.
Он адаптирует ваше резюме и готовит черновики ответов. Вы нажимаете «Отправить».
Мой собственный поиск, на полпути, с интерфейсом на испанском.
Компании используют ИИ для фильтрации кандидатов.
Я дал кандидатам ИИ, чтобы выбирать компании.
Через полгода я ушёл с этой работы.
Теперь мы строим career-ops, чтобы вы могли получить свою.
Попробуйте на одной вакансии ↓ · Прочитайте всю историю →
Люди, пришедшие после меня, записали, как их наняли.
Каждая карточка — публичный issue, который можно открыть. Получили свою работу? Оставьте свою карточку →
⭐ Если career-ops вам помог, звезда поможет следующему человеку его найти.
Вставьте одну вакансию, на которую собирались откликнуться сегодня вечером. Если в ответ придёт не откликаться, вы только что вернули себе вечер. Если придёт план, вы знаете, что делать дальше.
npx @santifer/career-ops initОткрытый код. Локально. В том ИИ-CLI, которым вы уже пользуетесь. Бесплатные и локальные модели включены.
Тишина после нажатия «отправить» не про вас. Достаточно людей увидели то же самое, чтобы записать практику в шесть строк:
Откликаться лучше, но на меньшее. Сигнал важнее объёма. Доказательства важнее ключевых слов. Решает человек. Сначала локально. Достоинство по обе стороны стола.
Несколько из них, их собственными словами.
Каждая подпись — коммит, который можно проверить. Прочитать все или добавить свою →
Найм сам себя не починит. Люди, которые через него проходят, могут, и они уже в комнате: сверяют заметки и чинят друг другу настройки.
Именно здесь пишется исправление. Комната, а не клуб. Давайте строить вместе.
career-ops бесплатен для кандидатов, навсегда. Эти компании спонсируют проект:
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.
Спонсорство покупает чётко обозначенную видимость, но никогда влияние: никакая сумма денег не меняет дорожную карту и ничего не размещает в продукте. Спонсоры никогда не появляются в оценках, рейтингах или рекомендациях.
Вставьте вакансию. Он скажет, стоит ли она этого вечера.
- Ещё открыта? Он проверяет, что объявление всё ещё активно, прежде чем вы напишете хоть слово.
- Не ваше? Он оценивает роль против вашего настоящего резюме и советует пропустить слабое совпадение. Вы можете его переубедить.
- Стоит того? Он готовит черновики резюме, сопроводительного письма и ответов. Вы их читаете. Вы их отправляете.
- С кем говорить? Он находит человека и готовит черновик сообщения. Он никогда его не отправляет.
- Куда всё это уходит? Каждый отклик остаётся на вашей машине. Нам ничего не загружается.
- Что мне выучить? После серии отказов он называет пробел.
Первые запуски шероховатые. Он вас ещё не знает. Поговорите с ним: ваше резюме, чего вы хотите, от чего отказываетесь. Считайте это первой неделей рекрутера.
При первом запуске он спрашивает всё это в чате. Ничего не нужно настраивать вручную.
- Отправлять отклик автоматически. Он готовит черновик ответа для каждого поля; вы проверяете и нажимаете «Отправить». Скрипт никогда не делает 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 entrycareer-ops поддерживает Antigravity CLI нативно, так же как Claude Code и OpenCode. Все слеш-команды доступны через общую точку входа скилла с той же логикой оценки из modes/*.md.
Google перевёл потребительский доступ к Gemini CLI на Antigravity CLI. GEMINI.md теперь является бездействующим предохранителем совместимости, чтобы Antigravity не дублировал полные инструкции проекта, читая и AGENTS.md, и GEMINI.md.
# 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/.
career-ops поддерживает Codex через тот же общий роутер, но модель вызова отличается от CLI, которые автоматически регистрируют слеш-команды. Полное руководство: docs/CODEX.md.
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 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."career-ops поддерживает Grok Build CLI нативно, так же как Claude Code и OpenCode. AGENTS.md автоматически загружается как правила проекта, а все слеш-команды доступны через общую точку входа скилла.
# 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, чтобы автоматически одобрять выполнение инструментов).
career-ops поддерживает Pi нативно, без файла-обёртки, который нужно поддерживать: Pi читает AGENTS.md из корня репозитория как контекст проекта и сам находит общий скилл в .agents/skills/career-ops/SKILL.md. После этого роутер доступен как /skill:career-ops.
# 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 trackerpi -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: так доверие даётся одному запуску и перезапуск не нужен.
# 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 календарных дней минимум по ТК + доп. дни
Встроенный терминальный дашборд позволяет просматривать ваш конвейер визуально:
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/) живут в корневой папке проекта.
Чтобы отделить личные данные от кода (проще переключать ветки, подтягивать обновления или тестировать несколько профилей), вы можете настроить внешний каталог данных со следующим приоритетом:
- Переменные окружения: задайте переменную
CAREER_OPS_ROOTилиCAREER_OPS_DATA_DIR:export CAREER_OPS_ROOT=~/my-career-data
- Файл-маркер: создайте в корне репозитория файл
.career-ops-dataс путём к вашему каталогу данных. - По умолчанию: корень репозитория.
После определения все пользовательские файлы разрешаются и записываются относительно этой папки, тогда как файлы промптов и скрипты по-прежнему разрешаются относительно репозитория.
- Переопределение трекера: можно также задать
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-CLI с общими скиллами и режимами (
AGENTS.md+ обёртка для CLI) - PDF: Playwright + HTML-шаблон
- Сопроводительные письма: HTML-шаблон + Playwright (A4 PDF, тот же конвейер, что и для резюме)
- Сканер: Playwright + Greenhouse API + WebSearch
- Дашборд: Go + Bubble Tea + Lipgloss (тема Catppuccin Mocha)
- Данные: таблицы Markdown + конфигурация YAML + пакетные файлы TSV
Работает также в любом CLI со стандартом agent skills. См. поддерживаемые CLI.
- cv-santiago: сайт-портфолио (santifer.io) с ИИ-чатботом, дашбордом LLMOps и кейс-стади. Если вам нужно портфолио в дополнение к поиску работы, сделайте форк и сделайте его своим.
Что такое 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 инструментом, а НЕ хостинг-сервисом. Используя это ПО, вы подтверждаете:
- Вы контролируете свои данные. Ваше резюме, контакты и персональные данные остаются на вашей машине и отправляются напрямую выбранному вами AI-провайдеру (Anthropic, OpenAI и др.). Мы не собираем, не храним и не имеем доступа ни к каким вашим данным.
- Вы контролируете ИИ. Промпты по умолчанию инструктируют ИИ не отправлять отклики автоматически, но ИИ-модели могут вести себя непредсказуемо. Если вы меняете промпты или используете другие модели, вы делаете это на свой риск. Всегда проверяйте точность сгенерированного ИИ контента перед отправкой.
- Вы соблюдаете условия сервиса третьих сторон. Вы должны использовать этот инструмент в соответствии с Условиями использования карьерных порталов, с которыми взаимодействуете (Greenhouse, Lever, Workday, LinkedIn и др.). Не используйте этот инструмент для спама работодателям или перегрузки систем ATS.
- Без гарантий. Оценки являются рекомендациями, а не истиной. ИИ-модели могут галлюцинировать навыки или опыт. Авторы не несут ответственности за результаты трудоустройства, отклонённые отклики, ограничения учётных записей или любые другие последствия.
Смотрите LEGAL_DISCLAIMER.md за полной информацией. Это ПО распространяется по лицензии MIT «как есть», без каких-либо гарантий.
Все, кто внёс вклад кодом, документацией, переводами или тестами, перечислены в CONTRIBUTORS.md, включая вклады без кода, которые график выше показать не может.
Получили работу с career-ops? Поделитесь своей историей!
Код лицензирован по MIT. Название и бренд «career-ops» регулируются Политикой товарного знака: разрешительной для использования сообществом, зарезервированной для названий коммерческих продуктов и одобрений.
Создал и поддерживает Santiago Fernández de Valderrama Aparicio (@santifer)
