Guía de inicio con Career-Ops: haz que un AI Agent te filtre 700+ ofertas y genere 100+ CVs personalizados

June 9, 2026

Resumen en una frase: Si ya usas Claude Code para programar, ¿por qué no aprovecharlo también para conseguir trabajo? Career-Ops convierte una CLI de programación con IA en un “comandante” de búsqueda laboral: pega una URL de JD, evalúa y genera automáticamente CVs optimizados para ATS, y además hace seguimiento del progreso. El propio autor la usó para filtrar 740+ ofertas, generar 100+ CVs a medida y, al final, aterrizar como Head of Applied AI.

Descripción del proyecto

Career-Ops (alias: careerops) es un pipeline de búsqueda laboral impulsado por IA, con GitHub: santifer/career-ops y licencia MIT. Su enfoque central es:

Convertir cualquier CLI de programación con IA en un centro de mando completo para la búsqueda de empleo.

No es “otra herramienta para que la IA te modifique el CV”, ni un robot para enviar solicitudes masivamente. La filosofía de Career-Ops es hacer reducción: de cientos de ofertas, te ayuda a filtrar las pocas que realmente valen la pena; lo hace con puntuación A-F, +6 dimensiones de evaluación, optimización ATS en PDF y seguimiento 100% automatizado.

Capacidades principales (15 slash commands):

EscenarioComandoDescripción
Pegar una URL de JD/career-opsPipeline automático (evaluación + informe + PDF + tracker)
Evaluación individual/career-ops evaluatePuntuación A-F + análisis en 6 dimensiones
Comparar varias/career-ops compareOrdenar varias ofertas
Escanear vacantes/career-ops scan45+ empresas preconfiguradas, ejecuta APIs de Ashby/Greenhouse/Lever
Evaluación en lote/career-ops batchEjecuta workers claude -p en paralelo
Generar PDF/career-ops pdfCV optimizado para ATS (fuentes Space Grotesk + DM Sans)
Exportar a LaTeX/career-ops latex.tex compatible con Overleaf
Seguimiento de envíos/career-ops trackerVista general del estado
Completar formularios/career-ops applyAyuda con formularios (asistida por IA, sin pulsar Submit)
Investigación profunda/career-ops deepInvestigación sobre la empresa
Preparación para entrevistas/career-ops interviewHistorias STAR+R específicas de la empresa
Contacto en LinkedIn/career-ops contactEncontrar gente + redactar mensaje
Modo “patterns”/career-ops patternsAnálisis de patrones de rechazo, optimiza la estrategia
Ritmo de seguimiento/career-ops followupCalendario de follow-ups
Evaluación de cursos/proyectos/career-ops training / projectRuta de mejora personal

CLI de programación con IA compatibles: Claude Code / OpenCode / Gemini CLI / Codex / Qwen / GitHub Copilot / Kimi — mientras sigan open agent skill standard, sirve.

Soporte multilingüe: por defecto inglés; además hay alemán (modes/de/) / francés (modes/fr/) / japonés (modes/ja/) / turco (modes/tr/) / chino simplificado (README.cn.md) / chino tradicional (README.zh-TW.md).

Resultados: el autor santifer la usó para evaluar 740+ ofertas, generar 100+ CVs personalizados y finalmente conseguir una oferta como Head of Applied AI.

Dificultad / Duración / Qué ganas

  • Dificultad: ⭐⭐ (media; necesitas saber usar una CLI de programación con IA como Claude Code)
  • Duración: 30–60 minutos para el onboarding inicial (incluye preparación de cv.md + configuración de perfil)
  • Beneficios:
    • Poner en marcha un pipeline real y utilizable de búsqueda de empleo con IA
    • Entender el diseño de arquitectura de Agent “User Layer vs System Layer”
    • Aprender a afinar la búsqueda con puntuación A-F + historias STAR+R
    • Ver cómo se monta un proyecto open source de nivel producción que apareció en WIRED / Business Insider
    • Llevar en el bolsillo 15 slash commands y usarlos todos los días durante la búsqueda

Perfil de destinatarios

  • Desarrolladores que están buscando trabajo / cambiando de empleo / mirando oportunidades
  • Ya son usuarios de Claude Code / OpenCode / Gemini CLI
  • Quieren pasar de “aplicar masivamente” a “aplicar de forma precisa” y no desperdiciar tiempo en ofertas basura
  • Quieren entender cómo es un proyecto de AI Agent “de producción” con +7k Star

