Cómo funciona
MaxCV es open source (MIT). Aquí puedes ver exactamente qué pasa cuando subes tu CV.
El pipeline, paso a paso
Subes tu CV
Pegas texto o adjuntas un PDF en tu navegador. Si es PDF, se envía al backend donde Claude lo lee nativamente (sin librerías de parsing). Tu archivo nunca se guarda en disco.
Sanitización de input
El texto pasa por sanitizeInput() que elimina bytes nulos y caracteres de control. Se trunca a 35,000 caracteres máximo. Rate limiting: 7 peticiones/hora por IP (en memoria, sin base de datos).
Prompt constitucional
Tu CV se envía a la API de Claude con un system prompt que incluye principios éticos explícitos: no discriminar, no inventar, no inflar scores, referenciar solo contenido real del CV. El prompt completo está en src/lib/prompts/analyze.txt — es auditable.
Claude analiza y reescribe
Un solo API call con temperature: 0 (determinístico). Claude devuelve JSON con: score (0-100), análisis en 6 dimensiones con evidencia, fortalezas, mejoras, y un CV completamente reescrito. Prompt caching activado para reducir costo y latencia.
Validación y render
El backend parsea el JSON, valida que tenga score + analysis + improved_cv, y lo devuelve al frontend. Si Claude no responde JSON válido, se muestra un error honesto — nunca resultados inventados.
Resultado en tu navegador
Ves tu score, las 6 dimensiones con criterios específicos (pass/warning/fail), sugerencias con before/after, y tu CV mejorado listo para copiar. Todo en tu navegador. Nada se almacena.
Stack técnico
Arquitectura de archivos
src/ ├─ app/ │ ├─ api/analyze/route.ts ← Endpoint principal (Claude API call) │ ├─ api/parse/route.ts ← PDF → texto (Claude nativo) │ ├─ page.tsx ← Página principal │ ├─ privacy/page.tsx ← Aviso de privacidad │ ├─ terms/page.tsx ← Términos de uso │ ├─ security/page.tsx ← Seguridad & privacidad │ └─ how/page.tsx ← Esta página ├─ components/ │ ├─ Analyzer.tsx ← Componente principal (~450 líneas) │ ├─ Header.tsx / Footer.tsx │ └─ ResumeText.tsx ← Render de texto con bullet indent └─ lib/ ├─ prompts/analyze.txt ← System prompt constitucional ├─ i18n.ts ← Todas las traducciones ES/EN ├─ analytics.ts ← Eventos de conversión ├─ rateLimit.ts ← Rate limiting (in-memory) └─ apiUtils.ts ← sanitizeInput + stripMarkdown
Principios de diseño
Transparencia radical
El código fuente está público. El prompt de IA está en el repo. Los pesos del scoring están documentados. Puedes verificar cada promesa que hacemos.
Anti-alucinación
Cada sugerencia debe referenciar contenido real del CV. Si algo no está en tu CV, no se menciona. Consejo genérico = falla del sistema.
Cero discriminación
No penalizamos career gaps, caminos no lineales ni educación no tradicional. No inferimos género, edad, etnia ni nacionalidad.
Privacidad por diseño
Sin base de datos, sin cuentas, sin cookies de tracking. Tu CV existe solo durante el análisis y se descarta inmediatamente.
Fork, clona, contribuye
MaxCV es MIT. Puedes clonarlo, modificarlo, y lanzar tu propia versión. Solo necesitas una API key de Anthropic.
git clone https://github.com/pixan-ai/maxcv.git cd maxcv npm install echo "ANTHROPIC_API_KEY=tu-key" > .env.local npm run dev
Última actualización: Abril 2026