Guia de início com Career-Ops: faça um AI Agent filtrar 700+ vagas e gerar 100+ CVs personalizados

June 9, 2026

Resumo em uma frase: Você já escreve código com o Claude Code; por que não usá-lo, de forma natural, para conseguir emprego? O Career-Ops transforma a CLI de programação por IA em um comandante de contratação — basta colar a URL de uma JD, e ele avalia automaticamente, gera um CV otimizado para ATS e acompanha o progresso. O próprio autor usou isso para filtrar 740+ ofertas, gerar 100+ CVs personalizados e, no fim, conquistar a vaga de Head of Applied AI.

Visão geral do projeto

Career-Ops (também conhecido como careerops) é um pipeline de candidatura guiado por IA, GitHub: santifer/career-ops, protocolo MIT. Seu foco principal é:

Transformar qualquer CLI de programação por IA em um completo command center de candidatura.

Ele não é mais uma ferramenta de "IA para melhorar o currículo" nem um robô de envio em massa. A filosofia de design do Career-Ops é fazer subtração: dentre centenas de ofertas, te ajuda a separar as poucas que realmente valem a pena aplicar, usando uma pontuação A-F + 6 dimensões de avaliação + otimização ATS em PDF + acompanhamento 100% automático.

Recursos principais (15 slash commands):

CenárioComandoDescrição
Colar URL da JD/career-opsPipeline automático (avaliação + relatório + PDF + tracker)
Avaliar uma única vaga/career-ops evaluatePontuação A-F + análise por 6 dimensões
Comparar várias vagas/career-ops compareOrdena múltiplas ofertas
Escanear vagas/career-ops scan45+ empresas pré-configuradas, rodando APIs de Ashby/Greenhouse/Lever
Avaliação em lote/career-ops batchRodar workers em paralelo claude -p
Gerar PDF/career-ops pdfCV otimizado para ATS (fontes Space Grotesk + DM Sans)
Exportar em LaTeX/career-ops latex.tex amigável para o Overleaf
Rastrear candidatura/career-ops trackerVisão geral do status
Preencher formulários/career-ops applyPreenchimento assistido por IA (sem clicar em Submit)
Pesquisa aprofundada/career-ops deepPesquisa sobre a empresa
Preparação para entrevista/career-ops interviewHistórias STAR+R específicas da empresa
Contato via LinkedIn/career-ops contactEncontrar pessoas + rascunhar mensagem
Modo de análise (patterns)/career-ops patternsAnálise de padrões de rejeição e otimização de estratégia
Ritmo de follow-up/career-ops followupCronograma de follow-up
Avaliar curso/projeto/career-ops training / projectTrajetória de melhoria pessoal

CLIs de programação por IA suportadas: Claude Code / OpenCode / Gemini CLI / Codex / Qwen / GitHub Copilot / Kimi — desde que estejam alinhadas com open agent skill standard.

Suporte a vários idiomas: padrão em inglês; também há alemão (modes/de/) / francês (modes/fr/) / japonês (modes/ja/) / turco (modes/tr/) / chinês simplificado (README.cn.md) / chinês tradicional (README.zh-TW.md).

Resultados: o autor santifer usou isso para avaliar 740+ ofertas, gerar 100+ CVs personalizados e, por fim, recebeu a oferta de Head of Applied AI.

Dificuldade / Duração / Ganhos

  • Dificuldade: ⭐⭐ (média, é preciso saber usar uma CLI de programação por IA como o Claude Code)
  • Duração: 30–60 minutos no primeiro onboarding (inclui preparação de cv.md + configuração do profile)
  • Ganhos:
    • Rodar um pipeline real e utilizável de candidatura com IA
    • Entender o design de arquitetura do Agent: "User Layer vs System Layer"
    • Aprender a usar pontuação A-F + histórias STAR+R para uma candidatura mais certeira
    • Ver como um projeto open-source que foi reportado pela WIRED / Business Insider se estrutura
    • Aproveitar e guardar no bolso 15 slash commands — usar todo dia durante a busca

Perfil do público-alvo

  • Desenvolvedores procurando emprego / mudando de emprego / de olho em oportunidades
  • Já usuários de Claude Code / OpenCode / Gemini CLI
  • Quer sair de "candidatar em massa" e ir para "candidatar com precisão", sem desperdiçar tempo em ofertas ruins
  • Quer saber como é um projeto de AI Agent nível produção com 7k+ estrelas