TIP

Lo más caro en la etapa de búsqueda es el token. El modo batch de Career-Ops evaluando 10+ ofertas es una delicia, pero correr 100 ofertas con los API oficiales de Claude / Anthropic cuesta; en una noche puede ser $20–40, y al mes es normal que llegue a cuatro cifras en costos de token.

Mi forma de conectarlo (comparto, no recomiendo): uso Defapi con protocolo compatible con Anthropic; cambias una línea en Base URL y listo:

# Supón que usas Claude Code; cambia en ~/.claude/settings.json o en env
ANTHROPIC_BASE_URL=https://api.defapi.org
ANTHROPIC_API_KEY=sk-xxxxx   # lo obtienes en el panel de defapi.org

Los modelos de Defapi son compatibles, en general, con las tres familias de protocolos más comunes — v1/chat/completions (OpenAI) / v1/messages (Anthropic) / v1beta/models (Gemini) — sin cambios de código en el lado del Agent; prompts de evaluación, historias STAR, y el schema del tracker siguen igual. El modelo es el mismo; lo que cambia es el costo de compra, y en la búsqueda mensual el token bill se ve directamente a la mitad de forma real. Más adelante, en la FAQ Q5, se amplía.

Dependencias y entorno

Requisitos mínimos:

ProyectoRequiere
Node.js20+
CLI de programación con IAal menos instalar una (Claude Code / OpenCode / Gemini CLI / Codex / Qwen / Copilot)
Playwrightnavegador Chromium (necesario para generar PDFs)
Sistema operativomacOS / Linux / Windows (se recomienda WSL)

Opcional / mejoras:

ProyectoUso
Go 1.21+correr TUI Dashboard
API Key de Google AI Studioejecutar el script independiente gemini-eval.mjs (cuota gratis)
Navegador Chromiumverificar si las ofertas siguen activas (Playwright instala automáticamente)
Varias LLM API Keycon que uses el protocolo de Claude / OpenAI / Anthropic, basta

TIP

No hace falta suscribirte a Claude Max. Career-Ops es un sistema “impulsado por el protocolo LLM”: puedes conectarlo con cualquier API compatible con v1/messages o v1/chat/completions (la forma concreta se ve en el TIP después del apartado “Perfil de destinatarios”).

Árbol completo de la estructura del proyecto

career-ops/
├── AGENTS.md                    # Instrucciones generales del Agent (entre CLIs)
├── CLAUDE.md                    # Solo para Claude Code (import AGENTS.md)
├── GEMINI.md                    # Solo para Gemini CLI
├── cv.md                        # Tu CV (lo creas tú; archivo clave)
├── article-digest.md            # Tu prueba de highlights (opcional)
├── config/
│   └── profile.example.yml      # Plantilla de tu perfil
├── modes/                       # 15 modos de skill
│   ├── _shared.md               # Contexto compartido en la capa system
│   ├── _profile.template.md     # Personalización en capa user (coloca tu arquetipo)
│   ├── oferta.md                # Evaluación de una oferta individual
│   ├── pdf.md                   # Generación de PDF
│   ├── scan.md                  # Escaneo de vacantes
│   ├── batch.md                 # Procesamiento en lote
│   ├── auto-pipeline.md         # URL → evaluación + PDF + tracker
│   ├── de/                      # Modo en alemán
│   ├── fr/                      # Modo en francés
│   ├── ja/                      # Modo en japonés
│   └── tr/                      # Modo en turco
├── templates/
│   ├── cv-template.html         # Plantilla de CV optimizado para ATS
│   ├── cv-template.tex          # Plantilla LaTeX
│   ├── portals.example.yml      # 45+ empresas preconfiguradas
│   └── states.yml               # Diccionario de estados para solicitudes
├── data/                        # Datos de envíos (gitignored)
│   ├── applications.md          # Tabla principal de seguimiento
│   ├── pipeline.md              # Bandeja de URL pendientes
│   ├── scan-history.tsv         # Deduplicación de escaneos
│   └── follow-ups.md            # Historial de follow-ups
├── reports/                     # Informes de evaluación (gitignored)
├── output/                      # PDFs generados (gitignored)
├── jds/                         # Texto de JD almacenado aquí (opcional)
├── interview-prep/              # Preparación de entrevistas
│   ├── story-bank.md            # Historias STAR+R acumuladas
│   └── {company}-{role}.md      # Información específica de la empresa
├── batch/
│   ├── batch-prompt.md          # prompt para workers
│   ├── batch-runner.sh          # script de orquestación
│   └── tracker-additions/       # adiciones pendientes para fusionar en el tracker principal
├── dashboard/                   # Go TUI (Bubble Tea)
│   ├── main.go
│   └── internal/
├── fonts/                       # Space Grotesk + DM Sans
├── providers/                   # Configuración del proveedor LLM
├── docs/                        # Documentación multilingüe + cobertura mediática
├── examples/                    # CV / informes / highlights de ejemplo
└── *.mjs                        # Scripts para escaneo / validación / fusión / health checks

