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
- 📊 MLOps pipelines para entrenar y servir modelos de matching vocacional
- 🎨 Frontend moderno (Angular) con UX conversacional
- ⚙️ Backend escalable (FastAPI en ECS Fargate)
- 🗄️ Storage y analytics (RDS Aurora, S3, CloudFront)
| Repo | Descripción |
|---|---|
| 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 REST en FastAPI (servicios core, integración con IA) |
| spark-match-04-frontend | SPA en Angular con UI conversacional |
| spark-match-05-data-pipeline | Pipelines ETL (procesamiento de datos vocacionales) |
| spark-match-06-model-training | Entrenamiento y serving de modelos ML (Bedrock + embeddings) |
| Repo | Descripción |
|---|---|
| spark-match-07-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 REST en FastAPI, servicios core |
| frontend-devs | SPA en Angular |
| ai-devs | IA/ML: LangChain, prompts, embeddings, modelos |
| 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
- FastAPI — API REST en Python
- Amazon Bedrock — Modelos fundacionales (Claude)
- LangChain — Orquestación de LLMs
- PostgreSQL (RDS Aurora) — Base de datos transaccional
- Angular — SPA con TypeScript
- CloudFront — CDN
- S3 — Hosting estático
- S3 + Glue/Athena — Data lake
- SageMaker / Bedrock — Model training y serving
- CloudWatch — Monitoring y logs
- 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
- ✅ enforce_admins activado (admins no pueden bypasear protecciones)
- 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