TIP

O que mais custa na fase de candidaturas são os tokens. O Career-Ops no batch mode rodando avaliação de 10+ ofertas é uma delícia, mas ao rodar 100 ofertas com o Claude/Anthropic via API oficial, em uma noite a conta pode ser $20-40; ao longo de um mês, custos na casa dos dígitos de milhares são totalmente normais.

Como eu faço (compartilhamento, não recomendação): conecto Defapi, que usa um protocolo compatível com a Anthropic; basta alterar o Base URL em uma linha:

# Supondo que você use o Claude Code, altere em ~/.claude/settings.json ou via env
ANTHROPIC_BASE_URL=https://api.defapi.org
ANTHROPIC_API_KEY=sk-xxxxx   # pegue no painel do defapi.org

Quase todos os modelos da Defapi são compatíveis com as três famílias de protocolos principais — v1/chat/completions (OpenAI) / v1/messages (Anthropic) / v1beta/models (Gemini) — sem necessidade de mudança de código no lado do agent: prompts de avaliação / histórias STAR / schema do tracker continuam como antes. O modelo ainda é o mesmo; só o custo de compra é menor — na fase de candidaturas, cortar a conta de tokens pela metade de verdade é algo palpável. O FAQ Q5 aprofunda isso depois.

Dependências principais e ambiente

Configuração mínima:

ItemRequisito
Node.js20+
CLI de programação por IAter pelo menos uma instalada (Claude Code / OpenCode / Gemini CLI / Codex / Qwen / Copilot)
Playwrightnavegador Chromium (necessário para gerar PDF)
Sistema operacionalmacOS / Linux / Windows (WSL recomendado)

Opcional / aprimoramentos:

ItemUso
Go 1.21+rodar TUI Dashboard
Google AI Studio API Keyrodar o script independente gemini-eval.mjs (quota grátis)
Navegador Chromiumverificar se as ofertas ainda estão ativas (Playwright instala automaticamente)
Chaves de várias LLM APIsbasta usar um protocolo compatível (Claude / OpenAI / Anthropic)

TIP

Nem precisa assinar o Claude Max. O Career-Ops é um sistema "guiado por protocolo de LLM"; você consegue conectar qualquer API compatível com v1/messages ou v1/chat/completions (veja o TIP acima, na seção "público-alvo").

Árvore completa da estrutura do projeto

career-ops/
├── AGENTS.md                    # Instruções gerais do Agent (entre CLIs)
├── CLAUDE.md                    # Exclusivo para Claude Code (import AGENTS.md)
├── GEMINI.md                    # Exclusivo para Gemini CLI
├── cv.md                        # Seu CV (criado por você, arquivo-chave)
├── article-digest.md            # Suas evidências de destaques (opcional)
├── config/
│   └── profile.example.yml      # Seu modelo de perfil (persona)
├── modes/                       # 15 modos de skill
│   ├── _shared.md               # Contexto compartilhado da camada do sistema
│   ├── _profile.template.md     # Personalização na camada do usuário (coloque sua archetype)
│   ├── oferta.md                # Avaliação de uma única oferta
│   ├── pdf.md                   # Geração de PDF
│   ├── scan.md                  # Varredura de vagas
│   ├── batch.md                 # Processamento em lote
│   ├── auto-pipeline.md         # URL → avaliação + PDF + tracker
│   ├── de/                      # Modo em alemão
│   ├── fr/                      # Modo em francês
│   ├── ja/                      # Modo em japonês
│   └── tr/                      # Modo em turco
├── templates/
│   ├── cv-template.html         # Template de CV otimizado para ATS
│   ├── cv-template.tex          # Template LaTeX
│   ├── portals.example.yml      # Empresas pré-configuradas (45+)
│   └── states.yml               # Dicionário de estados de candidatura
├── data/                        # Dados de candidatura (gitignored)
│   ├── applications.md          # Tabela principal de acompanhamento
│   ├── pipeline.md              # Caixa de entrada de URLs a processar
│   ├── scan-history.tsv         # Deduplicação de scans
│   └── follow-ups.md            # Histórico de follow-ups
├── reports/                     # Relatórios de avaliação (gitignored)
├── output/                      # PDFs gerados (gitignored)
├── jds/                         # Texte de JD armazenadas aqui (opcional)
├── interview-prep/              # Preparação para entrevistas
│   ├── story-bank.md            # Histórias STAR+R acumuladas
│   └── {company}-{role}.md      # Inteligência específica da empresa
├── batch/
│   ├── batch-prompt.md          # prompt para workers
│   ├── batch-runner.sh          # script de orquestração
│   └── tracker-additions/       # adições para mesclar na tabela principal de acompanhamento
├── dashboard/                   # Go TUI (Bubble Tea)
│   ├── main.go
│   └── internal/
├── fonts/                       # Space Grotesk + DM Sans
├── providers/                   # Configuração do provedor de LLM
├── docs/                        # Documentação multilíngue + cobertura da mídia
├── examples/                    # Exemplos de CV / relatórios / destaques
└── *.mjs                        # Scripts de scan / validação / merge / health check