Como usuario, solo necesitas tocar estos 4 archivos: cv.md / config/profile.yml / modes/_profile.md / portals.yml. Eso es User Layer; las actualizaciones del sistema no los modifican. El resto se encarga de gestionarlo el Agent.

Pasos paso a paso

Paso 1: Clonar + instalar

git clone https://github.com/santifer/career-ops.git
cd career-ops
npm install
npx playwright install chromium   # necesario para generar PDFs

WARNING

No te saltes npx playwright install chromium. Luego, /career-ops pdf usa renderizado con Playwright; si falta Chromium, aparecerá el error “browser not found”.

Paso 2: Comprobación de salud

npm run doctor

Verificará la versión de Node.js, Playwright, archivos clave y permisos de directorios. Si falla, el “doctor” te indicará qué falta; lo corriges y vuelves a ejecutarlo.

Paso 3: Crear tu cv.md

Este es el origen de todo el pipeline: sin él, el Agent no puede evaluar ofertas.

En la raíz del proyecto, crea cv.md:

# Tu Nombre

**Email:** [email protected]
**Ubicación:** Berlin, Alemania (CET)
**LinkedIn:** linkedin.com/in/you
**GitHub:** github.com/you

## Summary

Senior backend engineer con 6 años construyendo sistemas distribuidos...
(Objetivo: 2–3 párrafos; escribe “qué haces” y “las una o dos cosas en las que eres más fuerte”)

## Experience

### Staff Engineer — Company A (2023 - Present)
- Lideré la migración de X a Y, reduciendo Z en un 40%
- (si es posible, incluye números; esta parte la usará el Agent para hacer match con el JD)

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

## Education
...

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

TIP

¿No quieres escribirlo tú? Tras arrancar Claude Code, dile: “pego mi CV anterior” / “aquí está mi URL de LinkedIn” / “te lo cuento en voz alta y ayúdame a redactarlo”. El Agent lo convertirá a cv.md. Hay tres rutas de onboarding; en el README se incluyen prompts.

Paso 4: Configurar config/profile.yml

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

Abre config/profile.yml y rellena:

personal:
  name: "Tu Nombre"
  email: "[email protected]"
  location: "Berlin, Alemania"
  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"

# Si quieres usar los modos en chino / alemán / francés / japonés / turco, añade esta línea
# language:
#   modes_dir: modes/de

WARNING

No edites a mano modes/_shared.md. Las actualizaciones del sistema lo sobrescribirán. Tu arquetipo personal / estrategia de negociación / objetivos salariales deben ir, siempre, en modes/_profile.md o config/profile.yml. Esta es la regla de Data Contract que el README recalca varias veces.

Paso 5: Configurar portals.yml

cp templates/portals.example.yml portals.yml

Por defecto incluye 45+ empresas + 19 consultas de búsqueda que cubren:

# AI Labs
- anthropic
- openai
- mistral
- cohere

# Voice AI
- elevenlabs
- vapi
- deepgram

# AI Platforms
- retool
- airtable
- vercel
- temporal

Si quieres añadir tus propias empresas objetivo, basta con agregarlas en portals.yml. La cobertura del job board incluye Ashby / Greenhouse / Lever / Wellfound / Workable / RemoteFront.

Paso 6: Haz que el Agent te ayude a “Onboard”

# Elige una CLI de IA que tengas instalada
claude       # Claude Code
# o
gemini       # Gemini CLI
# o
opencode     # OpenCode
# o
codex        # Codex

En la CLI, di:

Configura career-ops. Lo acabo de clonar; ya tengo `cv.md` y `config/profile.yml` rellenados.
Revisa si mi onboarding está completo y si falta algo.

El Agent ejecutará una verificación de arranque:

  1. ¿cv.md está? ✅
  2. ¿config/profile.yml es real (no .example)? ✅
  3. ¿modes/_profile.md fue copiado desde _profile.template.md? ⚠️
  4. ¿portals.yml es real (no .example)? ✅

