Aplicación local-first para optimizar y editar CVs con OpenAI, Gemini o OpenRouter.
cv-optimizer-preview.mp4
La idea del proyecto es simple:
- clonas o descargas el repo
- lo ejecutas en tu ordenador
- configuras tu propia API key
- subes tu CV
- editas el resultado en el navegador
Licencia: Apache-2.0
- Acepta CVs en
PDF,HTML,TXT,YAMLyYML. - Sanitiza el contenido antes de enviarlo al proveedor de IA.
- Genera HTML semántico editable.
- Mantiene historial local en el navegador para seguir editando.
- Permite exportar a
HTML,TXTy vista de impresión paraPDF. - Soporta
OpenAI,GeminiyOpenRouter.
Node.js 22.12.0o superiorpnpm- una API key de
OpenAI,GeminioOpenRouter
- Se recomienda usar
Google Chrome. - El proyecto usa APIs del navegador y almacenamiento local del navegador, y el flujo ha sido probado solo en
Chrome. - El proyecto ha sido probado mayormente con API keys de prueba de
GeminidesdeGCP (Google Cloud Platform). OpenAIyOpenRouterestán soportados, pero en la práctica pueden presentar una tasa de errores mayor porque han sido menos probados en este repo.
Si usas Git:
git clone https://github.com/non-stop-dev/cv-optimizer.git
cd cv-optimizerSi no usas Git:
- Descarga el repositorio como ZIP desde GitHub.
- Descomprímelo.
- Abre una terminal dentro de la carpeta.
- Entra al proyecto con:
cd cv-optimizerInstala una versión LTS moderna de Node.js y comprueba que quedó bien:
node --versionDebe devolver 22.12.0 o superior.
Con Node moderno, normalmente basta con:
corepack enable pnpm
pnpm --versionpnpm installcp .env.example .envImportante:
.envno debe subirse al repositorio..env.examplesí está pensado para versionarse.- usa solo un proveedor a la vez
- no mezcles API keys, modelos o base URLs entre proveedores
Abre .env y deja activa solo una plantilla.
Variables obligatorias:
AI_PROVIDERAI_PROVIDER_API_KEYAI_PROVIDER_MODEL
Variables comunes:
AI_MAX_OUTPUT_TOKENSAI_TEMPERATUREAI_TOP_PCODING_ENVIRONMENT
Variables extra para OpenRouter:
AI_OPENROUTER_HTTP_REFERERAI_OPENROUTER_TITLE
AI_MAX_OUTPUT_TOKENS="10000"
AI_TEMPERATURE="0.7"
AI_TOP_P="0.95"
CODING_ENVIRONMENT="development"
AI_PROVIDER="openai"
AI_PROVIDER_API_KEY="PASTE_YOUR_OPENAI_API_KEY_HERE"
AI_PROVIDER_MODEL="PASTE_OPENAI_MODEL_NAME_HERE"
AI_PROVIDER_BASE_URL="https://api.openai.com/v1"Ejemplos de modelo:
gpt-4o-minigpt-4.1-mini
AI_MAX_OUTPUT_TOKENS="10000"
AI_TEMPERATURE="0.7"
AI_TOP_P="0.95"
CODING_ENVIRONMENT="development"
AI_PROVIDER="gemini"
AI_PROVIDER_API_KEY="PASTE_YOUR_GEMINI_API_KEY_HERE"
AI_PROVIDER_MODEL="PASTE_GEMINI_MODEL_NAME_HERE"
AI_PROVIDER_BASE_URL="https://generativelanguage.googleapis.com/v1beta/openai/"Ejemplos de modelo:
gemini-2.5-flashgemini-2.5-pro
AI_MAX_OUTPUT_TOKENS="10000"
AI_TEMPERATURE="0.7"
AI_TOP_P="0.95"
CODING_ENVIRONMENT="development"
AI_PROVIDER="openrouter"
AI_PROVIDER_API_KEY="PASTE_YOUR_OPENROUTER_API_KEY_HERE"
AI_PROVIDER_MODEL="PASTE_OPENROUTER_MODEL_NAME_HERE"
AI_PROVIDER_BASE_URL="https://openrouter.ai/api/v1"
AI_OPENROUTER_HTTP_REFERER="http://localhost:4321"
AI_OPENROUTER_TITLE="CV Optimizer"Ejemplos de modelo:
openai/gpt-4o-miniqwen/qwen3.6-plus:free
pnpm devLuego abre:
pnpm devLevanta la aplicación en local.
pnpm testEjecuta los tests.
pnpm buildConstruye la app para producción.
pnpm exec astro checkEjecuta validación de Astro y TypeScript.
- Arranca la app con
pnpm dev. - Abre
http://localhost:4321. - Sube tu CV.
- Espera a que termine la optimización.
- Edita el contenido directamente en el navegador.
- Exporta a HTML, TXT o abre la vista de impresión para PDF.
- tamaño máximo por archivo:
10 MB - máximo de páginas PDF:
35 - máximo de posiciones objetivo:
3 - la exportación PDF actual usa impresión del navegador; no hay todavía un exportador automático de servidor
Ejecuta:
corepack enable pnpmRevisa que en .env existan:
AI_PROVIDERAI_PROVIDER_API_KEYAI_PROVIDER_MODEL
Tu API key puede ser válida, pero el modelo no corresponde con el proveedor configurado. Revisa AI_PROVIDER_MODEL.
Prueba:
pnpm dev -- --port 4322Y abre http://localhost:4322.
AGENTS.mdsrc/server/llm-processing/README.mdsrc/server/llm-processing/pdf-processing/README.mdsrc/server/browser-memory/README.mdsrc/server/export-cv/README.mdsrc/server/text-editor/README.mdsrc/styles/cv-templates/README.mdCONTRIBUTING.mdSECURITY.md
Si quieres contribuir, revisa primero CONTRIBUTING.md.
Si encuentras un problema de seguridad, revisa SECURITY.md.