Como usuário, você só precisa mexer em quatro arquivos: cv.md / config/profile.yml / modes/_profile.md / portals.yml — isso é o User Layer; atualizações do sistema não mexem nele. Todo o resto fica a cargo do Agent.

Passo a passo

Passo 1: Clone + Instale

git clone https://github.com/santifer/career-ops.git
cd career-ops
npm install
npx playwright install chromium   # Necessário para gerar PDF

WARNING

Não pule npx playwright install chromium. Mais tarde, o /career-ops pdf usa renderização via Playwright; sem Chromium você recebe erro "browser not found".

Passo 2: Checagem de saúde

npm run doctor

Isso valida a versão do Node.js, o Playwright, arquivos essenciais e permissões de diretório. Se falhar, o "médico" vai te dizer o que está faltando; corrija e rode de novo.

Passo 3: Crie seu cv.md

Esse é o ponto de partida de todo o pipeline — sem ele o Agent não consegue avaliar ofertas.

Crie cv.md na raiz do projeto:

# Seu Nome

**Email:** [email protected]
**Localização:** Berlin, Alemanha (CET)
**LinkedIn:** linkedin.com/in/you
**GitHub:** github.com/you

## Summary

Engenheiro sênior de backend com 6 anos construindo sistemas distribuídos...
(Objetivo: 2-3 parágrafos, escreva "o que você faz + as 1-2 coisas em que você é mais forte")

## Experience

### Staff Engineer — Empresa A (2023 - Present)
- Liderou a migração de X para Y, reduzindo Z em 40%
- (Tente incluir números; esta parte será usada pelo Agent para casar com a JD)

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

## Education
...

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

TIP

Não quer escrever sozinho? Depois de iniciar o Claude Code, diga algo como "vou colar meu CV antigo" / "aqui está minha URL do LinkedIn" / "descreva tudo e você escreve pra mim"; o Agent transforma isso em cv.md. Os três caminhos de onboarding estão com prompts no README.

Passo 4: Configure config/profile.yml

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

Abra config/profile.yml e preencha:

personal:
  name: "Seu Nome"
  email: "[email protected]"
  location: "Berlim, Alemanha"
  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"

# Se quiser usar modos em chinês / alemão / francês / japonês / turco, adicione esta linha
# language:
#   modes_dir: modes/de

WARNING

Não edite manualmente modes/_shared.md. Atualizações do sistema vão sobrescrevê-lo. Persona pessoal / argumentos de negociação / objetivos de salário: tudo isso deve ir em modes/_profile.md ou config/profile.yml. Esta é a regra de Data Contract que o README ressalta várias vezes.

Passo 5: Configure portals.yml

cp templates/portals.example.yml portals.yml

Por padrão vem com 45+ empresas + 19 buscas (queries), cobrindo:

# AI Labs
- anthropic
- openai
- mistral
- cohere

# Voice AI
- elevenlabs
- vapi
- deepgram

# AI Platforms
- retool
- airtable
- vercel
- temporal

Para adicionar empresas que você quer perseguir, basta colocá-las em portals.yml. A cobertura do job board inclui Ashby / Greenhouse / Lever / Wellfound / Workable / RemoteFront.

Passo 6: Peça ao Agent para te "Onboard"

# Selecione uma CLI de IA que você instalou
claude       # Claude Code
# ou
gemini       # Gemini CLI
# ou
opencode     # OpenCode
# ou
codex        # Codex

No CLI, diga:

Configure o career-ops para mim. Eu acabei de clonar, e cv.md e config/profile.yml já estão preenchidos.

Por favor, verifique se meu onboarding está completo e o que ainda falta.

