Privacidad

Tu plata, tu data.

Última actualización: · Versión 1.2

1. Quién es Clara y quién es responsable de tus datos

Clara es una asistente financiera con IA, open source bajo licencia MIT y self-hosteable. Esta política aplica a la versión hosteada en clara.trefolio.com.

El responsable del tratamiento (data controller) es Marcos Suarez, mantenedor de Clara como proyecto personal open source. Si self-hosteás Clara en tu propia infraestructura, el responsable sos vos (o tu organización), no nosotros.

Para ejercer cualquier derecho o consulta de privacidad, usá el formulario público en /contact eligiendo el motivo "Privacidad / GDPR". No publicamos un email personal — el formulario va a la bandeja del responsable y respondemos por la dirección que dejes ahí.

2. Qué datos recolectamos

Cuenta y autenticación: email, contraseña hasheada (bcrypt), nombre y avatar opcionales sincronizados desde Google si entrás con Google, marca de email verificado, passkeys (WebAuthn) que registres, idioma preferido, país declarado en el onboarding.

Tipo de cuenta (`User.kind`): por defecto REGULAR. Si entraste a Clara aceptando la invitación a un viaje compartido sin crear cuenta, tu cuenta es GUEST: solo tiene tu nombre de pantalla, el chat de Telegram vinculado y acceso a ese único viaje. No tiene contraseña, ni email obligatorio, ni acceso al panel ni a tus propios meses; podés convertirla en REGULAR en cualquier momento desde /upgrade-guest.

Datos financieros: bancos que registres, plantillas de gastos e ingresos, líneas mensuales (monto, descripción, categoría, fecha, moneda, tipo de cambio congelado), y, en gastos cargados dentro de una billetera de evento compartida, qué participante pagó esa línea (`paidByUserId`); pila global de ahorro y su ledger de movimientos, instrucciones para el agente.

Billeteras de evento compartidas: si invitás a alguien a un viaje vía un share-link, guardamos por cada participante su nombre de pantalla a nivel evento, su rol (organizador o invitado) y, en el caso de invitados nuevos por Telegram, un código de un solo uso para vincular el bot. Los share-links se guardan como hash sha256 — nunca el link en claro — y los podés revocar desde la pantalla del viaje cuando quieras; revocación, expiración y último uso son visibles para vos.

Conversaciones: mensajes del chat web (texto + adjuntos como JSON estructurado), mensajes de Telegram si vinculás el bot, contadores de uso del agente y modelos consumidos por día.

Preferencia de recordatorios por Telegram y fecha del último recordatorio enviado (solo aplica si tenés Telegram vinculado; se usa para no mandarte más de un mensaje por día y para que puedas apagarlos cuando quieras desde Configuración).

Pagos (sólo si te suscribís o donás): identificador de cliente de Stripe, estado de la suscripción y fecha de fin de periodo, registro de cada donación (id de Stripe, monto, fecha).

Tokens de acceso para AI (MCP): nombre, prefijo de 12 caracteres, fecha de creación, último uso, expiración y revocación. El token completo se hashea con SHA-256 antes de guardarlo; el plaintext sólo se muestra una vez.

Metadatos técnicos mínimos: IP truncada y user-agent en logs de error y rate-limit (sin perfilado), última fecha de actividad, día de actividad para DAU/WAU.

Si self-hosteás, los datos viven en la base que vos configures.

3. Para qué los usamos y con qué base legal (Art. 6 GDPR)

Ejecución del contrato (Art. 6(1)(b)): operar la cuenta, persistir tus gastos, ingresos y mensajes, procesar PDFs/audios/screenshots que vos nos mandás, ejecutar el agente con tus tools, cobrar la suscripción Supporter o donaciones que elijas hacer.

Obligación legal (Art. 6(1)(c)): conservar registros de pagos y donaciones por el plazo que exija la normativa fiscal aplicable, verificar el email antes de habilitar contraseña.

Interés legítimo (Art. 6(1)(f)): proteger Clara y sus usuarios contra abuso (Cloudflare Turnstile, rate-limits con IP), monitorear errores (Sentry si está configurado), auditar accesos administrativos.

