RAP-Rec es una Single Page Application (SPA) construida con React y Vite. Toda la lógica de negocio, el procesamiento de documentos y las llamadas a la IA de Google Gemini se ejecutan directamente en el navegador del aspirante — el sistema no tiene servidor backend propio.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/mafab9125/PDG_SISTEMA_RECOMENDADOR/llms.txt
Use this file to discover all available pages before exploring further.
Visión general
Sin backend
Las llamadas a Gemini API se realizan desde el navegador con el SDK
@google/genai. No existe un servidor intermediario.Estado en memoria
El estado global vive en el componente
App mediante hooks de React. No se persiste en disco entre sesiones.Orquestador único
src/App.tsx actúa como único orquestador: gestiona el estado, el enrutamiento de pasos y el ciclo de vida de las llamadas a la IA.Estructura de directorios
Interfaces TypeScript
Las siguientes interfaces, definidas ensrc/types.ts, representan los objetos del dominio que fluyen por el sistema durante una sesión.
Course — Curso del catálogo
Competency — Competencia VAP
UserProfile — Perfil del aspirante
VAPEvaluation — Resultado por competencia
AppState — Estado global de la aplicación
La máquina de estados de 7 pasos
App.tsx implementa la navegación como una variable step que determina qué vista renderiza el componente principal. Cada paso tiene una responsabilidad única y bien delimitada.
Paso 1 — Selección del programa
El aspirante elige uno de los 4 programas de posgrado disponibles (
PROGRAMS). Al hacer clic en una tarjeta, selectedProgram se actualiza y el sistema avanza al paso 2.Paso 2 — Carga de perfil
El aspirante puede subir su CV (PDF o DOCX), cargar un perfil de demostración, o completar el formulario manualmente. Si carga un archivo, se invoca
extractProfile() en src/services/gemini.ts y, al terminar, profile se actualiza y se avanza al paso 3.Paso 3 — Verificación de formación
El aspirante revisa y corrige los datos extraídos: nombre, datos de contacto, trayectoria profesional y formación académica. Los campos son editables directamente sobre el estado
profile.Paso 4 — Experiencia específica
El aspirante responde 3 preguntas sobre transformación pedagógica, diseño curricular e integración de TIC. Las respuestas se almacenan en
specificAnswers y también alimentan el prompt de evaluación VAP.Paso 5 — Proyección e intereses
El aspirante declara su área de profundización, contexto de aplicación, meta profesional a 2 años y motivación para el programa. Estos valores enriquecen
profile y personalizan el prompt de recomendaciones.Paso 6 — Evaluación VAP
El aspirante responde una pregunta por cada una de las 5 competencias del Marco VAP. Una vez respondidas todas, el botón de envío se habilita. Al presionarlo, se llama en secuencia a
evaluateVAP() y a getAIRecommendation(), y el sistema avanza al paso 7.Flujo de datos
El siguiente diagrama describe cómo los datos viajan desde la entrada del aspirante hasta las recomendaciones finales.Entrada del documento
El aspirante sube un archivo PDF o DOCX.
pdfjs-dist extrae el texto de documentos PDF página por página; mammoth extrae el texto de documentos Word. El texto crudo se trunca a 8 000 caracteres antes de enviarse a la IA.Extracción de perfil con IA
extractProfile() envía el texto al modelo gemini-3-flash-preview con temperatura 0.1 y responseMimeType: "application/json". Gemini devuelve un objeto UserProfile estructurado que se sanitiza y almacena en el estado profile.Evaluación de competencias VAP
evaluateVAP() construye un prompt con el perfil del aspirante, sus respuestas a las preguntas de experiencia y la definición completa de las 5 competencias VAP (VAP_COMPETENCIES). Gemini devuelve un array de objetos VAPEvaluation con puntaje (1.0–5.0), nivel y justificación por competencia.Cruce con el catálogo de cursos
getAIRecommendation() envía los puntajes VAP junto con un resumen del catálogo de cursos (COURSE_CATALOG). La IA identifica las brechas (competencias con puntaje menor a 4.0) y selecciona los cursos cuyas competencias_VAP_primarias coincidan con esas brechas.Todas las llamadas a Gemini se realizan directamente desde el navegador del usuario. La
GEMINI_API_KEY se inyecta en tiempo de compilación a través de Vite (process.env.GEMINI_API_KEY). Consulta Configuración para conocer cómo configurar la clave.Referencias relacionadas
Stack tecnológico
Dependencias exactas con versiones y justificación de cada tecnología elegida.
Configuración
Variables de entorno, comandos de arranque y parámetros del servidor de desarrollo.
Integración con Gemini
Detalles del SDK
@google/genai, modelo usado y lógica de reintentos.Extracción de perfil
Prompt de extracción, temperatura y sanitización del objeto
UserProfile.