O Agent vai rodar uma checagem de inicialização:

  1. cv.md existe? ✅
  2. config/profile.yml é o arquivo real (não .example)? ✅
  3. modes/_profile.md foi copiado a partir de _profile.template.md? ⚠️
  4. portals.yml é o arquivo real (não .example)? ✅

Qualquer ❌ cai no modo de orientação, e ele te pede, de forma 1-para-1, o que completar.

TIP

Na primeira execução, o Agent vai perguntar proativamente: "Qual é uma conquista profissional de que você mais se orgulha? Quais são seus deal-breakers? Qual é seu superpoder?" — responda com seriedade por 5 minutos a mais; isso entra em modes/_profile.md e toda a precisão da pontuação nas próximas avaliações depende disso. É como fazer onboarding de um novo recrutador na primeira semana; na segunda, ele te entende melhor do que a maioria dos recruiters humanos.

Passo 7: Primeira avaliação

Cole uma URL de JD para o Agent:

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

O Agent roda um pipeline 100% automático:

  1. Detecção de Archetype — classifica em LLMOps / Agentic / PM / SA / FDE / Transformation
  2. Avaliação A-F — 6 dimensões (Role summary / CV match / Level strategy / Comp research / Personalization / Interview prep)
  3. Geração de relatório — grava em reports/001-anthropic-2026-06-09.md
  4. Geração de PDF — roda renderização via Playwright para um CV otimizado para ATS, e salva em output/001-anthropic-cv.pdf
  5. Escrita no tracker — adiciona uma linha em data/applications.md
  6. Atualização de integridade do pipeline — roda node verify-pipeline.mjs para checar

Você deve ver, após 30-60 segundos, um relatório completo + um PDF de CV otimizado para ATS.

WARNING

A primeira pontuação da avaliação não vai ficar perfeita. O sistema ainda não te conhece, então pode dar nota alta demais ou baixa demais. Sem pressa: rode 3-5 avaliações e, com base nos resultados, diga ao Agent "essa nota está alta demais porque XX" / "eu não mencionei que tenho experiência em XX" — o Agent vai incorporar o que aprendeu em modes/_profile.md; quanto mais usar, mais preciso fica.

Passo 8: Primeira varredura

/career-ops scan

Ou equivalente:

node scan.mjs                  # zero token, apenas captura via API
node scan.mjs --verify         # API + validação via Playwright, filtrando vagas expiradas

Após uma rodada com 45+ empresas pré-configuradas e 19 queries de busca, normalmente surgem 200-500 vagas novas — elas entram direto na caixa de entrada data/pipeline.md. Depois, com workers claude -p rodando em paralelo, processar 100+ ofertas em uma noite não é sonho.

Passo 9: Rodar o TUI Dashboard (opcional)

Se você quiser ver o progresso pela interface do terminal:

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

São 6 tabs de filtros, 4 modos de ordenação, visão agrupada/flat, pré-visualização lazy-loaded e ao selecionar muda o status. Tema Catppuccin Mocha, bem bonito.

Passo 10: Atualizar o sistema (importante!)

O Career-Ops evolui rápido; a cada poucas semanas, surgem novos modes e novas configurações de empresas.

# Na raiz do projeto, peça ao Agent para checar
claude  # diga a ele "verifique se há uma nova versão do career-ops"

O Agent roda automaticamente node update-system.mjs check; a saída JSON fica mais ou menos assim:

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

Ele vai te dizer: "Da versão v1.3.0 para v1.4.0 está disponível, seus dados (CV / profile / tracker / reports) não serão tocados; quer atualizar?". Para atualizar:

node update-system.mjs apply       # atualiza
node update-system.mjs rollback    # se não gostar, volta atrás

Solução de problemas (FAQ)

Q1: Não encontro cv.md / Agent travou no onboarding

A causa mais comum é: cv.md não está na raiz do projeto.

# confirme que está na raiz
ls -la cv.md
# você deve ver algo como -rw-r--r-- cv.md

# se não existir, crie (na raiz)
cd career-ops
touch cv.md
# e então preencha o conteúdo

Q2: Falha na geração do PDF, "browser not found"

O Playwright não está instalado ou não tem Chromium instalado:

npx playwright install chromium
# Se sua rede no Brasil/China estiver lenta, você pode usar um mirror
PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright npx playwright install chromium

Q3: Pontuação de avaliação inflada / defasada