Consentimiento (Art. 6(1)(a)): aceptación explícita de estos Términos y esta Política al registrarte (queda guardada en `User.acceptedTermsAt` con la versión). Vincular Telegram es en sí mismo una acción voluntaria que activa el canal bidireccional con el bot — incluidos los recordatorios diarios proactivos que Clara te manda a las 20:00 locales si en el día no cargaste nada. Podés apagarlos en cualquier momento desde Configuración → Integraciones → Telegram, sin perder el vínculo con el bot.

Nunca vendemos datos. Nunca corremos analytics de comportamiento. Nunca usamos tus datos financieros para entrenar modelos.

4. Sub-encargados de tratamiento

Vercel Inc. (US) — hosting de la aplicación, base Postgres administrada (vía Marketplace), Vercel Blob para audios TTS, Vercel Runtime Cache, AI Gateway que enruta llamadas a modelos. Recibe todos los datos persistidos como infraestructura.

OpenAI (US) — Whisper para transcripción de notas de voz, OpenAI TTS para audio de respuesta, GPT-* a través del AI Gateway. Bajo política de zero data retention.

Anthropic (US) y Google (US) — proveedores adicionales de modelos enrutados por AI Gateway cuando aplique, también con ZDR.

Cloudflare Inc. (US) — Turnstile (captcha) en signup y login. Recibe IP y metadatos del navegador para evaluar el desafío; no recibe email, contraseña ni datos financieros.

Resend Inc. (US) — emails transaccionales (verificación de email, alertas). Recibe sólo tu email y el contenido del mensaje, no datos del balance.

Stripe Inc. / Stripe Payments Europe Ltd (US/IE) — procesamiento de pagos si elegís suscribirte o donar. Recibe email, país, datos de la tarjeta. Clara nunca ve el número de tarjeta.

Upstash Inc. (US) — Redis para rate-limits. Recibe IP y contadores; no contenido de los mensajes.

Telegram FZ-LLC (AE) — Bot API, sólo si linkeás Telegram. Recibe los mensajes que vos enviás al bot.

Google LLC (US) — OAuth 2.0, sólo si elegís entrar con Google. Recibe el flujo de autenticación estándar.

Sentry GmbH (DE) — agregación de errores, sólo si el operador configuró `SENTRY_DSN`. Recibe stack traces y contexto técnico, sin payloads de mensajes.

Cuando self-hosteás, vos elegís qué sub-encargados usar (todos son opcionales y degradan con gracia).

5. Transferencias internacionales

Varios sub-encargados están en Estados Unidos o en jurisdicciones fuera del EEE. Cuando aplica, las transferencias se cubren con Cláusulas Contractuales Tipo (SCCs, Decisión EU 2021/914) y, donde el procesador esté certificado, con el EU-US Data Privacy Framework. Telegram FZ-LLC opera desde Emiratos Árabes Unidos; los datos sólo se le envían si vos linkeás el bot.

6. Plazos de retención

Cuenta y datos financieros: hasta que borres la cuenta. Cuando pedís borrarla queda en una cola de 30 días en la que podés recuperarla con un click; pasados los 30 días, el borrado es definitivo y en cascada.

Audios TTS en Vercel Blob: hasta 7 días.

Logs de aplicación (Vercel/Sentry): 30 días.

Idempotencia de webhooks de Stripe: 18 meses.

Recibos de donaciones y suscripciones: 7 años (obligación fiscal en la UE).

Tokens MCP: hasta que los revoques; revocados se purgan a los 30 días.

Tokens de share-link de eventos compartidos: hasta el momento de expiración o revocación; revocados o expirados se purgan a los 30 días. Las cuentas de invitado (User.kind = GUEST) creadas a partir de uno de esos links siguen las reglas generales: viven mientras vos no las borres, o se purgan en cascada cuando el organizador del viaje borra el evento o su propia cuenta.

Mensajes del chat (web y Telegram): hasta que borres la cuenta o le pidas al agente que los purgue.

