Documento Confidencial

Asistente Virtual Inteligente

Propuesta Tecnica para el Ayuntamiento de Torremolinos

Fecha: Marzo 2026 Version: 1.0 Ref: TC-TM-2026-01

1. Resumen Ejecutivo

Internal·IA presenta su plataforma de Asistente Virtual Inteligente, una solucion integral de atencion ciudadana basada en inteligencia artificial generativa, disenada especificamente para administraciones publicas locales.

La plataforma permite al Ayuntamiento de Torremolinos ofrecer un canal de informacion inmediato, preciso y disponible las 24 horas del dia, los 365 dias del ano, a traves de tres canales simultaneos: web (widget embebible), WhatsApp Business y voz (telefonia IP).

A diferencia de los chatbots convencionales basados en arboles de decision, el asistente utiliza tecnologia RAG (Retrieval Augmented Generation), que combina busqueda semantica en una base de conocimiento verificada con generacion de respuestas mediante modelos de lenguaje de ultima generacion. Esto garantiza que las respuestas estan siempre fundamentadas en contenido municipal real, eliminando el riesgo de alucinaciones o informacion inventada.

Diferenciadores clave
  • Cero alucinaciones: las respuestas se generan exclusivamente a partir de contenido municipal verificado y aprobado.
  • Actualizacion instantanea: los cambios de contenido se reflejan en el asistente en segundos, sin interrupciones de servicio.
  • Multicanal real: web, WhatsApp Business API (oficial de Meta) y voz, con la misma base de conocimiento.
  • Panel de gestion autonomo: el Ayuntamiento gestiona contenido, usuarios, metricas y calidad sin depender del proveedor.
  • Infraestructura europea: datos alojados integramente en Google Cloud Platform, region de Madrid (europe-southwest1). Procesamiento IA en la Union Europea.
  • Cumplimiento normativo: arquitectura alineada con el ENS (Nivel Medio), RGPD, LOPDGDD y WCAG 2.1 AA.

La plataforma se encuentra en funcionamiento en produccion y puede probarse en tiempo real:

https://torremolinos.internalia.ai

2. Arquitectura Tecnica

La arquitectura del sistema sigue un modelo de microservicios con separacion clara de responsabilidades: panel de gestion, motor de IA y canales de comunicacion. Todos los componentes se comunican mediante API REST sobre HTTPS y estan orquestados bajo un proxy inverso con terminacion TLS automatica.

Diagrama de Arquitectura del Sistema
Canales de Entrada
Widget Web
Vanilla JS, embebible
WhatsApp Business
Meta Cloud API
Canal de Voz
Asterisk + AudioSocket
Capa de Red
Caddy Reverse Proxy
TLS 1.3 automatico · HSTS · Rate Limiting · Let's Encrypt
Capa de Aplicacion
Panel de Gestion
FastAPI · Auth JWT · RBAC 5 roles
Motor RAG
FastAPI · Chunking · Busqueda hibrida
Webhook Router
PHP · Enrutamiento multicanal
Capa de Datos e IA
ChromaDB
Base de datos vectorial
Firestore
Usuarios, auditoria, metadata
Vertex AI
Embeddings + Gemini 2.0 Flash
Infraestructura: Google Cloud Platform — Region europe-southwest1 (Madrid)

Componentes principales

Componente Funcion Tecnologia
Panel de Gestion Administracion de contenido, usuarios, metricas y calidad del asistente Python 3.11 + FastAPI
Motor RAG Ingestion de contenido, chunking semantico, busqueda vectorial, generacion de respuestas Python 3.11 + FastAPI + ChromaDB
Base vectorial Almacenamiento y busqueda de fragmentos de contenido mediante embeddings ChromaDB (distancia coseno, HNSW)
Base de datos Usuarios, roles, sesiones, logs de auditoria, historial de versiones, feedback Google Cloud Firestore
Modelo de embeddings Vectorizacion de texto en 768 dimensiones, multilingue Vertex AI text-multilingual-embedding-002
Modelo de lenguaje Generacion de respuestas contextualizadas, estructuracion de contenido Gemini 2.0 Flash (Vertex AI)
Proxy inverso Terminacion TLS, enrutamiento, HSTS, certificados automaticos Caddy
Canales Web (widget JS), WhatsApp (Meta Cloud API), Voz (Asterisk + AudioSocket) Vanilla JS / WABA / Asterisk PBX