Isso acontece na primeira semana. Ajuste:

  1. Rode 3-5 avaliações a mais; em cada uma, dê feedback ao Agent "não concordo com essa nota porque XX"
  2. O Agent escreve o que aprendeu em modes/_profile.md
  3. Foque em checar se modes/_profile.md foi preenchido corretamente: seu piso salarial, preferência por remoto, posicionamento de função e casos reversos (contraindicações)

Importante: conteúdo personalizado vai em modes/_profile.md ou config/profile.yml. Não edite modes/_shared.md — ele será sobrescrito pelas atualizações do sistema.

Q4: Verificação por WebSearch/WebFetch funciona mesmo?

Não. A regra interna do Career-Ops é obrigatoriamente validar se a oferta ainda está ativa usando Playwright:

# use o slash command; internamente roda Playwright
/career-ops verify --url <JD_URL>

No modo batch (claude -p), o Playwright não está disponível; ele vai marcar **Verification:** unconfirmed (batch mode). Você precisa revisar manualmente.

Q5: Explodiu o consumo de tokens no lote

Ao avaliar 100+ ofertas, é fácil passar $20 na conta numa noite. Há três correções possíveis:

  1. Reduzir a quantidade de batch — rode 10-20 por vez; não varra 100+ de uma vez
  2. Fallback com modelo local — tarefas estruturadas como ofertas (comparação) / tracker / pdf podem trocar por um modelo local menor
  3. Conectar Defapi com API com desconto — protocolo 100% compatível; segue o mesmo modelo da opção oficial, e a conta mensal é cortada pela metade (configuração específica no TIP depois do parágrafo "público-alvo")

Q6: Quer trocar para os modos em alemão / francês / japonês / turco

# 1. Edite config/profile.yml
language:
  modes_dir: modes/de   # ou fr / ja / tr

Ou diga diretamente ao Agent: "rode usando o modo em alemão"; ele vai alternar para a lógica de avaliação em modes/de/ (com termos localizados do mercado DACH, como 13. Monatsgehalt / Probezeit / AGG / Tarifvertrag).

WARNING

Depois de trocar para modes/de/, você vai rodar avaliação em alemão também para vagas em inglês. A menos que você só aplique em vagas alemãs, mantenha o modo padrão em inglês e troque manualmente apenas quando for se candidatar a vagas em alemão.

Q7: Campos de status com dados "sujos" formatados como **Applied**

O status no tracker foi colocado em negrito manualmente. Correção:

node normalize-statuses.mjs     # normaliza estados
node dedup-tracker.mjs          # remove duplicados
node verify-pipeline.mjs        # health check

Depois, ajuste templates/states.yml para usar estados canônicos.

Leitura complementar / caminhos avançados

  • User Layer vs System Layer: este é o design de engenharia mais interessante do Career-Ops — modes/_profile.md (usuário) nunca é sobrescrito por modes/_shared.md (sistema). Todo o seu conteúdo de onboarding personalizado continua intacto mesmo após 100 updates do sistema. Recomendado ler DATA_CONTRACT.md para ver a visão geral completa
  • Mudar archetype: diga ao Agent "change the archetypes to data engineering roles"; ele vai ajustar modes/_profile.md em vez de modes/_shared.md
  • Troca de idioma: ao aplicar para vagas em alemão/francês/japonês/turco, troque para modes/{de,fr,ja,tr}/; a lógica de avaliação é automaticamente localizada (CDI / 賞与 / abono de transporte — termos locais)
  • TUI Dashboard avançado: o dashboard foi escrito em Go + Bubble Tea + Lipgloss, com paleta Catppuccin Mocha. Código-fonte em dashboard/internal/; para adicionar filtros/ordenação customizados, é só alterar
  • Banco de histórias STAR+R: interview-prep/story-bank.md acumula suas histórias "Situation + Task + Action + Result + Reflection" entre avaliações; depois de 3-5 avaliações, você terá 5-10 histórias para lidar com qualquer pergunta comportamental em entrevistas
  • Fork do portfólio complementar: o portfolio do autor também é open-source — santifer/cv-santiago, com um chatbot de IA + painel LLMOps + estudos de caso; faça um fork e adapte para o seu

Repositório GitHub: santifer/career-ops. Documentação multilíngue em README.{cn,es,ja,ko-KR,pt-BR,ru,ua,zh-TW}.md. A filosofia de design em DATA_CONTRACT.md. Cobertura da mídia em docs/press/. Roadmap em ROADMAP.md (se não encontrar no projeto, pergunte ao Agent "show me your roadmap").

Updated June 9, 2026