Arquitectura de seguridad
Cómo se protegen técnicamente los datos en Sidekick y dónde se procesa físicamente lo que sale del teléfono. Esta es una descripción a nivel de ingeniería para quienes quieren saber "cómo está hecho", no solo "qué se nos permite hacer".
1. El principio de "local por naturaleza"
Sidekick está diseñado para funcionar por completo sin conexión de forma predeterminada. Los empleados, grabaciones, transcripciones, notas, tareas, eventos de calendario y vacaciones se almacenan únicamente de forma local, en una base de datos cifrada en el teléfono del manager — no llegan a ninguno de nuestros servidores, a menos que el manager active de forma consciente una función concreta basada en la nube (descrita en la sección 4). La app no requiere crear una cuenta ni indicar un correo electrónico o número de teléfono.
2. Cifrado en el dispositivo
| Qué | Cómo |
|---|---|
| Base de datos (metadatos, transcripciones, notas, tareas, datos de empleados) | Cifrada por completo mediante SQLCipher (AES-256). La clave son 256 bits aleatorios generados localmente en el primer inicio, almacenados en EncryptedSharedPreferences, protegidos por una clave de hardware del Android Keystore. El manager nunca ve ni introduce esta clave. |
| Archivos de audio de las grabaciones | Cada archivo se cifra por separado con AES-256-GCM, con una clave de software generada aleatoriamente por archivo y "envuelta" (cifrado de sobre) con una clave de hardware del Android Keystore — la propia clave de hardware nunca sale del elemento seguro del dispositivo. |
| PIN / patrón de bloqueo de la app | No se almacena en texto plano — se guarda como un hash SHA-256 con una sal única por instalación. |
3. Bloqueo de acceso a la app
Opcionalmente, el manager puede proteger la propia app con un código PIN, un patrón o su huella dactilar/rostro (biometría del sistema de Android). Tras configurar el bloqueo, la app se bloquea automáticamente al pasar a segundo plano, de modo que un teléfono dejado a la vista no da acceso a los datos a terceros.
4. Qué llega a la nube y cuándo
Las funciones básicas (grabación, transcripción local, notas, tareas, calendario) funcionan 100% sin conexión y nunca envían contenido a ninguna parte. El contenido solo llega a la nube cuando el manager activa de forma consciente una función de IA basada en la nube (resúmenes de reuniones, detección de tareas, transcripción en la nube, "preguntar a la IA", preparación de reuniones) — disponible en los planes Premium/Pro. El plan Free utiliza un equivalente local y extractivo de estas funciones, sin enviar nada.
Cuando el manager activa las funciones en la nube, existen dos vías, según la configuración:
- A través de nuestro servidor (predeterminado, Premium/Pro): el contenido (una transcripción/texto o un archivo de audio para transcribir) llega a nuestro servidor proxy, que lo envía al proveedor de IA elegido (Mistral AI o Google Gemini — para resúmenes/análisis; ElevenLabs — para transcripción de voz), recibe la respuesta y la devuelve a la app. Nuestro servidor actúa aquí como intermediario: reenvía el contenido en memoria, como parte de gestionar una única solicitud, y no lo almacena — consulta la sección 5 para ver qué llega realmente a nuestra base de datos.
- Directamente, con tu propia clave de API (opcional, Pro): el manager puede indicar en Ajustes su propia clave de API para el proveedor elegido — en ese caso el contenido va del teléfono directamente a ese proveedor, sin pasar en absoluto por nuestro servidor.
En ambas vías, el contenido queda sujeto además a la política de privacidad del proveedor de IA correspondiente (Mistral AI, Google Gemini, ElevenLabs) — merece la pena revisarlas si procesas en tus notas datos especialmente sensibles. Ninguno de estos proveedores es seleccionado por nosotros de forma predeterminada sin el conocimiento del manager — elegir el proveedor y activar la nube en sí son siempre una decisión explícita en Ajustes.
5. Qué almacena nuestro servidor
Nuestro servidor (Cloud Run + base de datos Supabase) almacena únicamente datos técnicos, vinculados a un identificador anónimo de instalación (un UUID aleatorio generado en el teléfono — no es un identificador publicitario ni ningún dato personal como nombre o correo electrónico):
- el hecho de la instalación y la última actividad, la versión de la app, el modelo de teléfono y la versión del sistema (para estadísticas),
- un registro de compras verificadas (Premium/Pro, paquetes de minutos) y códigos promocionales canjeados — para controlar los límites,
- contadores de consumo (cuántas solicitudes de IA, cuántos minutos de transcripción en un mes dado) — solo las cifras, no el contenido.
el contenido de grabaciones, transcripciones, notas, tareas, datos de empleados, ni el nombre/correo electrónico del manager — nuestra base de datos simplemente no tiene esos campos.
6. Cifrado en el transporte
Toda conexión de red de la app — con nuestro servidor, así como directamente con los proveedores de IA cuando se usa una clave de API propia — se realiza exclusivamente mediante HTTPS/TLS. La conexión del servidor con la base de datos Supabase también está cifrada con TLS.
7. Ubicación de los servidores
| Componente | Proveedor | Región |
|---|---|---|
| Servidor de la aplicación (proxy de IA, verificación de compras) | Google Cloud Run | europe-central2 — Varsovia, Polonia |
| Base de datos de estadísticas/compras | Supabase (PostgreSQL) | Región UE (Fráncfort) |
Proveedores de IA por los que puede pasar el contenido (opcional, sección 4)
La siguiente información se refiere al acceso estándar mediante clave de API (tal como lo usa nuestro servidor proxy) y puede variar según el plan/cuenta concreto — datos actualizados a agosto de 2026, verificados en la documentación oficial de los proveedores.
| Proveedor | Para qué se usa | Ubicación del procesamiento | Retención de datos |
|---|---|---|---|
| Google Gemini | Resúmenes, detección de tareas, "preguntar a la IA" (una de dos opciones junto a Mistral AI) | La API estándar de Gemini (el mismo tipo de acceso que usa nuestra clave) no garantiza el procesamiento en la UE — funciona en modo global, sin fijarse a una región. La garantía de ubicación en la UE la ofrece únicamente Vertex AI con "fijación" explícita de región (un servicio empresarial independiente de Google Cloud), que no usamos aquí. | En el nivel de pago de la API, Google declara que no utiliza el contenido de las solicitudes/respuestas para entrenar sus modelos, pero lo registra durante unos 55 días únicamente para detectar abusos. En el nivel gratuito (Google AI Studio sin pago), Google puede utilizar el contenido para mejorar sus servicios — por eso usamos una clave del nivel de pago. |
| ElevenLabs (Scribe) | Transcripción de voz a texto | Por defecto (fuera de una cuenta Enterprise), los datos se procesan y finalmente se almacenan en EE. UU., independientemente de la ubicación del usuario — ElevenLabs también tiene infraestructura en la UE y Singapur, pero la garantía de procesamiento exclusivamente en la UE es una opción de pago disponible solo en el plan Enterprise, que no usamos aquí. | ElevenLabs ofrece un "Zero Retention Mode" opcional (sin retención de contenido en sus servidores) — también es una función que requiere una configuración independiente a nivel de cuenta, no el estado predeterminado para una clave de API estándar. |
8. Eliminación de datos
Los datos locales del teléfono los borra el propio manager en Ajustes ("Borrar datos") — completamente sin conexión y de forma inmediata. Los datos técnicos descritos en la sección 5, almacenados en nuestro servidor, se pueden eliminar con el botón "Eliminar datos del servidor" en Ajustes, o mediante una solicitud en la página Solicitud de eliminación de datos (también sin acceso a la app).
Sidekick