Propuesta Tecnica para el Ayuntamiento de Torremolinos
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.
La plataforma se encuentra en funcionamiento en produccion y puede probarse en tiempo real:
https://torremolinos.internalia.ai
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.
| 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 |
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.
text-multilingual-embedding-002 de Vertex AI, optimizado para espanol y multilingue.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:
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.
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.
El proceso opera de la siguiente manera:
| 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 |
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.
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. |
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. |
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.
aria-label, aria-live y aria-describedby para lectores de pantalla.| 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. |
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) |
La plataforma se encuentra en funcionamiento con contenido real del municipio de Torremolinos. Los siguientes enlaces permiten acceder a una demostracion completa del sistema: