Búsqueda de empleo con IA en tu máquina: un framework para Claude Code
Un flujo de trabajo local con Claude Code que evalúa empleos, adapta solicitudes, verifica PDF para sistemas ATS y prepara a los candidatos para entrevistas.
Búsqueda de empleo con IA en tu máquina: un framework para Claude Code
La búsqueda de empleo suele tratarse como un problema de redacción: encontrar una oferta, editar un currículum, escribir una carta de presentación y repetir. En la práctica, la parte difícil es gestionar todo el embudo sin perder contexto ni enviar accidentalmente materiales genéricos o inexactos.
ai-job-search aborda el proceso como un flujo de trabajo de ingeniería. Convierte Claude Code en un asistente local para solicitudes de empleo capaz de crear un perfil estructurado del candidato, buscar en portales de empleo, evaluar la adecuación, generar documentos personalizados, comprobar su salida en PDF y preparar materiales para entrevistas. Como el flujo de trabajo se ejecuta en tu propio repositorio, tus datos profesionales permanecen bajo tu control y pueden adaptarse a tu mercado.
El proyecto también resulta inusualmente fácil de evaluar: su autor informa que utilizó el flujo de trabajo después de perder un puesto a finales de 2025. El proceso produjo 69 solicitudes personalizadas, 20 primeras entrevistas y un contrato firmado. El autor empezó a trabajar como ingeniero de IA en junio de 2026. Estas cifras no garantizan el mismo resultado para todos los candidatos, pero ofrecen un ejemplo concreto de un sistema utilizado como herramienta real de búsqueda de empleo, en lugar de como demostración.
El flujo de trabajo principal
El flujo de trabajo principal es deliberadamente breve:
/setup -> /scrape -> /apply <url>
| | |
perfil búsqueda evaluar adecuación
archivos portales redactar documentos
revisar y corregir
/setup crea los cimientos. Puede leer un directorio documents/ con contenido que incluya un CV, una exportación de LinkedIn, diplomas, referencias y solicitudes anteriores. También puede importar un único CV pegado en el chat o recopilar información mediante una entrevista. La opción basada en la carpeta de documentos es idempotente, por lo que puede ejecutarse de nuevo a medida que haya más material disponible.
/scrape busca en los portales de empleo configurados, elimina las ofertas duplicadas y presenta los resultados ordenados por adecuación. Si el conjunto de resultados es demasiado grande para revisarlo manualmente, /rank asigna puntuaciones por lotes y devuelve una lista corta ordenada. La evaluación considera habilidades, experiencia, cultura, ubicación y alineación profesional, en lugar de limitarse a hacer coincidir palabras clave.
Por último, /apply acepta la URL de un empleo o una descripción pegada y ejecuta el flujo completo de solicitud. Esta separación es importante: descubrir empleos, priorizarlos y generar documentos son decisiones diferentes, y combinarlas en una única instrucción no estructurada dificulta revisar el razonamiento del sistema.
Qué hace diferente /apply
El comando de solicitud sigue un patrón de redactor y revisor:
- Analizar la oferta de empleo.
- Evaluar la adecuación del candidato según los criterios configurados.
- Redactar un CV y una carta de presentación personalizados.
- Iniciar un segundo agente de Claude con un contexto nuevo para investigar la empresa y criticar los borradores.
- Revisar los documentos según esa evaluación.
- Compilar e inspeccionar los PDF finales.
- Ejecutar una comprobación de la capa de texto orientada a ATS y presentar una lista de verificación.
El diseño con un segundo agente es importante. Una sola pasada puede producir una redacción fluida pero genérica, pasar por alto un requisito, presentar débilmente una habilidad transferible o hacer que la investigación de la empresa parezca superficial. El revisor recibe los borradores en línea en lugar de volver a leerlos, lo que mantiene el uso de tokens relativamente eficiente. La verificación se ejecuta una vez al final, aunque la nueva etapa de inspección de PDF utiliza parte de ese presupuesto ahorrado para renderizar e iterar sobre el diseño.
El flujo de trabajo también impone una regla de veracidad: las afirmaciones del CV y de la carta de presentación deben estar respaldadas por el perfil del candidato. Si falta una habilidad, sigue siendo una carencia. El sistema no añade palabras clave sin respaldo únicamente para mejorar una coincidencia aparente.
El diseño del PDF forma parte de la corrección
El repositorio trata los documentos generados como artefactos de compilación que deben probarse. El CV se compila con lualatex, mientras que la carta de presentación utiliza xelatex porque el cover.cls personalizado depende de fontspec. El flujo de trabajo sigue iterando hasta que el CV tiene exactamente dos páginas y la carta de presentación exactamente una, con una firma visible y fuentes coherentes.
Esto detecta errores invisibles en los archivos fuente: un título de entrada aislado al final de una página, una carta de presentación que ocupa una segunda página o iconos de elementos de lista que cambian silenciosamente a la fuente del cuerpo. El proyecto utiliza correcciones específicas de LaTeX como \\needspace y \\enlargethispage, junto con envoltorios que igualan la fuente para los elementos de lista.
Cuando un CV supera las dos páginas, el contenido no se elimina mecánicamente de la experiencia más antigua. Las líneas del candidato reciben una puntuación según su relevancia para la oferta objetivo, su carácter único dentro del documento y si la carta de presentación depende de ellas. Por tanto, un punto relevante de una experiencia antigua puede conservarse antes que uno reciente pero no relacionado.
La comprobación ATS examina el texto incrustado en el PDF, no su apariencia visual. Con pypdf o pdftotext, verifica que los datos de contacto sean texto literal, que los glifos no aparezcan corruptos, que el orden de lectura sea razonable y que las palabras clave compatibles de la oferta aparezcan en el documento extraído. Si ninguna de las dos herramientas de extracción está disponible, el proceso recurre a una revisión visual de palabras clave.
Instalación y configuración
El framework requiere:
- La CLI de Claude Code, aunque las habilidades de los portales también pueden utilizarse con otras herramientas de agentes mediante
AGENTS.md. - Python 3.10 o posterior.
- Bun para las herramientas CLI de búsqueda de empleo.
- Una distribución de LaTeX con
lualatexyxelatex, como TeX Live, MacTeX, TinyTeX o MiKTeX.
Para el analizador ATS opcional, instala pypdf:
pip install pypdf
pdftotext, de Poppler, sigue siendo una alternativa. En macOS se puede instalar con brew install poppler; en Debian o Ubuntu, utiliza apt install poppler-utils; en Windows, utiliza choco install poppler. Las distribuciones mínimas de TeX también pueden requerir los paquetes adicionales indicados en SETUP.md.
Después de clonar el repositorio, instala las herramientas de los portales:
gh repo fork MadsLorentzen/ai-job-search --clone
cd ai-job-search
for tool in jobbank-search jobdanmark-search jobindex-search jobnet-search linkedin-search freehire-search; do
(cd .agents/skills/$tool/cli && bun install)
done
Las herramientas linkedin-search y freehire-search no tienen dependencias de ejecución, por lo que su instalación es opcional y solo obtiene tipos de desarrollo de TypeScript.
En las instrucciones de configuración aparece un detalle importante sobre la privacidad: un fork público de GitHub no puede hacerse privado, mientras que /setup escribe información personal como datos de contacto, historial laboral y expectativas salariales en archivos versionados. Para una búsqueda de empleo personal, se recomienda utilizar un repositorio privado con este proyecto configurado como remoto upstream. Haz un fork público únicamente cuando contribuyas cambios de vuelta al proyecto.
Ampliación más allá de Dinamarca
Las integraciones incluidas para Jobindex, Jobnet, Jobdanmark y Akademikernes Jobbank están diseñadas para el mercado danés. Sin embargo, la arquitectura pretende ser portable. Cada habilidad de portal es una carpeta independiente bajo .agents/skills/, con una CLI común de búsqueda y detalle, salida --format json|table|plain, pruebas y un indicador enabled: en su definición.
/add-portal puede investigar los patrones de URL, la estructura de resultados, las reglas de robots y las restricciones de acceso de una bolsa de empleo local, y después crear y probar una nueva integración. Los portales protegidos por autenticación se rechazan, y los términos restrictivos reciben una advertencia de uso personal. LinkedIn ofrece un punto de partida independiente del país mediante sus endpoints públicos jobs-guest, con un indicador de ubicación explícito como -l "Berlin, Germany" o -l "Remote". El repositorio también incluye freehire-search, que utiliza la API REST pública de freehire.me y admite filtros de región, país y trabajo remoto.
Las habilidades de portales copiadas de otro fork deben leerse y probarse antes de usarlas. El proyecto recomienda específicamente comprobar los destinos de red, las dependencias, los scripts del ciclo de vida, el acceso al sistema de archivos, las pruebas, las notas sobre los términos de servicio y la configuración de enabled:. Como las herramientas instaladas pueden ejecutarse con permisos de Claude Code previamente aprobados, esta inspección manual es un control de seguridad deliberado.
Seguimiento, entrevistas y planificación profesional
El framework continúa después de generar una solicitud. /outcome archiva la oferta exacta, el CV enviado y la carta de presentación en documents/applications/<company>_<role>/, y registra entrevistas, ofertas, rechazos o silencio en el rastreador. /outcome followup busca solicitudes que han permanecido inactivas durante los 10 días predeterminados y redacta un seguimiento adecuado al canal. Nunca envía el mensaje y limita los seguimientos a dos por solicitud.
/interview crea material de preparación a partir de los documentos que el entrevistador realmente vio, los comentarios de rondas anteriores, la investigación de la empresa y la investigación del entrevistador. Las preguntas probables se vinculan con ejemplos STAR reales, y la experiencia que falta se aborda con respuestas puente honestas en lugar de historias inventadas.
Para los informes, /html-report genera un panel independiente y sin conexión con gráficos de estado, sector, canal y embudo, además de una tabla de solicitudes con filtros. /notion-sync ofrece una vista unidireccional y de solo lectura en Notion mediante el servidor MCP oficial, mientras mantiene los archivos del repositorio como fuente de verdad. /gmail-sync puede proponer cambios de estado a partir de Gmail, pero requiere aprobación y cita el correo de origen de cada cambio.
El proyecto también permite utilizar /expand para enriquecer un perfil a partir de fuentes públicas enlazadas, /upskill para producir un mapa de brechas de habilidades priorizado y un plan de aprendizaje, y un script de comparación salarial que acepta datos proporcionados por el usuario a partir de estadísticas sindicales, exportaciones de Glassdoor o investigación personal.
El multiplicador de calidad es la profundidad del perfil
El sistema no puede personalizar materiales que el perfil no contiene. “Python” es una entrada débil; “creó canalizaciones de ML para predecir la pérdida de clientes en Python con scikit-learn” proporciona al flujo de trabajo un logro concreto, una cadena de herramientas y un contexto que puede reutilizar.
Las descripciones detalladas de los puestos, los resultados medibles, las características específicas de los proyectos, las preferencias, los factores decisivos y las reflexiones sobre lo que te motivó o agotó influyen en las recomendaciones. El framework puede admitir una orientación explícita, pero también descubrir trayectorias profesionales adyacentes mediante el análisis del trabajo real que hay detrás de los títulos de los puestos. Los requisitos lingüísticos reciben un tratamiento específico: los idiomas no declarados pueden provocar un rechazo automático, mientras que una oferta que solicite un nivel superior al declarado se marca para que una persona tome la decisión.
Esta combinación de evaluación estructurada, generación de documentos, validación de PDF, seguimiento de solicitudes y preparación de entrevistas es lo que hace que ai-job-search sea más que una instrucción para crear un currículum. Es un sistema operativo local e inspeccionable para una búsqueda de empleo, con puntos claros de extensión para portales, plantillas de documentos y criterios de evaluación. El proyecto cuenta con licencia MIT y está disponible en github.com/MadsLorentzen/ai-job-search.