3. Motor de IA — RAG (Retrieval Augmented Generation)

El motor de inteligencia artificial de la plataforma utiliza la arquitectura RAG (Retrieval Augmented Generation), el estandar de la industria para asistentes conversacionales que requieren precision y trazabilidad. A diferencia de un LLM abierto que genera respuestas de su conocimiento general, RAG garantiza que cada respuesta esta fundamentada en contenido previamente verificado por el Ayuntamiento.

Flujo de procesamiento de una consulta

Pregunta del ciudadano
Embedding (vectorizacion)
Busqueda vectorial en ChromaDB
Inyeccion de contexto
Generacion con Gemini 2.0 Flash
Respuesta al ciudadano
  1. Recepcion: la pregunta del ciudadano llega por cualquiera de los canales (web, WhatsApp o voz).
  2. Vectorizacion: el texto se convierte en un vector numerico de 768 dimensiones mediante el modelo text-multilingual-embedding-002 de Vertex AI, optimizado para espanol y multilingue.
  3. Busqueda semantica: el vector se compara contra todos los fragmentos de contenido municipal almacenados en ChromaDB utilizando distancia coseno. Se recuperan los fragmentos mas relevantes, opcionalmente filtrados por categoria.
  4. Inyeccion de contexto: los fragmentos recuperados se inyectan como contexto en el prompt del modelo de lenguaje, junto con las instrucciones del asistente y el historial de la conversacion.
  5. Generacion: Gemini 2.0 Flash genera una respuesta natural y conversacional, pero estrictamente limitada al contexto proporcionado. Si la informacion no esta en la base de conocimiento, el asistente lo indica explicitamente.
Principio de no alucinacion El asistente esta configurado para responder exclusivamente con informacion presente en la base de conocimiento municipal. Cuando no dispone de informacion suficiente, informa al ciudadano y le sugiere canales alternativos de atencion (telefono, sede electronica, atencion presencial).

Estrategia de fragmentacion semantica

El contenido municipal se fragmenta en unidades semanticas (chunks) que preservan el contexto y la estructura del documento original:

Parametro Valor Descripcion
Tamano maximo de chunk 2.000 caracteres Maximo por fragmento, optimizado para el contexto del modelo
Tamano minimo de chunk 40 caracteres Descarta fragmentos demasiado cortos para ser informativos
Metodo de division Semantico por encabezados Respeta la estructura H1-H6 del documento. Cada seccion es un chunk independiente con su trail de encabezados
Fallback Division por parrafos Si no hay encabezados, se divide por parrafos respetando el limite de 2.000 caracteres
Metadatos por chunk 7 campos URL de origen, titulo, categoria, seccion, indice, total de chunks, fecha de ingestion

Cada fragmento incluye un trail de encabezados (por ejemplo: "Ayuntamiento de Torremolinos > Tramites > Empadronamiento") que proporciona contexto jerarquico al modelo de lenguaje, mejorando significativamente la relevancia de las respuestas.

El sistema implementa un modelo de busqueda hibrida que combina dos estrategias complementarias:

4. Panel de Gestion

El panel de gestion permite al Ayuntamiento administrar de forma autonoma todos los aspectos del asistente virtual: contenido, usuarios, calidad, metricas y canales de comunicacion. Esta disenado para ser utilizado por personal no tecnico, con una interfaz intuitiva y flujos de trabajo adaptados a la operativa municipal.