Si cualquiera falla (❌), entra en modo guía y te pedirá que completes lo que falte, en una conversación 1 a 1.

TIP

En la primera ejecución, el Agent te preguntará activamente: “¿Cuál es un logro profesional del que te sientes más orgulloso? ¿Tienes algún deal-breaker? ¿Cuál es tu superpoder?”. Dedícale 5 minutos para responder con seriedad: esa parte acabará en modes/_profile.md, y la precisión de las puntuaciones en evaluaciones posteriores dependerá de ello. Piensa que la primera semana es como onboardear a un reclutador nuevo; la segunda semana, ya entenderá mejor tu perfil que la mayoría de recruiters humanos.

Paso 7: Primera evaluación

Pega una URL de JD al Agent:

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

El Agent ejecutará un pipeline totalmente automático:

  1. Detección de arquetipo — clasifica como LLMOps / Agentic / PM / SA / FDE / Transformation
  2. Evaluación A-F — 6 dimensiones (Role summary / CV match / Level strategy / Comp research / Personalization / Interview prep)
  3. Generar informe — escribe en reports/001-anthropic-2026-06-09.md
  4. Generar PDF — ejecuta renderizado con Playwright para un CV ATS y lo saca en output/001-anthropic-cv.pdf
  5. Escribir en el tracker — añade una línea a data/applications.md
  6. Actualizar integridad del pipeline — corre node verify-pipeline.mjs para comprobar

Deberías ver, después de 30–60 segundos, aparecer el informe de evaluación completo y el PDF del CV ATS.

WARNING

La primera puntuación no será precisa. El sistema todavía no te conoce, así que puede darte una puntuación demasiado alta o demasiado baja. No te preocupes: tras correr 3–5 evaluaciones y, según los resultados, decirle al Agent “este score está alto, porque XX” / “no mencioné que tengo experiencia con XX” — el Agent incorporará lo aprendido en modes/_profile.md. Cuanto más lo uses, más preciso será.

Paso 8: Primera exploración (scan)

/career-ops scan

O equivalente:

node scan.mjs                  # cero token, captura solo vía API
node scan.mjs --verify         # API + segunda verificación con Playwright; filtra vacantes caducadas

Con 45+ empresas preconfiguradas y 19 consultas de búsqueda, normalmente salen 200–500 vacantes nuevas en una ronda; van directo a la bandeja data/pipeline.md. Luego, con workers claude -p en paralelo, correr evaluaciones es pan comido: que en una noche se procesen 100+ ofertas no es un sueño.

Paso 9: Correr el TUI Dashboard (opcional)

Si quieres ver el progreso con UI en terminal:

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

6 tabs de filtrado, 4 modos de ordenación, vista agrupada/plana, previsualización lazy-loaded; al seleccionar se cambia el estado. Tema Catppuccin Mocha: se ve muy bien.

Paso 10: Actualizar el sistema (importante!)

Career-Ops itera rápido; cada pocas semanas hay un nuevo modo o una nueva configuración de empresas.

# En la raíz del proyecto, haz que el Agent te lo revise
claude  # dile “checkea si career-ops tiene una versión nueva”

El Agent correrá automáticamente node update-system.mjs check; la salida JSON se ve así:

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

Te dirá “v1.3.0 → v1.4.0 disponible; tus datos (CV / profile / tracker / reports) no se tocan; ¿quieres actualizar?”. Para actualizar:

node update-system.mjs apply       # actualizar
node update-system.mjs rollback    # si no te gusta, volver atrás

Solución de problemas frecuentes

Q1: No encuentro cv.md / El Agent se queda en onboarding

El motivo más común es que cv.md no está en la raíz del proyecto:

# confirma que está en la raíz
ls -la cv.md
# deberías ver -rw-r--r-- cv.md

# si no está, créalo (en la raíz)
cd career-ops
touch cv.md
# luego rellena el contenido

Q2: Fallo al generar el PDF, “browser not found”

Playwright no está instalado o no tiene Chromium:

npx playwright install chromium
# si la red en tu país va lenta, puedes añadir espejo
PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright npx playwright install chromium

Q3: Puntuaciones infladas o demasiado bajas

Es lo normal durante la primera semana. Solución:

  1. Ejecuta 3–5 evaluaciones más y cada vez responde al Agent: “no estoy de acuerdo con esta puntuación porque XX”
  2. El Agent añadirá lo aprendido a modes/_profile.md
  3. Mira sobre todo si en modes/_profile.md se completó: tu mínimo salarial / preferencia remota / enfoque de rol / caso inverso

