job-resume-agent
job-resume-agent
Un sistema de adaptación de currículums basado en evidencia. Dada una descripción de puesto detectada en el navegador y un banco de experiencias estructurado que el usuario ha curado, produce un currículum en LaTeX/PDF legible por ATS donde cada viñeta es rastreable a una pieza de evidencia proporcionada por el usuario. Cualquier redacción que el modelo haya inferido, generalizado o reformulado se marca visiblemente y debe ser aprobada por el usuario antes de exportar.
El producto se niega a inventar. Si una habilidad o logro requerido no está respaldado por evidencia, lo dice en lugar de inventarlo.
Estado: prueba de concepto. El repositorio incluye un servidor MCP determinista, un enlazador de evidencia, un renderizador LaTeX seguro, CLI y pruebas. Aún no incluye la extensión de Chrome ni los adaptadores de proveedores de LLM externos.
Inicio rápido
Requiere Python 3.11+.
python -m pip install -e ".[dev]"
resume-agent tailor --bank docs/example-experience-bank.yaml --jd path/to/job-description.txt --json
resume-agent tailor --bank docs/example-experience-bank.yaml --jd path/to/job-description.txt --export --out ./outPara ejecutar el servidor MCP sobre stdio:
resume-agent servePara uso privado, apunta RESUME_AGENT_BANK_PATH a un banco local que contenga tu propia información. Mantén el currículum completado y el banco privado bajo .private/; ese directorio está ignorado por Git. El banco de ejemplo incluido usa información de contacto de marcador de posición y es seguro de publicar.
Por qué existe esto
La mayoría de las herramientas de "adaptación de currículums con IA" optimizan la coincidencia de palabras clave y la fluidez de los párrafos a costa de la integridad factual. Añaden felizmente "lideré un equipo de 10" o "mejoré la latencia en un 40%" cuando el usuario nunca afirmó nada de eso. Eso es un riesgo profesional para el usuario y un problema de confianza para el destinatario.
Este proyecto adopta la postura opuesta: el modelo es un recuperador y reescritor sobre la propia evidencia del usuario, no un generador de logros. Adaptar significa seleccionar, reordenar y reformular — nunca inventar. Consulta docs/product-requirements.md para los criterios de aceptación que operacionalizan esto.
Forma del producto
Tres componentes, débilmente acoplados:
Extensión de Chrome. Detecta cuando la pestaña activa es una descripción de puesto en un sitio compatible (LinkedIn, Greenhouse, Lever, Ashby, Workday, texto plano). Ofrece una acción Generar currículum adaptado. Envía la descripción del puesto al backend local; abre una interfaz de revisión cuando el borrador está listo.
Backend local + aplicación web. Posee el banco de experiencias, el pipeline de adaptación, la matriz de evidencia y el renderizador LaTeX/PDF. Se ejecuta en
localhostpor defecto. Incluye una interfaz de revisión: comparación lado a lado con el currículum base, enlaces de evidencia por viñeta, mapa de calor de cobertura de palabras clave, advertencias de afirmaciones no respaldadas, aprobar/rechazar/editar por viñeta.Adaptadores de proveedores (cuenta propia). El usuario conecta su propia cuenta de OpenAI, Anthropic o local (Ollama). No hacemos de proxy a través de nuestros servidores y, en modo local-primero, no almacenamos claves de proveedor en una base de datos alojada — ver
docs/security-and-privacy.md.
La plantilla LaTeX de referencia pública está en templates/resume.template.tex y se usa como objetivo visual/estructural para el renderizador. Los identificadores personales (nombre, correo, enlaces, teléfono, ciudadanía) se declaran como macros en la plantilla para que puedan ser sobrescritos por una superposición privada. La fuente del currículum del mantenedor, que contiene PII real, está en .private/alan-resume-source.tex y está ignorada por Git — trátala como el ejemplo de trabajo canónico de cómo se ve una plantilla completada, no como un archivo que se distribuya con el repositorio. Un banco de experiencias mínimo derivado de esa fuente privada está en docs/example-experience-bank.yaml.
No objetivos (v1)
Sin asistencia para fabricar. Sin "sugerir una viñeta que podrías haber hecho". Sin "rellenar una métrica plausible".
Sin SaaS multiinquilino alojado. El MVP es local-primero. La sincronización en la nube se difiere (ver hoja de ruta).
Sin auto-postulación. No enviamos solicitudes, contactamos reclutadores ni escribimos cartas de presentación. Fuera de alcance.
Sin scraping de bolsas de trabajo con acceso restringido. La extensión lee la página actualmente abierta en la sesión del navegador del usuario; no rastrea.
Sin almacenamiento de claves de API de proveedores en el servidor en v1. Las claves viven en el llavero del sistema operativo o en el almacenamiento local de la extensión.
Sin "puntuación" de currículum. Las puntuaciones numéricas de ATS son pseudociencia sin el ATS en el bucle. Mostramos cobertura de palabras clave y cobertura de evidencia, no una calificación.
Sin scraping de LinkedIn para sembrar el banco de experiencias. La importación es manual o desde PDF/LaTeX subido por el usuario.
Mapa de documentación
Archivo | Propósito |
Historias de usuario, criterios de aceptación, no objetivos, principios de UX | |
Diagrama del sistema, componentes, interfaz del adaptador de proveedor, validación LaTeX | |
Esquema del banco de experiencias, enlaces de evidencia, esquema del artefacto de currículum adaptado | |
Modelo de amenazas, justificación de permisos de la extensión, almacenamiento de claves, flujos de datos | |
Plan de construcción por fases desde M0 (esqueleto) hasta M5 (nube multiusuario) | |
Registro de decisión de arquitectura fundamental | |
Banco de muestra derivado solo del | |
Principios de desarrollo, estándares de código, postura de revisión |
Estructura del repositorio (objetivo)
job-resume-agent/
├── templates/
│ └── resume.template.tex # public, PII-free reference LaTeX template
├── .private/ # git-ignored; maintainer's real resume source lives here
├── README.md
├── CONTRIBUTING.md
├── docs/ # (this repo, today)
├── apps/
│ ├── extension/ # Chrome MV3 extension (TS)
│ ├── backend/ # FastAPI (Python) + SQLite
│ └── web/ # React review UI
├── packages/
│ ├── providers/ # provider adapter interface + impls
│ ├── tailoring/ # retrieval, rewrite, evidence-matrix builder
│ ├── latex/ # renderer, validator, PDF pipeline
│ └── schema/ # shared Zod/Pydantic schemas
└── tests/
└── fixtures/ # JD samples, expected evidence matricesSolo templates/resume.template.tex, README.md, CONTRIBUTING.md y docs/ existen hoy en el árbol rastreado. .private/ está presente en el checkout local del mantenedor pero está ignorado por Git y no se distribuye. El resto es el objetivo de la Fase M1 (ver hoja de ruta).
Supuestos registrados
Estos son los supuestos razonables que este diseño hace sin preguntar al usuario. Cámbialos abriendo un ADR.
Local-primero, MVP de un solo usuario. La nube/multiusuario es una preocupación de v2. Ver
docs/adr/001-local-first-provider-agnostic.md.Cuenta de proveedor propia. No ofrecemos un LLM como servicio. El usuario elige OpenAI, Anthropic u Ollama; lo llamamos con sus credenciales.
LaTeX es la fuente de verdad para el artefacto adaptado. El PDF es un producto de compilación. La plantilla base del usuario (
templates/resume.template.tex, opcionalmente superpuesta por un archivo privado como.private/alan-resume-source.tex) define el marco de diseño.Backend en Python, extensión y UI web en TypeScript. Coincide con el ecosistema de ML/LaTeX en el backend y la plataforma del navegador en el frontend.
Chrome primero. Firefox/Safari pueden seguir mediante compatibilidad MV3 una vez que la superficie sea estable.
El banco es propiedad del usuario. El usuario puede exportar el banco completo como YAML en cualquier momento y eliminar la base de datos local con un comando.
Cada viñeta generada lleva procedencia. Ninguna viñeta llega al PDF sin al menos una referencia
evidence_iden el artefacto de currículum adaptado.
Preguntas abiertas
Rastreadas en docs/roadmap.md#open-questions.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Tailor resumes, generate cover letters, render CVs as PDF, and browse 22+ templates.
Turn a description into a shareable, editable PDF — invoices, certificates, reports, resumes.
A personal RAG database you build from chat, so AI creates work that sounds like you.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Bao-and-Banh-Mi/job-resume-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server