Gestion de fuentes CRUD con flujo editorial
Creacion, edicion, eliminacion y versionado completo de contenido. Flujo de trabajo editor → revisor → publicador con trazabilidad de cada cambio (usuario, fecha, IP, motivo). Deteccion automatica de conflictos con contenido existente antes de publicar.
Asistente de redaccion con IA
Reformulacion inteligente del contenido aportado por el equipo editorial. La IA estructura, profesionaliza y categoriza el texto, pero nunca inventa informacion: trabaja exclusivamente sobre el contenido proporcionado por el editor o las fuentes existentes del RAG.
Modo evento (ON/OFF)
Activacion de contextos temporales con fechas de inicio y fin, FAQs especificas del evento, mensajes de seguridad y contingencias. Ideal para fiestas locales, jornadas deportivas, o situaciones de emergencia. El asistente prioriza automaticamente la informacion del evento activo.
Simulador de consultas en tiempo real
Herramienta integrada que permite probar el asistente directamente desde el panel, verificando las respuestas antes de abrir el servicio al publico. Muestra las fuentes consultadas, la puntuacion de relevancia y el contexto inyectado al modelo.
Historial de conversaciones anonimizado
Registro completo de interacciones agrupadas por sesion, con filtros por ciudad, canal, fecha y estado. Las conversaciones se almacenan sin datos personales identificables, permitiendo analisis de calidad sin comprometer la privacidad de los ciudadanos.
Dashboards y metricas avanzadas
Paneles de seguimiento con metricas por canal (web, WhatsApp, voz), tasas de resolucion, temas mas consultados, tiempos de respuesta (p50/p95), evolucion temporal y exportacion a CSV. Permite al Ayuntamiento medir el impacto real del servicio y detectar tendencias.
5 roles diferenciados con control de acceso
Sistema RBAC (Role-Based Access Control) con cinco perfiles: Editor (crea y propone contenido), Revisor (valida propuestas), Publicador (publica al asistente), Analista (consulta metricas y conversaciones) y Administrador (gestion completa de usuarios y configuracion). Autenticacion con JWT y soporte MFA (TOTP).
Canal WhatsApp: estado y gestion WABA
Monitorizacion del estado de conexion, quality rating de Meta, gestion de plantillas de mensajes y estadisticas del canal. Integrado con la API oficial de WhatsApp Business (Meta Cloud API), sin dependencias de librerias no oficiales.
Reglas deterministas para temas criticos
Configuracion de respuestas fijas para tematicas sensibles (emergencias, numeros de telefono criticos, horarios fijos) que no pasan por el modelo de lenguaje. Incluye escalado configurable a agentes humanos cuando el asistente detecta que la consulta requiere atencion personalizada.
Deteccion automatica de gaps y cola de derivaciones
El sistema identifica automaticamente preguntas que el asistente no puede responder o responde de forma insatisfactoria, agrupandolas por tematica y frecuencia. Los administradores disponen de una cola priorizada de contenido pendiente, con analisis asistido por IA que sugiere si cada caso requiere correccion o puede descartarse. Soporte de reindexacion en caliente para actualizaciones inmediatas.

5. Actualizacion en Caliente

Uno de los requisitos fundamentales de un asistente virtual municipal es la capacidad de actualizar la informacion de forma inmediata. La plataforma implementa un mecanismo de actualizacion en caliente que permite modificar el contenido del asistente sin ninguna interrupcion del servicio.

Flujo de actualizacion

Editor modifica contenido
Re-chunking del contenido modificado
Upsert en ChromaDB
Asistente usa la nueva version

El proceso opera de la siguiente manera:

  1. Edicion: el editor modifica el contenido a traves del panel de gestion. El sistema almacena la version anterior completa (contenido, titulo, categoria, autor, fecha) en el historial de versiones.
  2. Re-chunking selectivo: solo se re-fragmenta el contenido modificado. Los chunks anteriores de esa fuente se eliminan de ChromaDB y se reemplazan por los nuevos fragmentos. El resto de la base de conocimiento permanece intacto.
  3. Upsert atomico: la operacion de insercion/actualizacion en la base vectorial es atomica. Primero se publica la nueva version; solo despues se elimina la anterior. Si la publicacion falla, la version original permanece intacta.
  4. Disponibilidad inmediata: tras el upsert, la siguiente consulta del ciudadano ya utilizara la informacion actualizada. No hay cache, reinicio ni propagacion diferida.
Capacidades de versionado
  • Historial completo de todas las versiones de cada fuente con trazabilidad (usuario, IP, fecha, motivo del cambio).
  • Rollback con un clic: revertir cualquier cambio restaura automaticamente la version anterior en el RAG.
  • Comparacion de versiones para auditar cambios.
  • Las eliminaciones tambien son reversibles: el contenido completo se preserva en el historial para su posible restauracion.
Caracteristica Descripcion
Tiempo de actualizacion Segundos (re-chunking + embedding + upsert)
Interrupcion del servicio Ninguna (zero downtime)
Ambito de re-indexacion Solo la fuente modificada, no toda la base
Rollback Completo, con restauracion automatica del contenido anterior
Trazabilidad Usuario, IP, timestamp, motivo, contenido anterior y posterior

6. Cumplimiento Normativo

La plataforma ha sido disenada desde su concepcion con los requisitos del marco regulatorio espanol y europeo aplicable a los sistemas de informacion de las administraciones publicas.

6.1. Esquema Nacional de Seguridad (ENS) — Nivel Medio

La arquitectura del sistema esta alineada con las medidas de seguridad exigidas por el Real Decreto 311/2022 (ENS) para sistemas de nivel medio. A continuacion se detallan las medidas implementadas por familia de controles:

Control ENS Familia Medidas implementadas
[org] Marco organizativo Politica de seguridad documentada. Normativa de uso del sistema. Procedimientos operativos para gestion de contenido, usuarios y cambios. Roles y responsabilidades definidos (5 roles RBAC).
[op.pl] Planificacion Analisis de riesgos de la plataforma. Arquitectura de seguridad documentada con separacion de capas (red, aplicacion, datos). Dimensionamiento de infraestructura en GCP con escalado.
[op.acc] Control de acceso 5 roles diferenciados con principio de minimo privilegio (editor, revisor, publicador, analista, administrador). Autenticacion mediante JWT con expiracion configurable. Soporte MFA con TOTP. Rate limiting por IP (30 peticiones/minuto).
[op.exp] Explotacion Logs de auditoria completos con usuario, IP, timestamp y detalle de cada accion. Gestion de cambios versionada con trazabilidad completa. Historial de versiones con capacidad de rollback.
[op.ext] Servicios externos Infraestructura en Google Cloud Platform, certificado ENS Alto, C5 (BSI Alemania), ISO 27001, ISO 27017, ISO 27018, SOC 1/2/3. Proveedores con sede y operaciones en la Union Europea.
[op.mon] Monitorizacion Health checks automaticos de todos los servicios. Alertas por umbrales configurables. Monitorizacion del estado de los canales (web, WhatsApp, voz). Logs centralizados.
[mp.if] Proteccion de instalaciones Infraestructura alojada en el datacenter de GCP en Madrid (europe-southwest1), con certificaciones de seguridad fisica de nivel Tier III+. Sin infraestructura on-premise.
[mp.per] Gestion del personal Roles y responsabilidades documentados para cada perfil de acceso. Segregacion de funciones: quien crea contenido no es quien lo publica directamente.
[mp.eq] Proteccion de equipos Comunicaciones cifradas TLS 1.3 de extremo a extremo. Certificados Let's Encrypt con renovacion automatica gestionada por Caddy. No se almacenan credenciales en texto plano.
[mp.com] Proteccion de comunicaciones HTTPS obligatorio en todos los endpoints. HSTS habilitado. Caddy como terminador TLS con configuracion segura por defecto (TLS 1.2 minimo, cipher suites modernas).
[mp.info] Proteccion de la informacion Datos en transito cifrados mediante TLS 1.3. Datos en reposo en Firestore cifrados con AES-256 de forma nativa (cifrado por defecto de Google Cloud). Base vectorial (ChromaDB) en volumen persistente cifrado.
[mp.s] Proteccion de servicios Rate limiting configurable por IP y endpoint. Validacion estricta de entrada en todas las APIs (Pydantic schemas). Proteccion DDoS a nivel de infraestructura (GCP). Separacion de endpoints publicos y autenticados.