Importante: el contenido personalizado va en modes/_profile.md o config/profile.yml. No edites modes/_shared.md: este último se sobrescribe con las actualizaciones del sistema.

Q4: WebSearch / WebFetch: ¿verifica que una oferta esté bien?

No. La regla interna de Career-Ops es verificar con Playwright que la oferta aún esté activa:

# usa el slash command; internamente corre Playwright
/career-ops verify --url <JD_URL>

En el modo batch (claude -p) Playwright no está disponible; se marcará como **Verification:** unconfirmed (batch mode), y deberás revisarlo a mano.

Q5: El consumo de tokens en evaluación masiva (batch) explota

Corriendo 100+ evaluaciones de ofertas, en una noche el token bill puede pasar fácilmente $20. Hay tres arreglos:

  1. Reducir la cantidad de batch — corre de 10 a 20 en cada ejecución; no barrer 100+
  2. Fallback con modelos locales — tareas estructuradas como ofertas (comparación) / tracker / pdf puedes pasarlas a modelos locales pequeños
  3. Conectar un API “semi-precio” de Defapi — protocolo 100% compatible; usan el mismo modelo que el oficial, pero con la factura mensual reducida a la mitad (configuración concreta en el TIP del apartado “Perfil de destinatarios”)

Q6: Cambiar a modo alemán / francés / japonés / turco

# 1. Edita config/profile.yml
language:
  modes_dir: modes/de   # o fr / ja / tr

O simplemente dile al Agent: “ejecuta el modo en alemán”. El Agent cambiará a la lógica de evaluación en modes/de/ (con vocabulario local como 13. Monatsgehalt, Probezeit, AGG, Tarifvertrag en mercado DACH).

WARNING

Después de cambiar a modes/de/, también se evaluarán en alemán las ofertas en inglés. A menos que solo postules a ofertas en alemán, mantén el modo inglés por defecto y cambia manualmente solo cuando postules a ofertas en alemán.

Q7: Datos “sucios” con formato en campos de estado (como **Applied**)

Los estados del tracker se añadieron en negrita manualmente. Solución:

node normalize-statuses.mjs     # normalizar estados
node dedup-tracker.mjs          # eliminar duplicados
node verify-pipeline.mjs        # health check

Luego ajusta templates/states.yml para usar estados canónicos.

Lecturas extra / Direcciones avanzadas

  • User Layer vs System Layer: este es el diseño de ingeniería más interesante en Career-Ops — modes/_profile.md (user) nunca lo sobreescribe modes/_shared.md (system). Todo lo personalizado que metes en onboarding no se pierde aunque corras 100 actualizaciones del sistema. Se recomienda leer DATA_CONTRACT.md para ver el panorama completo
  • Cambiar el arquetipo: dile al Agent “change the archetypes to data engineering roles”; lo cambia en modes/_profile.md en lugar de modes/_shared.md
  • Cambio multilingüe: al postular a vacantes en alemán/francés/japonés/turco, cambia a modes/{de,fr,ja,tr}/; la lógica de evaluación se localiza automáticamente (CDI / 賞与 /通勤手当 y otros términos locales)
  • TUI Dashboard avanzado: dashboard está escrito con Go + Bubble Tea + Lipgloss; paleta Catppuccin Mocha. El código fuente está en dashboard/internal/; para añadir filtros u ordenamientos personalizados, solo cambia eso.
  • Banco de historias STAR+R: interview-prep/story-bank.md acumula tus historias “Situation + Task + Action + Result + Reflection” a través de evaluaciones; tras 3–5 evaluaciones tendrás 5–10 historias que te servirán para casi cualquier pregunta conductual.
  • Fork de un portafolio complementario: el portfolio del autor también es open source — santifer/cv-santiago, con un chatbot con IA + panel LLMOps + case studies. Haz un fork y cámbialo a tu propia versión.

Repositorio de GitHub: santifer/career-ops. La documentación multilingüe está en README.{cn,es,ja,ko-KR,pt-BR,ru,ua,zh-TW}.md. La filosofía de diseño en DATA_CONTRACT.md. Cobertura en medios en docs/press/. Roadmap en ROADMAP.md (si no lo encuentras en el proyecto, pregunta al Agent “show me your roadmap”).

Updated June 9, 2026