Mensajes del formulario /contact: 24 meses; los metadatos técnicos (IP / user-agent del envío) máx 90 días o hasta que se archive el mensaje, lo que ocurra primero.

7. Tus derechos

Acceso (Art. 15): descargate todos tus datos en JSON desde Configuración → Tu información y cuenta.

Portabilidad (Art. 20): el JSON anterior es estructurado y machine-readable.

Supresión / derecho al olvido (Art. 17): borrá tu cuenta desde Configuración. Queda en cola por 30 días en los que podés revertirla iniciando sesión y tocando "Restaurar mi cuenta"; pasado ese plazo, el borrado es definitivo y en cascada. Las donaciones quedan en Stripe por obligaciones fiscales.

Rectificación (Art. 16), restricción (Art. 18), oposición (Art. 21) y retiro de consentimiento (Art. 7(3)): mandanos un mensaje desde /contact eligiendo "Privacidad / GDPR". Respondemos en un máximo de 30 días.

8. Derecho a presentar una queja

Tenés derecho a reclamar ante la autoridad de control de tu país de residencia: AEPD en España, CNIL en Francia, Garante per la Privacy en Italia, BfDI en Alemania, AAIP en Argentina, etc. La lista de autoridades europeas vive en https://edpb.europa.eu/.

9. Visibilidad dentro de un viaje compartido

Cuando aceptás un share-link de un viaje, los demás participantes (incluido el organizador) ven tu nombre de pantalla y, por cada gasto que cargues dentro del viaje, los datos de esa línea (fecha, descripción, monto en la moneda del organizador y categoría). No ven nada del resto de tu cuenta: ni tus otros gastos, ni tu balance, ni tu identidad real más allá del nombre que vos elegiste al sumarte.

Si te invitaron solo por Telegram (cuenta GUEST), tu identidad de Telegram (id de usuario) queda vinculada a esa cuenta para que el bot sepa que sos vos. Esa identidad NO se le muestra a los demás participantes — ellos ven solo tu nombre de pantalla.

El organizador puede quitarte del viaje en cualquier momento. Tus líneas ya cargadas quedan en el viaje (si las borrás, las borrás vos antes de que te quite); a partir del retiro no podés cargar más.

Si borrás tu cuenta GUEST, los gastos que cargaste para el viaje siguen viviendo en la billetera del organizador (las cargaste en su libro contable como parte del viaje compartido); deja de aparecer tu nombre y el reparto se recalcula sin vos.

10. Cookies estrictamente necesarias

Sólo usamos dos cookies, ambas necesarias para el funcionamiento de Clara y exentas de consentimiento previo según la directiva ePrivacy:

`next-auth.session-token` (JWT firmado, 30 días, HttpOnly Secure SameSite=Lax) — mantiene tu sesión iniciada.

`NEXT_LOCALE` (1 año, SameSite=Lax) — recuerda tu idioma preferido para que el server-render arranque en el idioma correcto sin parpadeo.

No cargamos analytics, no usamos pixels publicitarios, no hacemos fingerprinting.

11. Edad mínima

Clara está pensada para personas de 16 años o más. En la Unión Europea Art. 8 GDPR fija ese umbral por defecto; en jurisdicciones donde el umbral aplicable sea menor, hace falta consentimiento parental verificable. Si descubrimos que abrimos una cuenta de un menor de edad sin ese consentimiento, la borramos.

12. Notificación de brechas de seguridad

Si una brecha afecta a tus datos personales con riesgo razonable, te avisamos por email lo antes posible y siempre dentro de las 72 horas que exige el Art. 33-34 GDPR, y reportamos a la autoridad de control cuando aplica.

13. Cambios a esta política

Cuando cambiamos esta política de forma material, bumpeamos `CURRENT_PRIVACY_VERSION` y te pedimos que aceptes la nueva versión la próxima vez que entres. Cambios menores (correcciones de redacción, links rotos) no fuerzan re-aceptación.

14. Contacto

Para cualquier consulta o ejercicio de derechos: usá el formulario en /contact, motivo "Privacidad / GDPR". El controlador es persona física, no hay DPO formal.