6.2. RGPD / LOPDGDD

La plataforma ha sido disenada siguiendo el principio de privacidad por diseno y por defecto (art. 25 RGPD). El tratamiento de datos personales se minimiza al maximo, dado que el asistente virtual no requiere identificacion del ciudadano para funcionar.

Principio / Requisito Aplicacion en el sistema
Base legal del tratamiento Interes legitimo y mision en interes publico (art. 6.1.e RGPD). El asistente presta un servicio de informacion publica, funcion inherente a la administracion local.
Minimizacion de datos El sistema no solicita ni almacena datos personales del ciudadano. Las conversaciones se registran con identificadores de sesion anonimos, sin vincular a personas fisicas.
Limitacion del almacenamiento Las sesiones de conversacion tienen TTL (Time To Live) configurable. Los datos de conversacion no contienen identificadores personales. No se almacenan numeros de telefono, nombres ni direcciones IP de los ciudadanos.
Derechos ARCO-POL Al no tratar datos personales identificables de los ciudadanos, los derechos de acceso, rectificacion, cancelacion, oposicion, portabilidad y limitacion no son directamente aplicables al uso del chat. Para los datos de los usuarios del panel (personal municipal), se implementan los mecanismos correspondientes.
DPD (Delegado de Proteccion de Datos) Designacion recomendada si el sistema se amplia a tramites con identificacion ciudadana o se integra con la sede electronica.
EIPD (Evaluacion de Impacto) No es preceptiva al no tratar datos sensibles (art. 35 RGPD). Se recomienda su realizacion si el asistente se integra con la sede electronica o se amplia a tramitacion con datos identificativos.
Transferencias internacionales No se realizan. Toda la infraestructura reside en GCP Madrid (europe-southwest1). El procesamiento de Vertex AI se ejecuta en la Union Europea (europe-west4, Paises Bajos). No hay transferencia de datos a terceros paises.
Encargado del tratamiento Google Cloud actua como encargado del tratamiento bajo su DPA estandar (Data Processing Addendum), que incluye Clausulas Contractuales Tipo (SCC) y compromisos de conformidad con el RGPD.
Registro de actividades Implementado mediante el sistema de logs de auditoria, que registra todas las operaciones sobre el contenido y la configuracion del sistema (usuario, accion, fecha, IP, detalle del cambio).
Seguridad del tratamiento (art. 32) Cifrado de datos en transito (TLS 1.3) y en reposo (AES-256). Control de acceso basado en roles. Pseudonimizacion de conversaciones mediante identificadores de sesion no vinculables. Capacidad de restauracion y disponibilidad.

7. Accesibilidad — WCAG 2.1 AA

La plataforma cumple con los criterios de conformidad de nivel AA de las Web Content Accessibility Guidelines (WCAG) 2.1, en linea con el Real Decreto 1112/2018 sobre accesibilidad de los sitios web y aplicaciones para dispositivos moviles del sector publico.

Widget web (interfaz ciudadana)

Panel de gestion (interfaz administrativa)

8. Stack Tecnologico

