O agente de IA open source para buscar emprego.
English | Español | Deutsch | Français | Português (Brasil) | 한국어 | 日本語 | 简体中文 | 繁體中文 | Українська | Русский | Polski | Dansk | தமிழ் | العربية | हिन्दी | Türkçe | Tiếng Việt | Bahasa Indonesia
Documentação completa em português: career-ops.org/pt/docs
Criado por @santifer, com
Meses mandando currículos para o silêncio.
Então construí o filtro de que eu precisava.
740 vagas avaliadas. 68 candidaturas. 12 entrevistas. 1 oferta.
Fui o primeiro usuário. Consegui o emprego. Depois abri o código.
Cole uma vaga. Na sua máquina, ele diz se ela ainda está aberta e se combina com você.
Ele adapta seu currículo e redige suas respostas. Você clica em Enviar.
Minha própria busca, no meio do caminho, com a interface em espanhol.
Empresas usam IA para filtrar candidatos.
Eu só dei aos candidatos IA para escolher empresas.
Seis meses depois, saí daquele emprego.
Agora construímos o career-ops para que você consiga o seu.
Experimente com uma vaga ↓ · Leia a história completa →
As pessoas que vieram depois de mim escreveram como foram contratadas.
Cada card é uma issue pública que você pode abrir. Conseguiu a sua? Deixe seu card →
⭐ Se o career-ops ajudou você, uma estrela ajuda a próxima pessoa a encontrá-lo.
Cole uma vaga para a qual você ia se candidatar hoje à noite. Se voltar como não se candidatar, você acabou de recuperar a noite. Se voltar com um plano, você sabe o que fazer em seguida.
npx @santifer/career-ops initOpen source. Local. No CLI de IA que você já usa. Modelos gratuitos e locais incluídos.
O silêncio depois de clicar em enviar não é sobre você. Gente suficiente viu a mesma coisa para colocar a prática no papel, em seis linhas:
Candidate-se melhor, a menos vagas. Sinal em vez de volume. Evidência em vez de palavras-chave. Um humano decide. Local primeiro. Dignidade dos dois lados da mesa.
Alguns deles, com as próprias palavras.
Cada assinatura é um commit que você pode auditar. Leia todas, ou adicione a sua →
A contratação não vai se consertar sozinha. As pessoas que passam por ela podem, e já estão na sala, comparando anotações e consertando o setup umas das outras.
É aqui que o conserto é escrito. Uma sala, não um clube. Vamos construir juntos.
O career-ops é gratuito para candidatos, para sempre. Estas empresas patrocinam o projeto:
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.
Patrocínio compra visibilidade claramente identificada, nunca influência: nenhuma quantia de dinheiro muda o roadmap nem coloca nada no produto. Patrocinadores nunca aparecem em avaliações, rankings ou recomendações.
Cole uma vaga. Ele diz se aquela noite vale a pena.
- Ainda está aberta? Ele verifica se a vaga ainda está no ar antes de você escrever uma palavra.
- Não é você? Ele pontua a vaga contra o seu currículo real e manda pular se o encaixe for fraco. Você pode ignorar.
- Vale a pena? Ele redige o currículo, a carta de apresentação e as respostas. Você lê. Você envia.
- Com quem eu falo? Ele encontra a pessoa e redige a mensagem. Nunca a envia.
- Para onde vai tudo isso? Cada candidatura fica na sua máquina. Nada é enviado para nós.
- O que eu deveria aprender? Depois de uma sequência de nãos, ele nomeia a lacuna.
As primeiras rodadas são toscas. Ele ainda não conhece você. Converse com ele: seu currículo, o que você quer, o que você recusa. Pense nisso como a primeira semana de um recrutador.
Na primeira execução ele pergunta tudo isso no chat. Nada para configurar à mão.
- Enviar uma candidatura automaticamente. Ele redige a resposta de cada campo; você revisa e clica em Enviar. O script nunca faz POST (
prepare-application.mjs). - Mandar um e-mail. Só rascunhos. Não existe nenhum transporte de e-mail em todo este código.
- Ligar para casa. Sem telemetria, sem backend nosso. Seu currículo vai da sua máquina para o provedor de IA que você escolheu, e para nenhum outro lugar. O único registro público é este repositório:
HIRED.mde suas issues. - Empurrar você a se candidatar abaixo de 4.0/5. Ele vai dizer para não fazer. Você pode ignorar, e ele vai avisar.
Ele reformula seu currículo; nunca deve inventá-lo. Uma verificação no código barra o PDF que tiver números ou fatos que não estão nem no seu currículo nem no seu article-digest.md, mas ainda não consegue julgar cada reformulação. Leia cada currículo antes de enviar. Detalhes no FAQ.
| Funcionalidade | Descrição |
|---|---|
| Avaliação A-H | Resumo da vaga, aderência ao currículo (com o peso de cada requisito nesta vaga e se esse peso veio do texto da própria descrição, da estrutura dela ou de uma estimativa, marcado requisito a requisito; uma estimativa nunca pode ficar na faixa mais alta), estratégia de senioridade, pesquisa de compensação, personalização, preparação para entrevista (STAR+R), além de uma verificação de legitimidade da vaga no bloco G (se ainda está aberta, se é uma republicação: observações, não veredictos), e um sinal de autorização de trabalho que marca como bloqueio duro uma descrição que exclui explicitamente patrocínio de visto |
| Humano no loop | A IA avalia e recomenda, você decide e age. O sistema nunca envia uma candidatura: a decisão final é sempre sua |
| Geração de PDF ATS | Currículos legíveis por ATS, adaptados a cada descrição a partir da sua própria experiência, com design Space Grotesk + DM Sans |
| Gerador de carta de apresentação | Cartas baseadas em pesquisa com espelhamento de palavras-chave, quatro perguntas interativas de ângulo (por quê/problemas/abordagem/tom), aprovação do rascunho no chat e PDF A4 pelo mesmo pipeline HTML + Playwright dos currículos. Cria um rascunho automaticamente a cada avaliação; complete e gere sob demanda com /career-ops cover |
| Além do currículo | A pesquisa de empresa (deep) revela a estratégia de IA, os movimentos recentes, a cultura de engenharia e o ângulo que seu perfil deve assumir. A descoberta de contatos (contacto) identifica o hiring manager, o recrutador ou o colega de equipe que vale a pena contatar e redige uma mensagem de LinkedIn de ≤300 caracteres ajustada a cada tipo de contato. Os rascunhos de e-mail formal de candidatura (email) transformam um relatório avaliado ou uma descrição colada em assunto, corpo e checklist de anexos sem enviar, submeter ou clicar em nada. A candidatura coloca você na fila; a pesquisa consegue uma conversa. |
| Análise de padrões | Padrões de rejeição e taxas de avanço por canal de ATS (analyze-patterns.mjs), estatísticas de funil de toda a busca (stats.mjs), detecção de republicações, um possível sinal de vaga fantasma (detect-reposts.mjs) |
Todo o resto que ele faz
| Funcionalidade | Descrição |
|---|---|
| Auto-Pipeline | Cole uma URL e receba avaliação completa + PDF + entrada no tracker |
| Banco de histórias de entrevista | Acumula histórias STAR+Reflexão ao longo das avaliações: 5-10 histórias principais que você pode adaptar às perguntas comportamentais que receber |
| Scripts de negociação | Frameworks para negociação salarial, resposta a desconto geográfico, alavanca com ofertas concorrentes |
| Rascunhos de e-mail de candidatura | E-mails formais para recrutador, indicação ou candidatura espontânea a partir de um relatório ou de uma descrição colada, com assunto, checklist de anexos, pontos de aderência com fonte e um bloco de contato vindo do seu perfil. Só rascunho: o career-ops nunca envia, submete ou clica em nada. |
| Scanner de portais | 100+ empresas pré-configuradas (Anthropic, OpenAI, ElevenLabs, Retool, n8n...) + consultas customizadas de busca na web em Ashby, Greenhouse, Lever, Wellfound |
| Descoberta de empresas financiadas | O comando company:funded, feito para revisar antes de agir, traz empresas com financiamento recente e diagnósticos de fonte a partir de feeds públicos estruturados, sem editar seus dados |
| Processamento em lote | Avaliação paralela com workers de CLI sem interface (claude -p / opencode run) |
| Dashboard TUI | Interface no terminal para navegar, filtrar e ordenar seu pipeline |
| Integridade do pipeline | Merge automatizado, deduplicação, normalização de status, health checks |
| Suíte de entrevista | Planos de preparação por blocos de tempo, sessões de prática com feedback, debriefs pós-entrevista (interview/) e um detector de sinais de alerta da empresa (interview-redflag) |
| Fase de oferta | Companheiro de leitura do contrato: passagem cláusula a cláusula mais uma lista de perguntas para o advogado (offer-prep), e um analisador da diferença entre salário desejado, anunciado e real (salary-gap.mjs) |
| Follow-ups e respostas | Calculadora de cadência de follow-up e lembretes pré-programados (followup-cadence.mjs, followup-seed.mjs); classificação das respostas do empregador em atualizações do tracker (reply-watch) |
| Sistema de plugins | Integrações opcionais (Gmail, Notion, Apify + um registro da comunidade), desativadas por padrão; veja docs/PLUGINS.md |
O jeito mais rápido, com um único comando:
npx @santifer/career-ops init💡
npxvem com o Node.js: ele roda o instalador uma vez, sem instalar nada globalmente. Ainda não tem Node? Instale primeiro. (Já usa uma CLI Claude Code / Codex? Então você já tem.)
Isso clona a versão mais recente em ./career-ops e instala as dependências. Depois:
cd career-ops
claude # or codex / qwen / opencode / agy / grok — open your AI CLI hereNa primeira execução, o career-ops guia você pela configuração (seu currículo, seu perfil e as vagas-alvo) só conversando. Nada para editar à mão.
Prefere configurar manualmente? (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. Open your AI CLI in this directory. On first launch it walks you
# through setup (your CV, profile and target roles) by chatting
claude # or codex / opencode / qwen / agy / grok
# Then ask your CLI to adapt the system to you:
# "Change the archetypes to backend engineering roles"
# "Translate the modes to English"
# "Add these 5 companies to portals.yml"
# "Update my profile with this CV I'm pasting"
# 3. Start using
# 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-opsIsso instala o binário career-ops globalmente para que você possa rodar career-ops init [folder] sem npx. init é o único comando dele: prepara um espaço de trabalho, e todo o resto acontece dentro da sua CLI de código com IA (veja Uso abaixo), não por este binário.
Qual usar?
npx @santifer/career-ops init: melhor para o primeiro uso; cria uma pasta de projeto dedicada.npm i -g @santifer/career-ops: se você prefere digitarcareer-ops initem vez da forma comnpx. Ele não adiciona nenhum outro comando.
O sistema foi feito para ser personalizado pela sua própria CLI de código com IA. Modos, arquétipos, pesos da pontuação, scripts de negociação: é só pedir para ela mudar. Ela lê os mesmos arquivos que usa, então sabe exatamente o que editar.
Veja docs/SETUP.md para o guia completo de configuração, docs/RUNNING_ON_A_BUDGET.md para rodar o career-ops com baixo custo usando modelos próprios ou locais (e docs/FREE_TIER.md para rodar a custo zero no nível gratuito da Antigravity CLI), docs/AUTOMATION.md para agendar varreduras recorrentes e uma receita de triagem até a shortlist sem gastar tokens, docs/APPLY_AUTOFILL.md para os detalhes do fluxo de preenchimento automático de ATS, docs/LINKEDIN_JOIN.md para cruzar uma exportação das suas conexões do LinkedIn com as empresas do seu funil, e docs/FAQ.md para respostas às dúvidas comuns de configuração, incluindo como a procedência das histórias evita números inventados. Os princípios de design estão em ARCHITECTURE.md; os fluxos de execução em docs/ARCHITECTURE.md.
O career-ops usa um roteador de comandos compartilhado. Nas CLIs que registram comandos de barra, fica assim:
/career-ops → Mostra todos os comandos disponíveis
/career-ops {JD} → AUTO-PIPELINE: avaliação + relatório + PDF + tracker (cole texto ou URL)
/career-ops pipeline → Processa as URLs pendentes da caixa de entrada (data/pipeline.md)
/career-ops oferta → Só avaliação, blocos A a H (sem PDF automático)
/career-ops ofertas → Compara e ranqueia várias vagas
/career-ops contacto → Jogada de mestre no LinkedIn: encontra contatos + redige a mensagem
/career-ops deep → Prompt de pesquisa aprofundada sobre a empresa
/career-ops interview-prep → Gera um documento de preparação de entrevista específico da empresa
/career-ops interview → Entrevista interativa de onboarding do perfil e do currículo
/career-ops master-profile → Importa, revisa e valida seu Master Career Profile
/career-ops eu-swe → Calibra uma candidatura europeia de SWE antes do currículo, da candidatura ou da entrevista
/career-ops interview/plan → Plano de preparação por blocos de tempo para uma entrevista próxima
/career-ops interview/practice → Entrevista de prática, uma pergunta por vez com feedback
/career-ops interview/debrief → Debrief pós-entrevista: fecha lacunas, prevê a próxima rodada
/career-ops interview-redflag → Analisa sinais de alerta do empregador antes de entrar na empresa
/career-ops pdf → Só PDF, currículo otimizado para ATS
/career-ops text → Currículo adaptado em markdown (espelha cv.md, sem PDF)
/career-ops latex → Exporta o currículo como LaTeX/Overleaf .tex
/career-ops latex-tex → Adapta seu próprio resume.tex no lugar (opcional; cv.md continua como padrão)
/career-ops cover → Carta de apresentação: descrição colada avulsa ou /career-ops cover {slug}
/career-ops email → Rascunho de e-mail formal de candidatura (só rascunho; nunca envia, submete ou clica)
/career-ops add → Adiciona um projeto, artigo ou cargo ao seu currículo (busca + prévia + confirmação)
/career-ops expand → Descobre e adiciona automaticamente competências que faltam a partir dos links do perfil
/career-ops training → Avalia um curso ou certificação em relação ao seu North Star
/career-ops project → Avalia uma ideia de projeto de portfólio
/career-ops tracker → Visão geral do status das candidaturas
/career-ops agent-inbox → Enfileira ou esvazia pedidos para a próxima sessão (data/agent-inbox.md)
/career-ops apply → Assistente de candidatura ao vivo (lê o formulário + gera as respostas)
/career-ops scan → Escaneia portais e descobre vagas novas
/career-ops discover → Converte uma lista de empresas em boards de ATS escaneáveis + adiciona a portals.yml (sem tokens)
/career-ops batch → Processamento em lote com workers em paralelo
/career-ops patterns → Analisa padrões de rejeição e melhora a mira
/career-ops offer-prep → Lê uma oferta ou contrato recebido com o candidato: passagem pelas cláusulas + perguntas para o advogado (não é aconselhamento jurídico)
/career-ops titles → Sugere títulos de vaga adjacentes a partir do seu currículo para ampliar a busca
/career-ops upskill → Análise agregada de lacunas de habilidades a partir dos seus relatórios avaliados
/career-ops followup → Tracker de cadência de follow-up: sinaliza atrasados, gera rascunhos
/career-ops reply-watch → Classifica respostas do empregador e sugere atualizações do tracker
/career-ops outcome → Registra o resultado da candidatura e arquiva os artefatos
/career-ops calibrate → Relatório consultivo: suas notas de avaliação preveem seus resultados reais? Lê os dados de /outcome; nunca altera a pontuação
/career-ops update → Atualiza os arquivos de sistema do career-ops com prévia do diff + verificação de compatibilidade
Ou simplesmente cole uma URL ou descrição de vaga diretamente: o career-ops detecta automaticamente e roda o pipeline completo.
No Codex, comandos de barra não são garantidos. Use os mesmos nomes de modo em um prompt, ou chame-os a partir do codex exec.
O career-ops suporta a Antigravity CLI nativamente, do mesmo jeito que suporta Claude Code e OpenCode. Todos os comandos de barra estão disponíveis pelo ponto de entrada compartilhado da skill, usando a mesma lógica de avaliação de modes/*.md.
O Google migrou o acesso de consumidor da Gemini CLI para a Antigravity CLI. GEMINI.md agora é uma guarda de compatibilidade sem efeito, para que a Antigravity não duplique as instruções completas do projeto ao ler AGENTS.md e GEMINI.md ao mesmo tempo.
# 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 trackerA skill é definida com o padrão aberto em .agents/skills/career-ops/SKILL.md e vinculada ou referenciada para cada CLI suportada (por exemplo .claude/, .qwen/, .antigravitycli/, .grok/). O Cursor descobre automaticamente a skill compartilhada em .agents/skills/.
O career-ops suporta o Codex pelo mesmo roteador compartilhado, mas o modelo de invocação é diferente das CLIs que registram comandos de barra automaticamente. O guia completo está em docs/CODEX.md.
cd career-ops
codexComandos de barra não são garantidos no Codex. Se /career-ops não estiver disponível, peça ao Codex para rodar o modo diretamente em linguagem natural:
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."O career-ops suporta a Grok Build CLI nativamente, do mesmo jeito que suporta Claude Code e OpenCode. AGENTS.md é carregado automaticamente como regras do projeto, e todos os comandos de barra estão disponíveis pelo ponto de entrada compartilhado da skill.
# 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 trackerPara workers de lote sem interface, use grok -p "prompt" (adicione --yolo para aprovar automaticamente a execução de ferramentas).
O career-ops suporta o Pi nativamente, sem nenhum arquivo wrapper para manter: o Pi lê o AGENTS.md da raiz do repositório como contexto do projeto e descobre sozinho a skill compartilhada em .agents/skills/career-ops/SKILL.md. O roteador fica disponível como /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."Se uma build do Pi condicionar os recursos do projeto a uma decisão de confiança, rode /trust uma vez dentro do repositório e reinicie o pi para que a skill do projeto carregue (/trust vale para os próximos processos do Pi), ou inicie com -a, que confia em uma única execução e não precisa reiniciar.
# 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"Nível gratuito: as duas opções funcionam sem cobrança. A CLI nativa usa o OAuth do Google; o script da API usa
gemini-3.6-flash(os limites de requisições dependem do modelo e do nível; veja as cotas atuais na documentação do Google AI).
O scanner vem com 100+ empresas prontas para escanear e 35+ consultas de busca nos principais sites de vagas. Copie templates/portals.example.yml para portals.yml e adicione as suas:
Labs de IA: Anthropic, OpenAI, Mistral, Cohere, LangChain, Pinecone IA de voz: ElevenLabs, PolyAI, Parloa, Hume AI, Deepgram, Vapi, Bland AI Plataformas de IA: Retool, Airtable, Vercel, Temporal, Glean, Arize AI Contact center: Ada, LivePerson, Sierra, Decagon, Talkdesk, Genesys Enterprise: Salesforce, Twilio, Gong, Dialpad LLMOps: Langfuse, Weights & Biases, Lindy, Cognigy, Speechmatics Automação: n8n, Zapier, Make.com Europa: Factorial, Attio, Tinybird, Clarity AI, Travelperk
Sites de vagas pesquisados: 55+ módulos de provedor cobrem APIs de ATS, feeds de sites inteiros, feeds XML/RSS, feeds em markdown e parsers locais. Veja a tabela completa em Sites de vagas suportados.
Por padrão, node scan.mjs (ou npm run scan) confia no que cada feed de ATS retorna. Algumas empresas deixam vagas antigas na API pública mesmo depois de fechar a posição, então essas entradas expiradas podem vazar para o pipeline.md. Passe --verify para lançar o Playwright depois da passagem pela API e descartar as vagas expiradas antes de chegarem ao pipeline:
node scan.mjs --verify # zero-token discovery + Playwright liveness checkA verificação é sequencial e roda apenas sobre as vagas novas (após a deduplicação), então o custo fica limitado.
O dashboard integrado ao terminal permite navegar pelo seu pipeline visualmente:
npm run serve:dashboard # launch the TUI
npm run build:dashboard # optional: build the standalone binaryFuncionalidades: 10 abas de filtro, 8 modos de ordenação, visão agrupada ou plana, prévias com carregamento sob demanda, mudanças de status inline.
Existe também uma interface web experimental (alfa e opcional: nada roda a menos que você inicie): veja 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
Por padrão, os dados da camada do usuário (como cv.md, portals.yml e as pastas data/, reports/ e output/) ficam dentro da pasta raiz do projeto.
Para separar seus dados pessoais do código (facilitando trocar de branch, puxar atualizações ou testar vários perfis), você pode configurar um diretório de dados externo com a seguinte precedência:
- Variáveis de ambiente: defina a variável
CAREER_OPS_ROOTouCAREER_OPS_DATA_DIR:export CAREER_OPS_ROOT=~/my-career-data
- Arquivo marcador: crie um arquivo
.career-ops-datana raiz do repositório contendo o caminho do seu diretório de dados. - Padrão: a raiz do repositório.
Uma vez resolvido, todos os arquivos do usuário são resolvidos e escritos em relação a essa pasta, enquanto os arquivos de prompts e os scripts continuam sendo resolvidos em relação ao repositório.
- Sobrescrever o tracker: você também pode definir
CAREER_OPS_TRACKERpara indicar diretamente o caminho do arquivo tracker de candidaturas. - Escritas: todas as operações de escrita (como merges) apontam canonicamente para
{DATA_ROOT}/data/applications.md. - Configuração do scanner: o
portals.ymlé lido e validado em{DATA_ROOT}/portals.yml, entãonode validate-portals.mjsverifica o mesmo arquivo que oscan.mjslê. - Documentos gerados: currículos adaptados e cartas de apresentação são gravados em
{DATA_ROOT}/output/, e o manifesto de PDFs que os liga a um relatório fica em{DATA_ROOT}/data/pdf-index.tsv. EnquantoCAREER_OPS_TRACKERnão estiver definida, o workspace do tracker que delimita essas escritas é a raiz de dados, não o checkout. - PDFs com o tracker sobrescrito: o
generate-pdf.mjsresolveCAREER_OPS_TRACKERantes de derivar o workspace, então, com a variável definida, o workspace é a pasta que contém esse tracker (ou a pasta acima dela, quando o tracker fica em uma pastadata/). O HTML do currículo e todos os PDFs precisam então ficar dentro desse workspace, e o manifesto passa para odata/pdf-index.tsvdele. As cartas de apresentação continuam apontando para{DATA_ROOT}/output/, então são recusadas quando essa pasta fica fora do workspace do tracker. - A camada de código não sai do lugar:
node_modules/,providers/,modes/e os próprios scripts sempre são resolvidos em relação ao repositório, nunca à raiz de dados.
O dashboard TUI em Go, os scripts Node.js e os modos do agente de IA respeitam automaticamente essa hierarquia de resolução.
- Agente: CLI de código com IA com skills e modos compartilhados (
AGENTS.md+ wrapper por CLI) - PDF: Playwright + template HTML
- Cartas de apresentação: template HTML + Playwright (PDF A4, mesmo pipeline dos currículos)
- Scanner: Playwright + API do Greenhouse + WebSearch
- Dashboard: Go + Bubble Tea + Lipgloss (tema Catppuccin Mocha)
- Dados: tabelas Markdown + configuração YAML + arquivos TSV de lote
Também roda em qualquer CLI com o padrão de agent skills. Veja CLIs suportados.
- cv-santiago: o site de portfólio (santifer.io) com chatbot de IA, dashboard de LLMOps e case studies. Se você precisa de um portfólio para acompanhar sua busca de emprego, faça um fork e deixe do seu jeito.
O que é o career-ops? O career-ops (career-ops.org, também conhecido como careerops) é uma busca de emprego com IA, open source, que roda localmente na sua CLI de código com IA (Claude Code, Codex, OpenCode e outras) e deixa cada decisão com você. Ele avalia vagas em relação ao seu currículo, gera PDFs adaptados para ATS, encontra a pessoa certa para contatar e acompanha tudo em um só lugar: a decisão final é sempre sua. É a primeira implementação de referência do Manifesto CareerOps.
O currículo personalizado pode inventar coisas?
Não deve, e os prompts dizem isso: reformular, nunca inventar. O generate-pdf bloqueia um currículo com números ou fatos que não estão nas suas fontes, a menos que você passe --skip-fact-check. O modo pdf também executa o cv-title-check.mjs, que compara cada cargo do currículo adaptado com o cargo que o cv.md dá para o mesmo emprego (pareado por empresa e datas) e pergunta se você quer manter ou reverter qualquer um que seja diferente. Ele só avisa, não bloqueia, porque reformular um cargo às vezes é decisão sua. Nada julga reformulações ainda: a #1411 (verificação de fidelidade que bloqueia em caso de falha) acompanha isso. Até lá, leia cada currículo antes de enviar. O aviso legal diz o mesmo com mais palavras.
Posso rodar o career-ops de graça ou em um modelo local / mais barato? Sim. O career-ops é independente de CLI e roda em modelos gratuitos e locais (modelos gratuitos do OpenRouter, Ollama ou qualquer endpoint compatível com OpenAI), então você não fica preso a uma assinatura paga. Veja docs/RUNNING_ON_A_BUDGET.md para a configuração completa.
Pago o Claude Pro/Max, mas o career-ops está consumindo créditos da API. Por quê?
Porque uma ANTHROPIC_API_KEY no seu ambiente tem prioridade sobre a assinatura logada: a CLI usa a chave e cobra por token. Rode echo $ANTHROPIC_API_KEY e, se aparecer algo, remova a chave do perfil do seu shell, reinicie o terminal e rode /login. O modo em lote é a exceção, porque os workers claude -p não usam o login interativo: rode claude setup-token uma vez e exporte o resultado como CLAUDE_CODE_OAUTH_TOKEN. Passo a passo completo em docs/RUNNING_ON_A_BUDGET.md.
Com quais CLIs de IA o career-ops funciona? O career-ops roda em qualquer uma das principais CLIs de código com IA (Claude Code, Codex, Gemini / Antigravity, OpenCode, Grok, Qwen e mais) por meio do padrão aberto Agent Skill Standard, então nunca fica preso a um único fornecedor. Use a CLI que você já tem.
Como instalo o career-ops no Windows? O career-ops roda no Windows. A configuração específica da plataforma e as arestas conhecidas (detecção do Git Bash, finais de linha, Agendador de Tarefas) estão em docs/WINDOWS.md. Se as skills não carregarem por um erro de symlink durante a instalação, a correção está em docs/FAQ.md. O passo a passo completo está em docs/SETUP.md.
O career-ops se candidata às vagas por mim? Não. O career-ops é um filtro, não um disparador automático de candidaturas em massa. A IA avalia, ranqueia e redige; você revisa e decide. Ele redige e preenche; nunca envia. Você clica em Enviar. Esse design com o humano no loop é justamente o ponto.
O career-ops é gratuito e open source? Sim. O career-ops é gratuito e open source, e para o candidato sempre será. É a primeira implementação de referência do Manifesto CareerOps. Leia e, se ele diz o que você acredita, assine.
Sou o Santiago Fernández de Valderrama Aparicio (santifer), ex-fundador: criei e vendi uma empresa que ainda opera com meu nome. Construí o career-ops para gerenciar minha própria busca de emprego, e funcionou: com ele consegui um cargo de Head of Applied AI. Seis meses depois, deixei esse cargo para me dedicar em tempo integral a construir o career-ops.
Curioso para saber como um repositório deste tamanho é mantido com uma frota de agentes de IA e um humano decidindo cada merge? Leia Agentic maintenance: how career-ops is run by a fleet of AI agents.
Meu portfólio e outros projetos open source → santifer.io
Wikidata: Santiago Fernández de Valderrama Aparicio · career-ops.
O career-ops é uma ferramenta local e open source, NÃO um serviço hospedado. Ao usar este software, você reconhece que:
- Você controla seus dados. Seu currículo, seus dados de contato e suas informações pessoais ficam na sua máquina e são enviados diretamente ao provedor de IA que você escolher (Anthropic, OpenAI etc.). Nós não coletamos, armazenamos nem temos acesso a nenhum dado seu.
- Você controla a IA. Os prompts padrão instruem a IA a não enviar candidaturas automaticamente, mas modelos de IA podem se comportar de forma imprevisível. Se você modificar os prompts ou usar outros modelos, faz isso por sua conta e risco. Sempre revise a exatidão do conteúdo gerado pela IA antes de enviar.
- Você cumpre os termos de terceiros. Você deve usar esta ferramenta de acordo com os Termos de Serviço dos portais de carreira com os quais interage (Greenhouse, Lever, Workday, LinkedIn etc.). Não use esta ferramenta para fazer spam com empregadores nem para sobrecarregar sistemas ATS.
- Sem garantias. Avaliações são recomendações, não verdades. Modelos de IA podem alucinar habilidades ou experiência. Os autores não são responsáveis por resultados de emprego, candidaturas rejeitadas, restrições de conta ou qualquer outra consequência.
Veja LEGAL_DISCLAIMER.md para todos os detalhes. Este software é fornecido sob a Licença MIT "como está", sem garantia de qualquer tipo.
Todas as pessoas que entregaram código, documentação, traduções ou testes estão listadas em CONTRIBUTORS.md, incluindo as contribuições que não são código e que o gráfico acima não consegue mostrar.
Foi contratado usando o career-ops? Compartilhe sua história!
O código é licenciado sob MIT. O nome e a marca "career-ops" são regidos pela Política de Marca, permissiva para uso da comunidade, reservada para nomes de produtos comerciais e endossos.
Criado e mantido por Santiago Fernández de Valderrama Aparicio (@santifer)
