You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PuBlitec — Plataforma de Gestion de Convocatorias con Inteligencia Artificial
Documento Tecnico Integral
1. Resumen Ejecutivo
PuBlitec es una plataforma web que digitaliza y potencia con inteligencia artificial el ciclo completo de convocatorias publicas en Colombia. Conecta a entidades (ministerios, gobernaciones, fondos de inversion) con municipios para la formulacion, evaluacion y seguimiento de proyectos de inversion publica bajo la Metodologia General Ajustada (MGA) del Departamento Nacional de Planeacion (DNP).
Problema que resuelve
Los municipios colombianos — especialmente los de categoria 5 y 6 — enfrentan barreras criticas para acceder a recursos de inversion publica:
Complejidad tecnica: La metodologia MGA exige conocimientos especializados en formulacion de proyectos (arboles de problemas, marcos logicos, analisis de alternativas) que muchos equipos municipales no poseen.
Fragmentacion del proceso: Las convocatorias se gestionan con formularios en papel, correos electronicos y hojas de calculo, sin trazabilidad ni estandarizacion.
Evaluacion subjetiva: Los criterios de evaluacion varian entre evaluadores y la retroalimentacion es limitada, lo que impide a los municipios mejorar sus propuestas.
Desconexion temporal: No existe retroalimentacion en tiempo real. Los municipios solo saben el resultado semanas o meses despues del cierre.
Solucion
PuBlitec automatiza el ciclo completo:
Entidad crea convocatoria → Municipio estructura proyecto con IA →
IA pre-evalua en tiempo real → Municipio mejora y envia →
Entidad evalua formalmente → Reportes PDF/Excel automaticos
La inteligencia artificial (Claude de Anthropic) asiste en cada paso: genera borradores, sugiere mejoras, identifica riesgos, pre-evalua contra rubrica, y produce reportes ejecutivos automaticos.
Generacion automatica por cron (deadline a 7/3/1 dias, inactividad 7+ dias)
3.3 Capacidades de Inteligencia Artificial
Asistencia por Campo (AI Assist)
Como funciona: El usuario hace click en "Asistir con IA" en cualquier campo del formulario. El sistema construye un prompt con: contexto de la convocatoria, etapa actual, campo especifico, contenido existente del usuario, y chunks relevantes de documentos de referencia (RAG). Claude genera una respuesta estructurada en streaming.
Salida: texto sugerido, puntos clave (bullets), riesgos identificados, preguntas sobre informacion faltante, citas de documentos de referencia, score de confianza
RAG: Los documentos de la convocatoria se procesan en chunks y se vectorizan con Voyage AI. Al momento de la consulta, se recuperan los top-5 chunks mas relevantes (similitud coseno > 0.7) usando pgvector.
Cache: Hash SHA-256 del prompt; si existe una respuesta identica de las ultimas 24 horas, se retorna del cache.
Generacion Completa de Proyecto
Como funciona: Un click genera todas las etapas del proyecto secuencialmente. Cada etapa usa como contexto el contenido generado en etapas anteriores para mantener coherencia.
Streaming: Progreso en tiempo real via SSE con eventos step_complete
Tiempo: ~90 segundos para un proyecto completo de 5+ etapas
Auto-Draft por Etapa
Genera borrador para todos los campos vacios de una etapa
Preserva contenido existente
Usa misma logica de RAG que el assist individual
Mejora de Texto
Reescribe texto existente para mayor claridad, formalidad y completitud
Mantiene el significado original
Vista de diferencias para revision
Pre-Evaluacion IA
Evalua el proyecto completo contra la rubrica de la convocatoria
1 llamada LLM por etapa (evalua todos los criterios en batch)
Retorna: score total, score por criterio, puntajes ponderados, justificaciones, recomendaciones de mejora
El municipio puede ejecutarla cuantas veces quiera antes de enviar
Evaluacion Formal IA
Ejecutada por la entidad sobre submissions recibidas
Genera scores, justificaciones y resumen ejecutivo
Soporta evaluacion hibrida: IA pre-llena scores que el evaluador humano puede ajustar
Chat Copiloto
Interfaz conversacional multi-turno
Contexto: documentos de convocatoria, datos del proyecto actual, historial de chat
Soporta acciones: el LLM puede sugerir actualizaciones directas a campos
Respuestas en streaming con formato markdown
Sugerencia de Rubrica
La IA sugiere criterios de evaluacion basados en la descripcion de la convocatoria
Propone nombres de criterios, descripciones, pesos y niveles de scoring
Nudges Inteligentes
Notificaciones proactivas basadas en analisis de scoring
Sugiere mejoras especificas cuando detecta campos debiles
Recomendacion de Convocatorias
Analiza el perfil del municipio y recomienda convocatorias compatibles
Matching basado en sector, presupuesto, requisitos
Configuracion del Proveedor LLM
Patron adaptador para cambio de proveedor (Anthropic/OpenAI)
Modelo configurable via variable de entorno (ANTHROPIC_MODEL)
Reintentos: 3 intentos con backoff exponencial (base 1s)
Rate limiting: 10 llamadas/minuto por usuario
4. Flujos de Usuario
4.1 Flujo de la Entidad
1. Login como entidad_admin
2. Crear nueva convocatoria
├─ Nombre, descripcion, presupuesto, fechas
├─ Definir plantilla MGA (etapas + campos)
├─ Configurar rubrica de evaluacion
├─ Subir documentos de referencia
├─ Definir requisitos documentales
└─ Asignar municipios
3. Publicar convocatoria (estado: abierta)
4. Monitorear progreso
├─ Heatmap de avance por municipio
├─ Publicar anuncios/FAQs
└─ Responder preguntas via chat/comentarios
5. Cerrar convocatoria
6. Evaluar submissions
├─ Evaluacion asistida por IA (pre-fill de scores)
├─ Ajuste manual por evaluador
├─ Solicitar revision si hay deficiencias
└─ Aprobar/rechazar proyectos
7. Generar reportes
├─ PDF individual por proyecto
├─ Excel consolidado
└─ Reporte ejecutivo IA
4.2 Flujo del Municipio
1. Login como municipio_user
2. Ver convocatorias asignadas en dashboard
3. Abrir wizard MGA para una convocatoria
4. Llenar formulario etapa por etapa
├─ Escribir manualmente
├─ Usar AI Assist por campo
├─ Generar borrador completo con auto-draft
├─ Mejorar textos existentes
├─ Consultar glosario MGA
├─ Leer guia de escritura por campo
├─ Revisar historial de cambios
├─ Insertar snippets reutilizables
└─ Chatear con copiloto IA
5. Pre-evaluar proyecto
├─ Ver score total y desglose
├─ Identificar campos debiles
├─ Usar wizard de mejora
└─ Simular impacto de mejoras (what-if)
6. Subir documentos requeridos
7. Completar checklist pre-envio
8. Revision interna (opcional)
9. Enviar proyecto (ceremonia de envio)
10. Seguimiento post-envio
├─ Pipeline de estado
├─ Atender solicitudes de revision
├─ Revisar comentarios del evaluador
└─ Ver resultados de evaluacion
5. API — Endpoints
5.1 Endpoints de Inteligencia Artificial
Metodo
Ruta
Descripcion
POST
/api/ai/assist
Asistencia IA por campo con RAG y streaming SSE
POST
/api/ai/chat
Chat copiloto conversacional con streaming
POST
/api/ai/auto-draft
Auto-borrador de etapa completa
POST
/api/ai/generate-project
Generacion completa de proyecto (todas las etapas)
POST
/api/ai/improve
Mejora de calidad de texto
POST
/api/ai/validate-step
Validacion de calidad de etapa
POST
/api/ai/compare-field
Comparacion de campo contra rubrica
POST
/api/ai/suggest-rubric
Sugerencia de rubrica con IA
POST
/api/ai/nudge
Notificaciones inteligentes de mejora
POST
/api/ai/benchmarks
Benchmarks contra otros proyectos
POST
/api/ai/match-convocatorias
Recomendacion de convocatorias
GET
/api/ai/health-check
Estado del servicio LLM
5.2 Endpoints de Evaluacion
Metodo
Ruta
Descripcion
POST
/api/evaluations/run
Evaluacion formal de submission
POST
/api/pre-evaluation/run
Pre-evaluacion en tiempo real
POST
/api/scoring/start
Iniciar cola de scoring batch
5.3 Endpoints de Reportes
Metodo
Ruta
Descripcion
GET
/api/reports/[projectId]/pdf
Exportar reporte PDF
GET
/api/reports/[projectId]/xlsx
Exportar reporte Excel
POST
/api/reports/[convocatoriaId]/ai-report
Reporte ejecutivo IA
GET
/api/submissions/[id]/pdf
PDF de submission MGA
5.4 Endpoints de Wizard y Submissions
Metodo
Ruta
Descripcion
POST
/api/wizard/save-step
Guardar paso del formulario (autosave)
POST
/api/wizard/submit
Enviar proyecto formalmente
POST
/api/submissions/submit
Enviar submission MGA
5.5 Endpoints de Documentos
Metodo
Ruta
Descripcion
POST
/api/documents/process
Procesar documento (texto + embeddings)
GET
/api/documents/list
Listar documentos de convocatoria
GET
/api/documents/requirements
Requisitos documentales
5.6 Endpoints de Comunicacion
Metodo
Ruta
Descripcion
GET/POST
/api/comments
Comentarios por campo
PATCH
/api/comments
Resolver/reabrir comentario
GET/POST
/api/internal-notes
Notas internas del equipo
PATCH
/api/internal-notes
Resolver nota interna
GET/POST
/api/messages
Chat directo entidad-municipio
GET/POST
/api/announcements
Anuncios de convocatoria
GET/POST
/api/revision-requests
Solicitudes de revision
5.7 Endpoints de Datos y Analiticas
Metodo
Ruta
Descripcion
GET
/api/notifications
Notificaciones del usuario
POST
/api/notifications/[id]/read
Marcar como leida
POST
/api/cron/generate-notifications
Cron de generacion automatica
GET
/api/analytics/heatmap
Heatmap de progreso
GET
/api/field-changes
Historial de cambios por campo
GET/POST
/api/templates
Plantillas de proyecto
GET/POST
/api/snippets
Snippets reutilizables
6. Componentes de UI
6.1 Componentes de IA
Componente
Archivo
Funcion
Chat Copiloto
ai/ai-chat.tsx
Interfaz de chat conversacional con IA
Boton AI Assist
ai/ai-assist-button.tsx
Trigger de asistencia por campo
Mejora de Texto
ai/ai-improve.tsx
Modal de mejora de texto
Auto-Draft
ai/auto-draft-button.tsx
Boton de auto-llenado de etapa
Evaluacion IA
ai/evaluate-with-ai.tsx
Interfaz de evaluacion con IA
Vista de Diff
ai/text-diff-view.tsx
Comparacion texto original vs sugerido
Comparacion de Proyectos
ai/project-comparison.tsx
Benchmarks con proyectos referentes
Wizard de Mejora
ai/improvement-wizard.tsx
Guia paso a paso para mejorar campos debiles
Simulador de Score
ai/score-simulator.tsx
Sliders what-if por criterio
Recomendaciones
ai/convocatoria-recommendations.tsx
Convocatorias sugeridas
Reporte de Aprendizaje
ai/learning-report.tsx
Analisis IA post-evaluacion
6.2 Componentes del Wizard
Componente
Archivo
Funcion
Cliente del Wizard
wizard-client.tsx
Orquestador principal (~1500 lineas)
Guia de Escritura
field-writing-guide.tsx
Panel con criterios de evaluacion y ejemplos
Glosario MGA
mga-glossary-tooltip.tsx
Tooltips contextuales de terminologia
Historial de Campo
field-history.tsx
Timeline de cambios con restauracion
Tour de Onboarding
onboarding-tour.tsx
Walkthrough de primer uso
Snippets
snippet-library.tsx
Libreria de texto reutilizable
6.3 Componentes de Proceso
Componente
Archivo
Funcion
Checklist Pre-Envio
pre-submit-checklist.tsx
Validaciones antes de enviar
Ceremonia de Envio
submission-ceremony.tsx
Pantalla de confirmacion y envio
Indicador de Riesgo
deadline-risk-indicator.tsx
Semaforo de deadline
Milestones de Progreso
progress-milestones.tsx
Celebraciones en hitos
Tracker Post-Envio
post-submission-tracker.tsx
Pipeline de estado post-envio
Estadisticas IA
ai-usage-stats.tsx
Metricas de uso de herramientas IA
Historial de Score
score-history-chart.tsx
Grafico de trayectoria de scores
6.4 Componentes de Comunicacion
Componente
Archivo
Funcion
Panel de Revision
revision-request-panel.tsx
Solicitudes de revision activas
Notas Internas
internal-notes.tsx
Notas del equipo por campo
Revision Interna
internal-review.tsx
Aprobacion interna pre-envio
Chat con Evaluador
evaluator-chat.tsx
Chat bidireccional
Tablero de Anuncios
announcement-board.tsx
Anuncios de convocatoria
Deep Dive Evaluacion
evaluation-deep-dive.tsx
Analisis detallado por criterio
6.5 Componentes de Documentos
Componente
Archivo
Funcion
Carga de Documentos
document-upload.tsx
Drag & drop con validacion
Checklist de Docs
document-checklist.tsx
Requisitos documentales con slots
Selector de Plantillas
template-selector.tsx
Elegir plantilla existente
7. Paginas de la Aplicacion
7.1 Paginas Publicas
Ruta
Descripcion
/
Landing page con features, como funciona, piloto, entidades aliadas
/login
Inicio de sesion (email + password)
/casos
Casos de uso (estatica)
/contacto
Formulario de contacto
/implementacion
Guia de implementacion (estatica)
7.2 Dashboard Compartido
Ruta
Descripcion
/dashboard
Redirige segun rol del usuario
/dashboard/ayuda
Centro de ayuda
/dashboard/notificaciones
Centro de notificaciones
/dashboard/organizacion
Perfil de la organizacion
/dashboard/onboarding
Onboarding de primer uso
/dashboard/convocatorias
Lista de convocatorias
/dashboard/convocatorias/explorar
Explorar convocatorias abiertas
7.3 Dashboard de Entidad
Ruta
Descripcion
/dashboard/entidad
Panel principal con estadisticas
/dashboard/entidad/convocatorias/nueva
Crear nueva convocatoria
/dashboard/entidad/convocatorias/[id]
Detalle de convocatoria
/dashboard/entidad/convocatorias/[id]/plantilla
Editor de plantilla MGA
/dashboard/entidad/convocatorias/[id]/rubricas
Editor de rubricas
/dashboard/entidad/convocatorias/[id]/documentos
Gestion de documentos
/dashboard/entidad/convocatorias/[id]/municipios
Municipios asignados
/dashboard/entidad/convocatorias/[id]/monitoreo
Heatmap de progreso
/dashboard/entidad/convocatorias/[id]/informe
Reporte ejecutivo IA
/dashboard/entidad/analytics
Analiticas globales
/dashboard/entidad/analytics/ai
Analiticas de uso de IA
7.4 Dashboard de Municipio
Ruta
Descripcion
/dashboard/municipio
Panel con convocatorias asignadas
/dashboard/municipio/convocatorias/[id]
Detalle de convocatoria
/dashboard/municipio/convocatorias/[id]/wizard
Wizard MGA
/dashboard/municipio/analiticas
Dashboard de desempeno
/dashboard/municipio/portafolio
Portafolio de todos los proyectos
/dashboard/municipio/calendario
Calendario unificado de fechas
/dashboard/municipio/benchmarks
Comparacion con otros municipios
7.5 Evaluaciones y Reportes
Ruta
Descripcion
/dashboard/evaluaciones
Lista de evaluaciones
/dashboard/evaluaciones/[projectId]
Detalle de evaluacion
/dashboard/reportes
Centro de reportes
7.6 Proyectos (Esquema V2)
Ruta
Descripcion
/dashboard/proyectos
Lista de proyectos
/dashboard/proyectos/[id]
Detalle de proyecto
/dashboard/proyectos/[id]/wizard
Wizard de formulacion v2
/dashboard/proyectos/aplicar/[convocatoriaId]
Aplicar a convocatoria
8. Sistema de Notificaciones
Tipos de Notificacion
Tipo
Trigger
Mensaje
deadline
7, 3, 1 dias antes del cierre
"La convocatoria X cierra en N dias"
improvement
Post pre-evaluacion con campos < 50%
"Tu campo X puede mejorar. Score actual: N%"
inactive
Sin ediciones por 7+ dias
"Tu proyecto X lleva N dias sin cambios"
comment
Evaluador comenta en campo
"Nuevo comentario en campo X"
info
Anuncio de convocatoria
Contenido del anuncio
Generacion Automatica (Cron)
Ejecuta cada hora via Vercel Cron
Autenticado con CRON_SECRET
Evita duplicados verificando notificaciones existentes del mismo tipo
Entrega
Icono de campana en sidebar con badge de no leidas
Centro de notificaciones con lista paginada
Email para eventos criticos (submission, deadline)
9. Seguridad
Autenticacion
Email + password via Supabase Auth
Sesiones basadas en cookies con refresh automatico via middleware
No se usan magic links ni OAuth (configurable para futuro)
Autorizacion (Multi-Tenant)
3 niveles de acceso: platform_admin, entidad_admin, municipio_user
RLS (Row Level Security) en todas las tablas de PostgreSQL
Funciones SECURITY DEFINER para verificacion de permisos
Tenant isolation: cada entidad solo ve sus propios datos
Proteccion de API
Verificacion de sesion en todos los endpoints
Verificacion de rol para operaciones sensibles
Rate limiting en endpoints de IA (10/minuto por usuario)
CORS configurado via Next.js
Validacion de input con Zod schemas
Datos Sensibles
Claves API almacenadas en variables de entorno (no en codigo)
Supabase Service Role Key solo usado server-side
Prompts y respuestas IA registrados en audit_logs para trazabilidad
10. Despliegue e Infraestructura
Variables de Entorno Requeridas
# SupabaseNEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.coNEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...SUPABASE_SERVICE_ROLE_KEY=eyJ...# AplicacionNEXT_PUBLIC_APP_URL=https://publitec.vercel.app# IAANTHROPIC_API_KEY=sk-ant-...ANTHROPIC_MODEL=claude-sonnet-4-6# opcional, default# Embeddings (opcional — para RAG)VOYAGE_API_KEY=pa-...# Email (opcional — degradacion elegante si no esta)RESEND_API_KEY=re_...CONTACT_NOTIFY_EMAIL=admin@publitec.co# Cron (opcional)CRON_SECRET=secret_...
Despliegue en Vercel
Conectar repositorio GitHub a Vercel
Configurar variables de entorno en Vercel Dashboard
Deploy automatico en push a branch main
Serverless functions para API routes
Edge runtime para middleware de sesion
Migraciones de Base de Datos
Las 25 migraciones se ejecutan en orden secuencial:
Numero de llamadas de asistencia IA por usuario/dia
Tasa de aceptacion de sugerencias IA
Comparacion de scores en campos asistidos vs manuales
Tiempo promedio de generacion (streaming)
Cache hit rate del prompt
Metricas de Proceso
Tiempo promedio para completar un proyecto
Progreso promedio al momento de pre-evaluacion
Score promedio de pre-evaluacion vs evaluacion formal
Numero de rondas de revision promedio
Tasa de submissions que pasan el checklist al primer intento
Metricas de Resultado
Tasa de aprobacion por municipio/convocatoria
Score promedio por criterio de rubrica
Mejora de score entre rondas de revision
Tiempo entre submission y decision final
12. Diferenciadores Clave
IA integrada en cada paso: No es un chatbot aparte; la IA esta embebida en cada campo del formulario con contexto especifico de la convocatoria.
RAG con documentos de convocatoria: Las sugerencias de la IA se basan en los documentos reales de la convocatoria (terminos de referencia, guias tecnicas), no en conocimiento generico.
Pre-evaluacion en tiempo real: Los municipios pueden ver su score estimado antes de enviar, con desglose por criterio y recomendaciones de mejora.
Ciclo de retroalimentacion cerrado: Desde la formulacion hasta la evaluacion, cada dato fluye: la rubrica define los criterios, la IA evalua contra ellos, el municipio mejora basado en la retroalimentacion, y el score se actualiza.
Multi-tenant con RLS: Aislamiento completo de datos entre entidades y municipios a nivel de base de datos, no de aplicacion.
Streaming nativo: Todas las respuestas IA se entregan en streaming (SSE), proporcionando feedback inmediato al usuario.
Generacion completa de proyecto: Un click genera un proyecto MGA completo con coherencia entre etapas, algo que normalmente toma semanas de trabajo manual.
Plataforma bilingual (ES): Toda la interfaz, prompts de IA, y documentacion estan en espanol, adaptados al contexto colombiano y la terminologia MGA.