Tecnologia Version Proposito
Python 3.11 Lenguaje principal del backend. Tipado estatico, rendimiento y ecosistema IA.
FastAPI 0.110+ Framework web asincrono de alto rendimiento. Validacion automatica con Pydantic. Documentacion OpenAPI integrada.
ChromaDB 0.4+ Base de datos vectorial embebida. Almacenamiento persistente, busqueda por distancia coseno con indice HNSW.
Google Cloud Firestore Base de datos documental NoSQL. Almacena usuarios, roles, logs de auditoria, historial de versiones, feedback y sesiones.
Vertex AI Embeddings text-multilingual-embedding-002 Modelo de embeddings multilingue de 768 dimensiones. Optimizado para espanol. Batch de hasta 250 textos.
Gemini 2.0 Flash Vertex AI Modelo de lenguaje para generacion de respuestas, estructuracion de contenido y analisis de calidad.
Caddy 2.x Proxy inverso con TLS automatico (Let's Encrypt), HSTS, HTTP/2 y HTTP/3. Configuracion declarativa.
Vanilla JavaScript ES2020+ Frontend del widget y del panel. Sin frameworks ni dependencias externas. Rendimiento maximo y carga instantanea.
WhatsApp Business API Meta Cloud API Canal de mensajeria oficial. Integracion con la API de Meta para envio y recepcion de mensajes, plantillas y estados.
Asterisk PBX 20+ Central telefonica IP para el canal de voz. Conexion con el motor RAG mediante AudioSocket para transcripcion y respuesta en tiempo real.
systemd Gestor de servicios del sistema operativo. Auto-restart, logging integrado, dependencias entre servicios.
Playwright 1.x Renderizado de paginas JavaScript para ingestion de contenido desde sedes electronicas (ASP.NET, SPAs).
BeautifulSoup / PyMuPDF Extraccion de contenido de paginas HTML y documentos PDF para alimentar la base de conocimiento.

9. SLA y Disponibilidad

El servicio esta disenado para operar de forma continua con alta disponibilidad, acorde a las expectativas de un servicio publico de atencion ciudadana.

Parametro Valor
Horario de operacion 24 horas / 7 dias / 365 dias al ano
Gestion de procesos systemd con reinicio automatico ante fallos (Restart=always)
Monitorizacion Health checks automaticos de todos los servicios con alertas por umbrales configurables
Tiempo medio de respuesta Inferior a 3 segundos (incluye embedding + busqueda vectorial + generacion LLM)
Usuarios concurrentes Sin limite definido. Arquitectura stateless que escala horizontalmente. Rate limiting por IP para proteccion ante abuso.
Actualizaciones En caliente, sin interrupcion del servicio (zero downtime deployment)
Copias de seguridad Firestore con backups automaticos diarios (retencion configurable). Historial de versiones del contenido RAG con capacidad de restauracion completa.
Infraestructura Google Cloud Platform con SLA del 99.95% (Compute Engine) y 99.999% (Firestore)

10. URLs de Demostracion

La plataforma se encuentra en funcionamiento con contenido real del municipio de Torremolinos. Los siguientes enlaces permiten acceder a una demostracion completa del sistema:

Accesos de demostracion

Landing + Webchat https://torremolinos.internalia.ai
Panel de Gestion https://torremolinos.internalia.ai/panel
WhatsApp +34 951 448 370 (enviar /torremolinos)
Documento Tecnico https://torremolinos.internalia.ai/doc
Nota sobre la demostracion La demostracion utiliza contenido real extraido de las webs oficiales del Ayuntamiento de Torremolinos (torremolinos.es, turismotorremolinos.es, torremolinoscultura.es, deportes.torremolinos.es y la sede electronica). El asistente esta configurado con 13 categorias tematicas que cubren hoteles, restauracion, tramites, transporte, puntos de interes, contingencias, cultura, accesibilidad, servicios publicos, PRIDE, deportes, sede electronica e informacion general.