Sprint Planning - Sprint 2
Información General
- Sprint: Sprint 2
- Fecha de inicio: 14 de octubre de 2025
- Fecha de finalización: 28 de octubre de 2025
- Duración: 2 semanas (15 días laborables)
- Equipo: Gabriel Francisco
Objetivo del Sprint (Sprint Goal)
Enriquecer el chatbot con herramientas educativas específicas, implementando un sistema RAG y capacidades de acceso a información académica de la UGR, mejorando significativamente la calidad y contextualización de las respuestas.
El sprint se enfoca en transformar el chatbot básico en un asistente educativo más robusto y especializado, proporcionando acceso a información fiable, contextualizada y útil para el ámbito académico universitario.
Alcance del Sprint
Milestone Asociado
- Milestone 2: Agente con herramientas específicas educativas
Historias de Usuario (User Stories)
HU #4: Información de Fuentes Fiables
Como profesor quiero que mis alumnos obtengan información de fuentes fiables para que no se desinformen.
Relación con Issues: #29, #30
HU #5: Información Básica de Asignaturas
Como estudiante quiero que el chatbot me dé información básica sobre la asignatura para acceder fácilmente a esta.
Relación con Issues: #31
HU #6: Tests Interactivos para Estudio
Como estudiante quiero que el chatbot me ayude a estudiar con tests interactivos para comprobar mi conocimiento.
Relación con Issues: #33, #34
Funcionalidades Planificadas
1. Sistema RAG (Retrieval-Augmented Generation)
Objetivo: Implementar un servicio independiente de RAG para proporcionar contexto específico y fiable a las respuestas del agente.
- Diseñar arquitectura del servicio RAG como microservicio
- Implementar pipeline de indexación de documentos
- Configurar base de datos vectorial (ChromaDB, Qdrant, o similar)
- Implementar modelo de embeddings (local o API)
- Crear herramienta de búsqueda semántica para el agente
- Contenerización del servicio RAG
- Integración con Docker Compose
- Tests de recuperación de información
2. Herramienta: Web Scraper de Guías Docentes UGR
Objetivo: Extraer y procesar información administrativa y académica de las guías docentes de la Universidad de Granada.
- Investigar estructura del sitio web de guías docentes UGR
- Implementar scraper con Beautiful Soup / Scrapy
- Parsear información relevante:
- Objetivos y competencias
- Contenidos temáticos
- Bibliografía
- Criterios de evaluación
- Horarios y profesorado
- Estructurar datos para indexación en RAG
- Implementar caché para evitar scraping repetitivo
- Manejar errores y páginas no disponibles
- Tests de scraping y parsing
3. Herramienta: Generador de Tests Básicos
Objetivo: Crear tests de autoevaluación a partir de contenidos de las asignaturas.
- Diseñar formato de tests (opción múltiple, verdadero/falso, respuesta corta)
- Implementar lógica de generación usando el LLM
- Utilizar contexto del RAG para generar preguntas relevantes
- Implementar sistema de validación de respuestas (básico, sin interfaz)
- Almacenar tests generados para reutilización
- Tests unitarios de generación
4. Mejora Continua del System Prompt
Objetivo: Optimizar iterativamente el comportamiento del agente mediante refinamiento del prompt del sistema.
- Definir criterios de evaluación de calidad de respuestas:
- Precisión académica
- Claridad y pedagogía
- Uso apropiado de herramientas
- Tono educativo
- Implementar versiones del system prompt:
- v1: Énfasis en fuentes fiables y RAG
- v2: Mejora de instrucciones de uso de herramientas
- v3: Optimización de tono educativo y pedagógico
- v4+: Ajustes según feedback y testing
- Documentar cambios y resultados de cada iteración
- A/B testing manual de diferentes versiones
- Establecer prompt final para el sprint
5. Resolución de Issues de Calidad
Objetivo: Abordar problemas identificados en la iteración anterior.
- #29: Evitar desinformación de búsquedas generales
- Priorizar uso de RAG sobre búsqueda web
- Validar fuentes antes de presentar información
- #30: Mitigar información sesgada o incompleta
- Implementar citas de fuentes en respuestas
- Indicar nivel de confianza en la información
- #31: Acceso fácil a información académica UGR
- Herramienta de scraping de guías docentes
- Indexación en RAG
- #32: Respuestas contextualizadas por asignatura
- RAG con documentos específicos por asignatura
- Filtrado por metadatos (asignatura, curso, grado)
- #33: Expandir interacción más allá de texto
- Generación de tests (sin interfaz aún)
- Preparación para futuras mejoras multimedia
- #34: Medir utilidad de conversaciones
- Diseñar métricas de evaluación
- Implementar logging estructurado de interacciones
Product Backlog Items Seleccionados
Issues Comprometidos
ID | Título | Tipo | Estimación | Prioridad | User Story |
---|---|---|---|---|---|
#29 | Una búsqueda general en google puede dar como resultado desinformación | Feature | M | Alta | #4 |
#30 | La información de internet puede estar sesgada o incompleta | Feature | M | Alta | #4 |
#31 | El chatbot no tiene fácil acceso a información administrativa y académica de las asignaturas de la UGR | Feature | L | Alta | #5 |
#32 | El chatbot no responde de forma contextualizada y personalizada para todas mis asignaturas | Feature | L | Alta | #5 |
#33 | La interacción con el chatbot está limitada a enviar y recibir texto | Feature | M | Media | #6 |
#34 | No puedo medir si las conversaciones que tengo con el chatbot me son útiles | Feature | S | Media | #6 |
#4 | [HU 004] Como profesor quiero que mis alumnos obtengan información de fuentes fiables | User Story | - | Alta | - |
#5 | [HU 005] Como estudiante quiero que el chatbot me dé información básica sobre la asignatura | User Story | - | Alta | - |
#6 | [HU 006] Como estudiante quiero que el chatbot me ayude a estudiar con tests interactivos | User Story | - | Media | - |
Total de Issues: 9 (6 features + 3 user stories)
Estimación de Esfuerzo
- Small (S): 1-2 días
- Medium (M): 2-4 días
- Large (L): 4-6 días
Criterios de Aceptación
Para el Sprint
El sprint se considerará exitoso cuando:
- ✅ Exista un servicio RAG funcional integrado en la arquitectura de microservicios
- ✅ El agente pueda consultar el RAG para obtener contexto específico en sus respuestas
- ✅ La herramienta de scraping pueda extraer información de guías docentes de la UGR
- ✅ La información de guías docentes esté indexada y disponible en el RAG
- ✅ El agente pueda generar tests básicos de autoevaluación
- ✅ El system prompt haya sido mejorado y optimizado al menos 3 veces
- ✅ Las respuestas del chatbot citen fuentes y sean más contextualizadas
- ✅ Existan métricas básicas para evaluar la utilidad de las conversaciones
- ✅ Todo el sistema ampliado esté contenerizado y desplegable
- ✅ La documentación refleje las nuevas capacidades
Por Issue
Issue #29: Evitar desinformación de búsquedas generales
- RAG implementado como fuente primaria de información
- Sistema de priorización: RAG > fuentes verificadas > web general
- Warnings cuando la información viene de fuentes no verificadas
- Tests de comparación de calidad de respuestas
Issue #30: Mitigar información sesgada/incompleta
- Sistema de citación de fuentes en respuestas
- Indicadores de nivel de confianza
- Múltiples fuentes para información crítica
- Documentación de limitaciones conocidas
Issue #31: Acceso a información académica UGR
- Scraper funcional para guías docentes
- Al menos 5 guías docentes scrapeadas exitosamente
- Información estructurada y parseada correctamente
- Datos indexados en RAG
- Tests de extracción de información
Issue #32: Respuestas contextualizadas por asignatura
- RAG soporta filtrado por asignatura
- Metadatos de asignatura en documentos indexados
- Agente utiliza contexto de asignatura en respuestas
- Tests con queries específicas de asignaturas
Issue #33: Generación de tests interactivos
- Herramienta de generación de tests implementada
- Soporte para al menos 2 tipos de preguntas (ej: múltiple opción, V/F)
- Generación basada en contexto del RAG
- Sistema básico de validación de respuestas
- Al menos 3 tests de ejemplo generados
Issue #34: Métricas de utilidad de conversaciones
- Sistema de logging estructurado implementado
- Métricas definidas: relevancia, precisión, uso de herramientas
- Almacenamiento de métricas en base de datos
- Dashboard o reporte básico de métricas
Riesgos Identificados
Riesgos Técnicos
Riesgo | Probabilidad | Impacto | Mitigación |
---|---|---|---|
Scraping bloqueado por el sitio de la UGR | Media | Alto | Implementar delays, respetar robots.txt, caché agresivo, considerar APIs oficiales |
Rendimiento del RAG afecta tiempo de respuesta | Alta | Medio | Optimizar embeddings, usar índices eficientes, considerar caché de búsquedas frecuentes |
Modelo de embeddings consume demasiados recursos | Media | Medio | Usar modelos ligeros, considerar API de embeddings, batch processing |
Calidad de tests generados insuficiente | Media | Medio | Prompt engineering específico, validación humana inicial, templates de preguntas |
Complejidad de integración RAG excede estimación | Media | Alto | Usar frameworks probados (LangChain, LlamaIndex), simplificar alcance inicial |
Riesgos de Datos
Riesgo | Probabilidad | Impacto | Mitigación |
---|---|---|---|
Estructura de guías docentes cambia entre facultades | Alta | Medio | Parser flexible, múltiples estrategias de extracción, logging de errores |
Información de guías docentes desactualizada | Media | Bajo | Timestamp de última actualización, sistema de re-scraping periódico |
Volumen de datos para RAG muy grande | Baja | Medio | Estrategia de indexación incremental, limitación inicial a facultad/grado específico |
Riesgos de Proceso
Riesgo | Probabilidad | Impacto | Mitigación |
---|---|---|---|
Scope creep en mejoras de prompts | Alta | Medio | Limitar a 4 iteraciones máximo, definir criterios claros de “suficientemente bueno” |
Tiempo de desarrollo de RAG subestimado | Media | Alto | Priorizar funcionalidad core, postponer optimizaciones avanzadas |
Definición de “Hecho” (Definition of Done)
Una funcionalidad se considera “Hecha” cuando:
- ✅ El código está escrito y commiteado
- ✅ Existen tests que validan la funcionalidad (unitarios y/o integración)
- ✅ Los tests pasan exitosamente
- ✅ El código está integrado en la rama principal
- ✅ La documentación está actualizada (README, CHANGELOG, docstrings)
- ✅ La funcionalidad funciona en el entorno Docker/Compose
- ✅ No existen bugs críticos conocidos
- ✅ La funcionalidad ha sido probada manualmente con casos reales
- ✅ Las métricas de rendimiento están dentro de límites aceptables
Plan de Trabajo
Semana 1 (14 Oct - 18 Oct)
Días 1-2: Setup RAG y primera iteración de prompts
- Investigar y seleccionar stack de RAG (ChromaDB/Qdrant + embeddings)
- Implementar estructura básica del servicio RAG
- Dockerizar servicio RAG
- Iteración 1 de system prompt: Enfoque en uso de RAG y fuentes fiables
- Tests básicos de RAG
Días 3-4: Scraper de guías docentes
- Análisis de estructura HTML de guías docentes UGR
- Implementar scraper básico
- Parsear información principal (objetivos, contenidos, bibliografía)
- Iteración 2 de system prompt: Mejora de instrucciones para herramientas
- Tests de scraping
Día 5: Integración RAG + Guías docentes
- Indexar guías docentes en RAG
- Crear herramienta de búsqueda en guías para el agente
- Pruebas de consultas específicas
- Iteración 3 de system prompt: Optimización de tono educativo
Semana 2 (21 Oct - 28 Oct)
Días 6-7: Generador de tests básicos
- Diseñar estructura de tests
- Implementar generación con LLM + contexto RAG
- Sistema de validación básico
- Tests unitarios
Días 8-9: Métricas y logging
- Implementar sistema de logging estructurado
- Definir y capturar métricas de utilidad
- Crear reporte básico de métricas
- Iteración 4 de system prompt: Ajustes finales según testing
Días 10-11: Mejoras de calidad y citación de fuentes
- Implementar sistema de citación
- Indicadores de confianza en respuestas
- Validación de fuentes
- Testing end-to-end
Días 12-13: Integración final y testing
- Integración completa en Docker Compose
- Testing de todos los componentes juntos
- Ajustes de rendimiento
- Documentación técnica
Días 14-15: Documentación, release y cierre
- Actualizar README con nuevas capacidades
- Actualizar CHANGELOG
- Preparar release v0.2.0
- Sprint Review y retrospectiva
Tareas Técnicas Identificadas
Servicio RAG
- Seleccionar e instalar base de datos vectorial
- Configurar modelo de embeddings
- Implementar API del servicio RAG (endpoints: /index, /search)
- Crear Dockerfile para servicio RAG
- Añadir servicio RAG a docker-compose.yml
- Implementar pipeline de indexación de documentos
- Tests de indexación y búsqueda
- Documentar API del servicio RAG
Scraper de Guías Docentes
- Investigar URLs y estructura HTML
- Crear
tools/ugr_scraper.py
- Implementar extracción de metadatos (asignatura, curso, grado)
- Parsear contenido académico
- Implementar sistema de caché
- Manejo de errores y logging
- Tests con guías docentes reales
- Documentar uso del scraper
Generador de Tests
- Diseñar esquema de tests (JSON/dict)
- Crear
tools/test_generator.py
- Implementar prompts para generación de preguntas
- Integrar con RAG para contexto
- Sistema de validación de respuestas
- Tests unitarios de generación
- Ejemplos y documentación
System Prompts
- Crear carpeta
logic/prompts/versions/
- Implementar system_prompt_v1.py (énfasis RAG)
- Implementar system_prompt_v2.py (instrucciones herramientas)
- Implementar system_prompt_v3.py (tono educativo)
- Implementar system_prompt_v4.py (ajustes finales)
- Documentar cambios entre versiones
- Tests comparativos A/B
Métricas y Logging
- Implementar logger estructurado
- Definir esquema de métricas
- Capturar eventos: consulta, respuesta, herramientas usadas, tiempo
- Almacenar en base de datos (MongoDB/PostgreSQL)
- Crear script de análisis básico
- Dashboard simple (opcional)
Calidad de Respuestas
- Implementar
utils/citation_formatter.py
- Añadir metadatos de fuente a respuestas RAG
- Formatear citas en respuestas del agente
- Indicadores de nivel de confianza
- Tests de formato de citación
Integración y Deploy
- Actualizar docker-compose.yml con servicio RAG
- Variables de entorno para configuración RAG
- Script de setup inicial (indexación de datos base)
- Tests de integración end-to-end
- Documentación de deployment
Recursos Necesarios
Hardware
- Máquina con GPU (≥5 GB VRAM para desarrollo)
- Espacio en disco para base de datos vectorial (≥10 GB recomendado)
- Conexión a internet para scraping
Software
- Existentes: Docker/Podman, Python 3.12+, vLLM, LangGraph, FastAPI
- Nuevos:
- Base de datos vectorial (ChromaDB, Qdrant, o Faiss)
- Beautiful Soup / Scrapy (web scraping)
- Modelo de embeddings (sentence-transformers, OpenAI API, etc.)
- LangChain o LlamaIndex (opcional, para RAG)
- Requests / httpx (para scraping)
Conocimiento
- Arquitecturas RAG (Retrieval-Augmented Generation)
- Web scraping y parsing HTML
- Bases de datos vectoriales y embeddings
- Prompt engineering avanzado
- Testing de modelos de lenguaje
Datos
- Acceso a guías docentes de la UGR
- Documentos académicos para indexar en RAG (libros, apuntes, etc.)
- Ejemplos de tests educativos para referencia
Dependencias Externas
- Sitio web de guías docentes UGR: Disponibilidad y estabilidad - crítico para scraping
- Base de datos vectorial: Rendimiento y escalabilidad - crítico para RAG
- Modelo de embeddings: Calidad y velocidad - importante para RAG
- Hardware: GPU y espacio en disco suficientes - crítico
- Documentos académicos: Disponibilidad de material para indexar - importante
Ceremonias del Sprint
Daily Scrum
- Frecuencia: Diario (cuando sea posible)
- Formato: Documentado en markdown en
devLog/daily scrum/octubre/
- Contenido:
- ¿Qué hice ayer?
- ¿Qué haré hoy?
- ¿Qué obstáculos encontré?
- Aprendizajes y links de interés
- Iteración actual de prompts (si aplica)
Sprint Review
- Fecha: 29 de octubre de 2025 (día posterior al cierre)
- Objetivo: Demostrar el incremento completado
- Entregables:
- Demostración del RAG en acción
- Ejemplos de scraping de guías docentes
- Tests generados por el sistema
- Comparación de versiones de prompts
- Métricas recopiladas durante el sprint
- CHANGELOG actualizado
- Release v0.2.0
Sprint Retrospective
- Integrada en Sprint Review
- Temas a cubrir:
- Efectividad de las iteraciones de prompts
- Desafíos técnicos del RAG
- Lecciones aprendidas del scraping
- Calidad de los tests generados
- Áreas de mejora para Sprint 3
Métricas de Éxito
Métricas Cuantitativas
- Velocity: 9 issues (6 features + 3 user stories)
- Iteraciones de prompt: Mínimo 3, objetivo 4
- Guías docentes scrapeadas: Mínimo 5, objetivo 10+
- Tests generados: Mínimo 10 tests de ejemplo
- Cobertura de tests de código: >70%
- Tiempo de respuesta con RAG: <5 segundos
- Precisión de recuperación RAG: >80% de relevancia
Métricas Cualitativas
- Respuestas más contextualizadas y precisas vs Sprint 1
- Citación clara de fuentes en respuestas
- Tests generados son pedagógicamente útiles
- Documentación clara de las nuevas capacidades
- Sistema RAG es reutilizable para otros dominios
- Código modular y bien estructurado
Métricas de Usuario (iniciales)
- Relevancia percibida de respuestas (evaluación manual)
- Utilidad de información de guías docentes
- Calidad de tests generados (evaluación por experto)
Notas Adicionales
Consideraciones Técnicas
Sobre el RAG
- Comenzar con un dataset pequeño para validar pipeline
- Considerar chunking strategies para documentos largos
- Evaluar trade-off entre precisión y velocidad
- Documentar configuración de embeddings para reproducibilidad
Sobre el Scraping
- Respetar robots.txt y políticas del sitio
- Implementar delays entre requests (rate limiting)
- Caché agresivo para evitar re-scraping innecesario
- Considerar contactar con UGR para acceso a APIs oficiales en el futuro
Sobre los Prompts
- Mantener historial de todas las versiones
- Documentar decisiones de diseño de cada iteración
- Usar ejemplos concretos para evaluar mejoras
- Considerar crear suite de test cases para prompts
Sobre las Métricas
- Empezar simple, iterar después
- Priorizar métricas accionables
- Considerar privacidad en logging de conversaciones
- Preparar infraestructura para análisis futuro
Gestión del Proyecto
- Priorizar funcionalidad core sobre perfección
- RAG básico funcional es más valioso que RAG perfecto sin terminar
- Documentar decisiones técnicas importantes (ADRs si es necesario)
- Mantener comunicación constante mediante daily scrums
Extensibilidad Futura
- El servicio RAG debe ser reutilizable para otros tipos de documentos
- El scraper debe ser adaptable a otras fuentes (ej: bibliotecas, repositorios)
- El generador de tests debe soportar fácilmente nuevos tipos de preguntas
- Las métricas deben ser extensibles para análisis más profundo
Compromisos del Equipo
Como equipo de desarrollo, nos comprometemos a:
- Entregar un chatbot enriquecido con capacidades RAG y herramientas educativas específicas
- Iterar el system prompt al menos 3 veces basándose en evidencia y testing
- Priorizar calidad y utilidad pedagógica sobre cantidad de features
- Mantener documentación actualizada de decisiones técnicas
- Respetar buenas prácticas de web scraping y uso ético de datos
- Implementar tests que garanticen la calidad de las nuevas funcionalidades
- Buscar feedback temprano y ajustar según sea necesario
Aprendizajes Esperados
Al final de este sprint, se espera haber adquirido conocimiento en:
- Arquitecturas y mejores prácticas de RAG
- Web scraping robusto y manejo de datos semi-estructurados
- Prompt engineering avanzado e iterativo
- Evaluación de calidad de respuestas de LLMs
- Integración de múltiples microservicios complejos
- Métricas y observabilidad en aplicaciones de IA
Elaborado por: Gabriel Francisco
Fecha: 14 de octubre de 2025
Última actualización: 14 de octubre de 2025
Estado: ✅ Aprobado