Sistema Inteligente de Gestión y Optimización de CVs. Transforma currículums desordenados en datos estructurados (JSON) listos para Inteligencia Artificial.
[MANDATORY CHECKPOINT]: docs/NEXT_STEPS.md (Read before continuing)
Detailed documentation is available in the docs/ folder:
- ARCHITECTURE.md: Twin-JSON Design, Data Flow, Facade Pattern.
- AI_CONTEXT.md: System Prompts, Models (Schematron vs Gemma), and Resilience.
- WORKFLOWS.md: How to run, debug, and test (SOPs).
Sigue estos pasos para poner en marcha el backend de Python en menos de 5 minutos.
- Python 3.10+ instalado.
- Una API Key de OpenAI (necesitas saldo/crédito disponible).
- Git.
Clona el repositorio y entra en la carpeta:
git clone https://github.com/ssolis-ti/CV-Manaiger.git
cd CV-ManaigerCrea y activa un entorno virtual (recomendado para no ensuciar tu sistema):
En Windows (PowerShell):
python -m venv venv
.\venv\Scripts\activateEn Mac/Linux:
python3 -m venv venv
source venv/bin/activateInstala las dependencias:
pip install -r requirements.txtEl sistema necesita tu clave de OpenAI para4. Configura el entorno:
Copia el archivo de ejemplo y configura tu API Key (OpenAI o Inference.net):
powershell copy .env.example .env # Edita .env con tu clave
- Ejecuta la Demo:
python run_demo.py
- Selecciona Opción 1 para pegar automáticamente desde el portapapeles.
- O selecciona Opción 2 para pegar manualmente. OPENAI_API_KEY=sk-tu-clave-secreta-aqui... OPENAI_MODEL=gpt-4o-mini # Puedes cambiarlo a gpt-4o si prefieres
Hemos incluido un script de demostración interactivo.
Ejecuta el siguiente comando:
python run_demo.py- La terminal te pedirá que pegues el texto de un CV.
- Copia cualquier texto de CV (desordenado, con bullets raros, etc.).
- Pégalo en la terminal.
- Presiona Enter, y luego Ctrl+Z (en Windows) o Ctrl+D (en Linux/Mac) y luego Enter otra vez para indicar que terminaste de escribir.
✨ Verás la magia: El sistema limpiará el texto, lo analizará con IA y te devolverá un JSON perfecto con secciones, habilidades detectadas y métricas de impacto.
Para los curiosos, así está organizado el "cerebro":
The system follows a modular Facade Pattern with a One-Shot LLM Extraction strategy (V3).
graph TD
User(["User / CLI"]) --> Facade["CVProcessor (Main)"]
Facade --> Triage["Triage & ATS Check"]
Facade --> ETL_Clean["Cleaner (Regex)"]
Facade --> Brain["Semantic Structurer (One-Shot LLM)"]
Facade --> Format["JSON Formatter (Pydantic)"]
Facade --> Enrich["Enricher (Gemma 3)"]
Triage --> ETL_Clean
ETL_Clean --> Brain
Brain -->|Extracted Structure| Format
Format -->|Twin-JSON| Enrich
Enrich --> Output[("JSON/Files")]
subgraph Core Logic
Brain
end
cv_formatter/main.py: El Jefe (Facade). Conecta todas las piezas. Si vas a usar esto en tu código, importa la claseCVProcessorde aquí.cv_formatter/etl/: Limpieza. Se encarga de quitar basura y normalizar el texto antes de que la IA lo toque.cv_formatter/llm/: Inteligencia. Aquí vive eltagger.pyque habla con OpenAI. Incluye reintentos automáticos y control de costos.cv_formatter/formatter/: Orden. Define la estructura exacta del JSON final usando Pydantic.
Si quieres verificar que todo funciona correctamente a nivel de código:
pytestEsto ejecutará las pruebas automáticas de limpieza y extracción.