Este documento detalla, conforme al Artículo 30 del GDPR (Reglamento UE 2016/679) y a las normativas equivalentes en otras jurisdicciones, todas las actividades de tratamiento de datos personales realizadas por LONAVIA. Su finalidad es la transparencia total con el usuario y la facilidad de auditoría por autoridades de protección de datos.
| Campo | Valor |
|---|---|
| Denominación del Servicio | LONAVIA — Tu guía de viaje IA |
| Tipo | Aplicación web progresiva (PWA) |
| Responsable del tratamiento | Equipo de desarrollo de LONAVIA |
| Dominio principal | lonavia.app |
| Email de contacto (privacidad) | hola@lonavia.app |
| Delegado de Protección de Datos (DPO) | No designado (no obligatorio por volumen actual de tratamiento) |
| Representante en la UE | No designado (responsable establecido fuera de la UE — pendiente de evaluación según Art. 27 GDPR cuando se supere umbral) |
| Categoría | Datos específicos | Origen | ¿Sensibles? (Art. 9 GDPR) |
|---|---|---|---|
| Identificativos | Nombre, email, foto de perfil, ID interno (UUID) | Google OAuth | No |
| Preferencias | Idioma, modo oscuro/claro, voz preferida, mute | Configuración usuario | No |
| Perfil de viaje | Nacionalidad, residencia, permisos/visas que posee, estilo de viaje, rango de presupuesto, compañía de viaje (solo / en pareja / con amigos) | Configuración del usuario, o inferido de lo que menciona en el chat (ej. «vivo en España, tengo NIE»). Cada campo es editable y queda fijado a lo que indique el usuario. | No. La residencia y los permisos/visas reflejan situación migratoria: no son categoría especial del Art. 9, pero se usan únicamente para responder sobre entrada y estadía. |
| Geolocalización | Coordenadas GPS (lat/lng), país detectado, ciudad detectada | Web Geolocation API (con permiso explícito) | No (a menos que revele situación íntima) |
| Comunicaciones | Mensajes intercambiados con el modelo IA, historial de chat | Interacción usuario | No (salvo que el usuario revele datos sensibles voluntariamente) |
| Conducta | Ciudades visitadas, insignias desbloqueadas, fechas de visita, número de sesiones | Geolocalización + interacciones | No |
| Financieros (limitados) | Montos numéricos de gastos compartidos, divisas, descripciones de gastos | Entrada manual o voz del usuario | No (NO incluye datos bancarios reales) |
| Contenido generado | Tips de viaje agregados por el usuario, notas de voz transcritas | Entrada manual o voz | No (a menos que el usuario lo revele) |
| Técnicos | Tipo de dispositivo (PWA en navegador), user agent, sesión Supabase Auth | Automático | No |
Datos sensibles especiales: LONAVIA NO solicita ni procesa intencionalmente datos de las categorías especiales del Art. 9 GDPR (salud, religión, orientación sexual, opiniones políticas, biometría, datos genéticos). Si un usuario revela voluntariamente este tipo de información en un mensaje al chat, el dato se trata conforme a estos términos y la Política de Privacidad pero NO se procesa de forma diferenciada.
| Finalidad | Permitir el inicio de sesión y mantener una sesión persistente entre dispositivos. |
|---|---|
| Datos tratados | Email, nombre, foto de perfil de Google, UUID generado por Supabase Auth. |
| Base legal | Art. 6(1)(b) GDPR — ejecución de un contrato del que el interesado es parte. |
| Conservación | Mientras la cuenta esté activa. Máximo 30 días tras solicitar la eliminación. |
| Categorías de destinatarios | Google (OAuth), Supabase (gestor de identidad y base de datos). |
| Finalidad | Generar respuestas conversacionales sobre destinos, transporte, comida, cultura, etc. |
|---|---|
| Datos tratados | Texto del mensaje del usuario, ubicación actual (si activa), país detectado, historial reciente de la conversación, contexto de POIs cercanos, y el perfil de viaje cuando está cargado: nacionalidad, residencia, permisos/visas, estilo de viaje, rango de presupuesto y compañía de viaje. |
| Base legal | Art. 6(1)(b) GDPR — ejecución del Servicio. |
| Conservación | Mensajes guardados localmente en el dispositivo del usuario (localStorage) hasta que el usuario los borre. NO se almacenan en nuestros servidores salvo si el usuario lo solicita expresamente (función futura de sincronización de historial). |
| Categorías de destinatarios | Groq Inc. (proveedor de inferencia de LLM: openai/gpt-oss-120b para el chat, openai/gpt-oss-20b para clasificación e itinerarios, llama-3.3-70b-versatile como alternativa). |
| Riesgos identificados | El proveedor del modelo puede usar los inputs para mejorar sus servicios. Verificar política de Groq vigente: groq.com/privacy-policy. |
| Finalidad | Determinar la ciudad y el país en el que se encuentra el usuario para personalizar respuestas y registrar viajes. |
|---|---|
| Datos tratados | Coordenadas latitud/longitud, precisión, código de país ISO. |
| Base legal | Art. 6(1)(a) GDPR — consentimiento explícito del usuario al permitir el acceso al GPS. |
| Conservación | Las coordenadas crudas NO se persisten más allá de la sesión. Solo se persiste el resultado (nombre de ciudad + fecha) en la tabla cities_visited de Supabase. |
| Categorías de destinatarios | OpenStreetMap / Nominatim (geocodificación inversa), Wikipedia API (búsqueda de POIs cercanos), Open-Meteo (clima). |
| Forma de revocar consentimiento | Configuración del navegador → Permisos del sitio → Ubicación → Denegar. |
| Finalidad | Convertir las respuestas de LONAVIA en voz hablada para experiencia hands-free. |
|---|---|
| Datos tratados | Texto a sintetizar (oraciones de respuesta de LONAVIA). |
| Base legal | Art. 6(1)(b) GDPR — ejecución del Servicio. Opt-out disponible (botón Mute en Ajustes). |
| Conservación | El audio NO se persiste. Se genera bajo demanda y se descarta tras la reproducción. |
| Categorías de destinatarios | Google Cloud Text-to-Speech es el proveedor en uso. ElevenLabs se mantiene como alternativa conmutable por configuración del servidor, y solo recibiría el texto si se la activara. En ambos casos, vía proxy server-side propio: el cliente nunca tiene contacto directo con la API ni con la clave. |
| Salvaguardas | Truncado a 1500 caracteres por solicitud para limitar el abuso de cuota. El texto enviado son respuestas generadas por LONAVIA, no el mensaje del usuario. |
| Finalidad | Permitir al usuario dictar mensajes en lugar de tipear. |
|---|---|
| Datos tratados | Audio capturado por el micrófono del dispositivo. |
| Base legal | Art. 6(1)(a) GDPR — consentimiento explícito (botón mic). |
| Conservación | El audio se procesa localmente en el navegador mediante Web Speech API. NO se transmite a nuestros servidores. La transcripción de texto sí sigue el flujo normal del chat (sección 3.2). |
| Categorías de destinatarios | Procesado por el motor de reconocimiento del propio navegador del usuario (en iOS: Apple Speech; en Android/Chrome: Google Speech Services). El procesamiento puede ocurrir on-device o en los servidores del fabricante según configuración del dispositivo. |
| Finalidad | Permitir al usuario llevar control de gastos compartidos entre viajeros (estilo Tricount). |
|---|---|
| Datos tratados | Nombre del grupo, monedas, lista de participantes (con nombres en formato libre), montos, descripciones, fechas, divisiones. |
| Base legal | Art. 6(1)(b) GDPR — ejecución del Servicio. |
| Conservación | Mientras el grupo exista. El usuario puede eliminarlo en cualquier momento. |
| Categorías de destinatarios | Supabase (almacenamiento principal), ExchangeRate-API y Frankfurter (conversión de divisas — solo reciben códigos ISO de monedas, no montos identificables). |
| Observación | NO se procesan datos bancarios reales, números de tarjeta ni credenciales financieras. |
| Finalidad | Gamificación: desbloquear insignias por país visitado y mostrar mapa cronológico de viajes. |
|---|---|
| Datos tratados | Código de país, fecha de visita, coordenadas del momento de desbloqueo, ciudad detectada. |
| Base legal | Art. 6(1)(b) GDPR — ejecución del Servicio. |
| Conservación | Mientras la cuenta esté activa o hasta que el usuario los elimine. |
| Categorías de destinatarios | Supabase (tabla user_badges, cities_visited). |
| Finalidad | Permitir compartir un resumen visual del viaje en redes sociales. |
|---|---|
| Datos tratados | Nombre del país, lista de ciudades, comidas, highlights generados por la IA. |
| Base legal | Art. 6(1)(a) GDPR — consentimiento explícito (acción del usuario "Compartir"). |
| Conservación | Imagen generada bajo demanda. No se persiste salvo que el usuario la guarde manualmente. |
| Categorías de destinatarios | Pollinations.ai (generación de imagen ilustrada de fondo). |
| Finalidad | Producir un plan día-a-día personalizado a partir de un destino, número de días y presupuesto. |
|---|---|
| Datos tratados | Destino seleccionado, número de días, tier de presupuesto. |
| Base legal | Art. 6(1)(b) GDPR — ejecución del Servicio. |
| Conservación | Itinerarios guardados localmente (localStorage, máximo últimos 20). |
| Categorías de destinatarios | Groq (LLM), Pollinations.ai (imagen por día). |
LONAVIA actúa como Responsable del Tratamiento ante el usuario. Los siguientes terceros actúan como Encargados del Tratamiento (subprocesadores) o servicios autónomos a los que se envían datos para fines específicos.
| Subprocesador | Rol | Datos enviados | Finalidad | País / sede | Política |
|---|---|---|---|---|---|
| Supabase Inc. | Encargado del tratamiento | Email, perfil, ciudades, insignias, gastos, sesiones de auth | Base de datos + autenticación | EE.UU. / EU (multi-región) | supabase.com/privacy |
| Google LLC | Servicio autónomo (OAuth) | Solicitud OAuth → recibe email, nombre, foto pública | Login federado | EE.UU. | policies.google.com/privacy |
| Groq Inc. | Encargado del tratamiento | Mensajes del chat + contexto (ubicación, país, perfil de viaje, sistema) | Inferencia LLM (gpt-oss-120b / gpt-oss-20b / llama-3.3-70b) | EE.UU. | groq.com/privacy-policy |
| Google LLC (Cloud Text-to-Speech) | Encargado del tratamiento | Texto a sintetizar (limitado a 1500 chars) | Síntesis de voz — proveedor en uso | EE.UU. | policies.google.com/privacy |
| ElevenLabs Inc. | Encargado del tratamiento | Texto a sintetizar (limitado a 1500 chars) | Síntesis de voz — alternativa configurada, no en uso. Solo recibiría datos si se conmutara el proveedor en el servidor. | EE.UU. | elevenlabs.io/privacy |
| Geoapify GmbH | Encargado del tratamiento | Coordenadas GPS aproximadas (sin identificadores de usuario), vía proxy server-side propio | Búsqueda de baños públicos cercanos (datos OSM) | UE (Alemania) | geoapify.com/privacy-policy |
| Upstash Inc. | Encargado del tratamiento | Dirección IP (contador de rate limit) y celda de coordenadas redondeada a ~110 m (caché de baños). Sin identificadores de cuenta. | Límite de peticiones + caché. Retención: contadores por ventana de 1 minuto; caché 3 minutos. | EE.UU. / global (según región del Redis) | upstash.com/trust/privacy |
| Functional Software, Inc. (Sentry) | Encargado del tratamiento | Reportes de error: mensaje, stack trace, URL, user agent | Diagnóstico de fallos de la App | EE.UU. | sentry.io/privacy |
| Cloudflare, Inc. (cdnjs) | Servicio autónomo (CDN) | Dirección IP y user agent al descargar la librería de mapas (Leaflet) | Entrega de recursos estáticos | EE.UU. / global | cloudflare.com/privacypolicy |
| Vercel Inc. | Encargado del tratamiento (hosting) | Tráfico HTTPS, logs técnicos, ejecución de Edge Functions | Hosting + serverless proxy | EE.UU. (multi-región global) | vercel.com/legal/privacy-policy |
| OpenStreetMap Foundation | Servicio autónomo | Coordenadas GPS (sin identificadores) | Tiles de mapa + geocodificación inversa (Nominatim) | Reino Unido / UE | wiki.osmfoundation.org/Privacy_Policy |
| Wikimedia Foundation | Servicio autónomo | Coordenadas GPS o nombre de lugar (consulta pública) | POIs verificados | EE.UU. | foundation.wikimedia.org/Privacy_policy |
| Open-Meteo | Servicio autónomo | Coordenadas GPS (sin identificadores) | Clima | UE (Alemania/Suiza) | open-meteo.com/terms |
| ExchangeRate-API | Servicio autónomo | Códigos ISO de monedas (sin montos) | Tipos de cambio | UE (Irlanda) | exchangerate-api.com |
| Frankfurter | Servicio autónomo | Códigos ISO de monedas (sin montos) | Tipos de cambio (respaldo) | UE | frankfurter.dev |
| Pollinations AI | Servicio autónomo | Texto del prompt (nombre país + estilo gráfico) | Generación de imagen | UE / EE.UU. | pollinations.ai |
Nuevos subprocesadores: nos comprometemos a actualizar esta lista dentro de los 30 días siguientes a incorporar cualquier nuevo subprocesador y a notificarlo dentro de la App si se trata de un servicio crítico.
Varios subprocesadores procesan datos fuera del Espacio Económico Europeo (EEE), principalmente en Estados Unidos. Garantizamos:
| Dato | Plazo de conservación | Criterio |
|---|---|---|
| Perfil de usuario (Supabase profiles) | Hasta que el usuario solicite el borrado. Máximo 30 días tras la solicitud. | Necesidad funcional |
| Sesión Supabase Auth (token JWT) | 1 hora (refresh automático) | Seguridad |
| Ciudades visitadas | Vida de la cuenta o hasta eliminación manual | Funcional + consentimiento |
| Insignias desbloqueadas | Vida de la cuenta o hasta eliminación manual | Funcional |
| Grupos de gastos y movimientos | Vida de la cuenta o hasta eliminación manual | Funcional |
| Historial de chat (localStorage) | Hasta que el usuario lo borre manualmente o limpie el almacenamiento del navegador | Local, sin acceso remoto |
| Logs técnicos de Vercel (rutas, status, latencia) | Máximo 90 días | Mantenimiento, seguridad, depuración |
| Datos enviados a Groq | Según política de Groq vigente (consultar) | No bajo nuestro control directo |
| Datos enviados al proveedor de voz (Google Cloud TTS) | Bajo demanda. Audio descartado tras reproducción local. | Sin persistencia de nuestro lado |
| Contadores de rate limit y caché en Upstash (IP, celda de coordenadas) | 1 minuto (contadores) / 3 minutos (caché) | Expiración automática por TTL |
| Reportes de error en Sentry | Según política de Sentry vigente | No bajo nuestro control directo |
| Caché Wikipedia/FX en localStorage | 12 horas | Optimización |
Al recibir una solicitud de eliminación, ejecutamos el borrado en la base de datos de Supabase (cascade delete por FK), invalidamos sesiones activas y solicitamos a los subprocesadores la eliminación de los datos en su poder (Groq guarda inputs hasta 30 días según política actual).
auth.uid() = user_id.npm audit ejecutado regularmente. Estado actual: 0 vulnerabilidades.Conforme al Art. 33 y 34 GDPR, ante la detección de una violación de datos personales:
Conforme al Art. 35 GDPR, se ha realizado una evaluación interna preliminar. Los tratamientos de mayor riesgo identificados son:
Una DPIA formal se realizará si el volumen de usuarios supera los 10.000 sujetos o si se introducen tratamientos de mayor riesgo (perfilado avanzado, biometría, datos de menores en gran escala).
Atendemos las siguientes solicitudes en un plazo máximo de 30 días desde su recepción (prorrogable hasta 60 días en casos complejos, conforme al Art. 12 GDPR):
| Componente | Tecnología | Versión / Modelo |
|---|---|---|
| Framework cliente | React + Vite | React 19, Vite 8 |
| Backend (BaaS) | Supabase | PostgreSQL + Auth + Edge Functions |
| Hosting | Vercel | Edge Network global |
| LLM principal | GPT-OSS (OpenAI, pesos abiertos) vía Groq | openai/gpt-oss-120b — chat |
| LLM auxiliar | GPT-OSS vía Groq | openai/gpt-oss-20b — clasificación, JSON, itinerarios. llama-3.3-70b-versatile (Meta) queda como alternativa. |
| TTS | Google Cloud Text-to-Speech | Voz es-US-Neural2-B (configurable). ElevenLabs Flash v2.5 disponible como alternativa conmutable. |
| STT | Web Speech API (nativa del navegador) | Apple / Google según OS |
| Mapas | Leaflet + OpenStreetMap | Vía CDN |
| Geocodificación | Nominatim + Wikipedia Geosearch | API pública |
| Generación de imagen | Pollinations (Flux) | API pública |
LONAVIA NO utiliza cookies de tracking publicitario ni de redes sociales. El almacenamiento local se limita a:
| Clave (localStorage) | Propósito | Duración |
|---|---|---|
lonavia_lang | Idioma preferido | Persistente hasta limpieza manual |
lonavia_dark | Modo claro/oscuro | Persistente |
lonavia_user | Caché del perfil tras login | Persistente hasta logout |
lonavia_user_country | Nacionalidad declarada | Persistente |
lonavia_credits | Contador de mensajes restantes (free) | Persistente |
lonavia_history | Historial de chat local | Persistente, máx 50 sesiones |
lonavia_expense_groups_v1 | Caché de gastos offline-first | Persistente |
lonavia_itineraries_v1 | Itinerarios generados | Persistente, máx 20 |
lonavia_user_tips_v1 | Tips agregados por el usuario | Persistente, máx 200 |
lonavia_mute | Estado del mute | Persistente |
lonavia_fx_cache_v1 | Caché de tipos de cambio | 12 horas |
lonavia_wiki_pois_v1 | Caché de POIs Wikipedia | 12 horas |
lonavia_supabase_auth | Token de sesión Supabase | 1 hora con refresh automático |
El usuario puede borrar todo el almacenamiento desde los ajustes del navegador, lo que efectivamente le desconecta de la cuenta y resetea preferencias.
Mantenemos un registro interno de versiones de este documento y cambios materiales en las prácticas de tratamiento. Las versiones anteriores quedan disponibles bajo solicitud.
| Versión | Fecha | Cambios principales |
|---|---|---|
| 1.0 | 2026-05-23 | Documento inicial. ROPA completo conforme a GDPR Art. 30. Integración con T&C y Política de Privacidad. |
📧 Email (privacidad): hola@lonavia.app
🌐 Web: lonavia.app
⚖️ Autoridad de control (UE): Lista de autoridades nacionales en edpb.europa.eu.
🇦🇷 Argentina: Agencia de Acceso a la Información Pública (AAIP).
🇪🇸 España: Agencia Española de Protección de Datos (AEPD).
🇲🇽 México: Instituto Nacional de Transparencia (INAI).
🇧🇷 Brasil: Autoridade Nacional de Proteção de Dados (ANPD).
📄 Documentos relacionados:
LONAVIA utiliza inteligencia artificial generativa para producir sus respuestas de viaje. Conforme al Reglamento (UE) 2024/1689 sobre Inteligencia Artificial («AI Act»), en particular su Artículo 50 (obligaciones de transparencia), informamos lo siguiente:
Para consultas relativas al uso de IA podés escribir a hola@lonavia.app.