Spark Match es un proyecto académico del Trabajo de Fin de Programa (UNI — II Programa de Especialización en IA Generativa y Machine Learning Ops) que implementa un copiloto de orientación vocacional basado en IA Generativa y MLOps.
Una aplicación web que ayuda a estudiantes a descubrir carreras afines a su perfil mediante:
- 🧠 IA Generativa (Amazon Bedrock + Claude) para análisis de perfil y recomendaciones
- 📊 Pipeline de datos reproducible (DVC) sobre el catálogo oficial de Ponte en Carrera (MINEDU)
- 🎨 Frontend moderno (Angular) con UX conversacional
- ⚙️ Backend serverless (TypeScript en AWS Lambda) y agente conversacional (Python en ECS Fargate)
- 🗄️ Storage (RDS PostgreSQL, S3, CloudFront)
| Repo | Descripción |
|---|---|
| spark-match-00-knowledge-base | Base de conocimiento compartida (ADRs, SDDs, postmortems, onboarding) |
| spark-match-01-devops | Pipelines reutilizables (Terraform + LaTeX) con OIDC, lint y security checks |
| spark-match-02-infrastructure | Infraestructura AWS como código (Terraform puro), backend S3 + OIDC |
| Repo | Descripción |
|---|---|
| spark-match-03-backend | API serverless en TypeScript sobre AWS Lambda: identidad, RBAC, auditoría e informes |
| spark-match-04-frontend | SPA en Angular con UI conversacional |
| spark-match-05-data-pipeline | Pipeline ETL con DVC: limpieza, features y etiquetado RIASEC del catálogo MINEDU |
| spark-match-07-deep-agent | Agente conversacional (LangGraph + AG-UI + Bedrock) con evaluación RIASEC, scoring determinista y memoria (langmem) |
| Repo | Descripción |
|---|---|
| spark-match-06-article | Artículo académico LaTeX (TFP) con CI/CD automatizado |
| Team | Responsabilidad |
|---|---|
| owners | Propietarios de la organización |
| product-owners | Gestión de prioridades y aprobaciones finales |
| devops | Infraestructura AWS y Terraform |
| backend-devs | API serverless en TypeScript, servicios core |
| frontend-devs | SPA en Angular |
| ai-devs | Agente y datos: LangGraph, prompts, scoring, pipeline RIASEC |
| qa | Aseguramiento de calidad y testing |
| article-authors | Autores del artículo académico |
- AWS (
us-east-1) — Cloud principal - Terraform >= 1.6.0 — Infrastructure as Code
- S3 + Lockfile — Backend state remoto (sin DynamoDB)
- GitHub Actions + OIDC — CI/CD sin access keys
- TypeScript + AWS Lambda (SAM) — API serverless, arquitectura DDD + EDA
- PostgreSQL (RDS) — Base de datos transaccional
- EventBridge — Eventos de dominio
- Python + FastAPI — Servidor AG-UI sobre SSE, en ECS Fargate
- LangGraph + deepagents — Orquestación del grafo y subagentes
- Amazon Bedrock — Modelos fundacionales (Claude)
- Angular — SPA con TypeScript
- CloudFront — CDN
- S3 — Hosting estático
- DVC — Versionado y reproducibilidad del pipeline
- pandas + Bedrock — Limpieza, features y etiquetado RIASEC
- CloudWatch — Monitoring y logs
El proyecto no entrena modelos propios: usa modelos fundacionales de Bedrock, y el ranking lo calcula código determinista, no un modelo aprendido.
- LaTeX — Artículo académico (TFP)
- GitHub Releases — Versionado automático del PDF
Todos los repos siguen estas prácticas:
- ✅ Branch protection estricta (1 review + CODEOWNERS + conv resolution)
- ✅ CODEOWNERS por equipo (cada cambio requiere aprobación del equipo responsable)
- ✅ OIDC + IAM Roles (no access keys de larga duración)
- ✅ Roles separados para plan (read-only) vs apply (write)
- ✅ GitHub Environments como approval gates para deploys a producción
- ✅ CI lint checks (actionlint, gitleaks, yamllint) como required status checks
⚠️ Los administradores de la organización pueden saltarse el ruleset vía pull request. Es deliberado (desbloquea a un equipo pequeño), pero conviene tenerlo presente: la protección de rama no es absoluta
- Elige un repo de los listados arriba
- Lee el README del repo para entender su estructura
- Crea una rama con prefijo descriptivo:
feat/,fix/,refactor/,docs/ - Desarrolla siguiendo las convenciones del repo
- Abre un PR — el CI correrá automáticamente
- Espera aprobación de CODEOWNERS del equipo correspondiente
- Mergea cuando el CI pase y tengas al menos 1 aprobación
MIT — ver LICENSE.
Construido con 🧠 + ❤️ por el equipo Spark Match