# Aviso de privacidad y tratamiento local de datos

Versión del aviso: 2026-07-15. Release documental: `2026.07.14-p19.2`.

## Alcance

Este aviso describe el comportamiento de la versión estática actual de **MisBalances** incluida en esta carpeta. La aplicación funciona en el navegador, sin cuenta de usuario, backend ni base de datos propia.

MisBalances es una herramienta informativa. Este documento explica su funcionamiento técnico y no sustituye el aviso legal que deba proporcionar quien publique u opere una instancia para terceros.

## Datos que puede procesar

La información depende de lo que la persona decida capturar e incluye, entre otros:

- alias y preferencias locales;
- país, ubicación general, estado, filing status, tipo de empleo y preferencias fiscales configuradas por la persona;
- sueldos, empleos, prestaciones, bonos e ingresos adicionales;
- régimen y estimaciones fiscales;
- créditos, financiamientos y referencias de tarjetas;
- gastos, compras, pagos y movimientos confirmados;
- extractos derivados de estados de cuenta, estatus de pago de tarjetas y vínculos opcionales con movimientos bancarios importados;
- inversiones, calendarios, balances y escenarios laborales.
- metas financieras, fondo de emergencia, inflación de referencia y score interno de salud financiera.
- saldos patrimoniales capturados como AFORE, PPR, cuentas o movimientos bancarios.
- cuentas de inversión/brokerage (Mis inversiones) con sus holdings y el tipo de cambio capturado para cuentas en dólares.
- metadatos técnicos del libro financiero, como identificadores locales, fuente, cuenta, estado, periodo y vínculos de conciliación.

Estos metadatos sirven para explicar los totales y evitar duplicados. No convierten el almacenamiento local en una cuenta en línea ni se envían por sí solos a un servidor.
- pólizas de seguro (aseguradora, tipo, prima, suma asegurada, deducible, fecha de renovación).

No es necesario capturar nombre completo, RFC, CURP, NSS, correo, teléfono, domicilio, CLABE, número completo de tarjeta, CVV ni contraseñas permanentes. Se recomienda no introducirlos.

## Finalidades

Los datos se usan para:

- calcular estimaciones de ingreso neto, prestaciones y salida laboral;
- calendarizar cobros, pagos, créditos y gastos;
- conciliar compras confirmadas contra movimientos de estados de cuenta y vincular pagos bancarios como evidencia de pago de tarjetas;
- comparar propuestas, financiamientos e inversiones;
- estimar metas, fondo de emergencia, deuda/ingreso y señales de salud financiera;
- producir vistas, PDF, libros Excel y respaldos JSON solicitados por la persona usuaria.
- adaptar etiquetas y cálculos estimados entre México y Estados Unidos según la configuración local.

La versión actual no utiliza los datos para publicidad, perfiles comerciales, entrenamiento de modelos, venta de información ni analítica de uso.

## Dónde se guardan

Configuraciones, sueldo y otros datos compactos se conservan en `localStorage`. Compras, estados importados y pagos de tarjeta también se guardan en la base IndexedDB `balance_personal_db` del mismo navegador. Los reportes Excel y JSON pueden incluir saldos patrimoniales, movimientos bancarios confirmados y metadatos de conciliación cuando el usuario los haya capturado.

Cuando se confirma que un estado de tarjeta fue pagado, la aplicación puede conservar el estatus pagado/pendiente, el monto pagado, el remanente y la referencia al movimiento bancario que lo respalda. Esa información se usa para evitar duplicar egresos y para proyectar deuda revolvente; no implica conexión real con el banco.

Durante la primera fase de migración, esas colecciones mantienen una copia compatible en `localStorage` para rollback y respaldo. Ambos mecanismos son almacenamiento local del navegador: no constituyen una nube ni sincronizan dispositivos.

Cada navegador mantiene una copia independiente. El modo privado, la limpieza de datos del sitio, la reinstalación del navegador o algunas políticas corporativas pueden eliminarla.

## Estados de cuenta y contraseñas

- El PDF se abre localmente con PDF.js.
- Si el archivo está protegido, la contraseña se utiliza en memoria durante esa lectura.
- La aplicación no guarda el PDF original ni la contraseña en `localStorage`, el respaldo JSON, la URL compartida, el PDF o el Excel exportado.
- Solo se conservan los movimientos que la persona confirma y los metadatos necesarios para conciliarlos o restaurarlos.
- Los pagos a tarjeta importados desde un banco pueden guardarse como evidencia de conciliación. Se conserva el movimiento confirmado y su vínculo lógico con el estado de tarjeta; no se conserva el PDF original.

El navegador y el sistema operativo pueden conservar temporalmente el archivo original en Descargas, caché o memoria fuera del control de la aplicación.

Este mismo tratamiento local aplica a los estados de cuenta AFORE y a los estados de cuenta de inversión (Mis inversiones): se procesan en memoria del navegador, no se conserva el PDF ni su contraseña, y solo se guardan los valores que la persona confirma tras revisarlos.

## Comunicaciones y terceros

La versión actual no envía los valores de los formularios a un servidor propio. Utiliza estos recursos externos:

- **Google Fonts:** al cargar Fraunces, Instrument Sans y Spline Sans Mono, el navegador puede comunicar a Google datos técnicos propios de una solicitud web, como dirección IP, agente de usuario, fecha y URL de referencia. Los campos financieros no se agregan deliberadamente a esa solicitud.
- **Alojamiento:** si la aplicación se publica en Cloudflare Pages (proveedor vigente elegido en 2026-07), GitHub Pages u otro proveedor, ese proveedor puede registrar solicitudes, IP, navegador y diagnósticos conforme a sus propias políticas.

PDF.js y ExcelJS se cargan desde la carpeta local `vendor/`; no necesitan consultar un CDN para procesar los datos.

## Enlaces y archivos generados

- **Compartir** crea una URL codificada, no cifrada, con datos de las propuestas. El fragmento puede quedar en historial, portapapeles, capturas o manos del destinatario.
- **PDF y Excel** se descargan al dispositivo y pueden contener información financiera legible.
- **JSON** contiene el estado restaurable de la aplicación. No está cifrado y debe protegerse como un documento financiero.

La aplicación no puede retirar archivos o enlaces que ya se hayan compartido.

## Conservación y controles

El panel **Movimientos incluidos** y la subpestaña **Movimientos** muestran trazabilidad financiera dentro del navegador. El modo privacidad oculta visualmente sus importes junto con los demás valores sensibles, pero no cifra, elimina ni modifica los datos guardados. Salir del modo privacidad vuelve a mostrarlos.

Las correcciones pueden guardar motivo, valor anterior/nuevo, fecha de modificación e identificador de conciliación bancaria. Esta información permanece local, forma parte del respaldo JSON y aparece en la hoja `Auditoria libro` del Excel. No se guarda la contraseña ni el PDF original del banco.

Las asignaciones parciales guardan únicamente el identificador local de la transacción bancaria, fecha, monto aplicado y fecha de vínculo. Desvincular no elimina la transacción bancaria original.

Las decisiones de duplicados pueden conservar huellas no reversibles de fecha, concepto normalizado, monto, tarjeta y contraparte, además de etiquetas legibles, acción y fecha de decisión. Se usan para no repetir preguntas de conciliación. Permanecen localmente, pueden eliminarse una por una, forman parte del respaldo JSON y de la auditoría Excel, y no contienen el PDF ni su contraseña.

Los datos permanecen hasta que ocurra alguna de estas acciones:

- la persona pulsa **Borrar todos mis datos**;
- el navegador elimina el almacenamiento del sitio;
- se restaura otro respaldo, que reemplaza el estado administrado;
- se elimina manualmente el almacenamiento desde las herramientas del navegador.

**Borrar todos mis datos** elimina tanto las claves administradas de `localStorage` como `balance_personal_db`.

La persona puede descargar un respaldo JSON, restaurarlo, conservarlo fuera del navegador o borrarlo. Antes de una restauración, la aplicación descarga una copia preventiva del estado que será reemplazado.

## Seguridad y limitaciones

- `localStorage`, IndexedDB y los archivos exportados no están cifrados por la aplicación.
- Cualquier persona con acceso al dispositivo, perfil del navegador, respaldo o enlace puede llegar a leer la información.
- No se debe usar la aplicación en equipos públicos o compartidos sin borrar los datos al terminar.
- Las extensiones del navegador, malware, copias del sistema o herramientas de administración pueden acceder a información fuera del control de esta aplicación.

## Cambios futuros

Si se incorpora cuenta, sincronización, backend, analítica, bot, aplicación móvil o almacenamiento en nube, este aviso debe actualizarse antes de activar esas funciones. La nueva versión deberá identificar al responsable, finalidades, proveedores, fundamento, conservación, controles de cuenta y mecanismo de contacto aplicables.

## Publicación para terceros

Esta carpeta no contiene nombre legal, domicilio ni contacto de un responsable porque no fueron proporcionados. Antes de ofrecer MisBalances como servicio público, la persona u organización operadora debe completar esos datos y revisar las obligaciones de privacidad de la jurisdicción donde opere.

## Diagnóstico técnico y preparación de sincronización

Inicio > Privacidad puede generar un diagnóstico técnico con versión, esquema, entorno, disponibilidad de almacenamiento, dependencias, tiempo de arranque, conteo de errores sanitizados y estado de sincronización. El diagnóstico no incluye salarios, saldos, importes, conceptos, movimientos, contraseñas, PDFs ni el contenido del respaldo.

`bp_sync_client_id_v1` es un identificador aleatorio local del navegador. No es una cuenta, no identifica legalmente a una persona y no permite iniciar sesión. Puede formar parte del respaldo JSON para conservar continuidad técnica entre restauraciones.

La aplicación puede preparar localmente un sobre versionado con checksum reutilizando el
respaldo. También incluye un adaptador y una interfaz de sincronización manual, pero
`runtime-config.js` mantiene `sync.enabled: false`: en la versión vigente no se inicia sesión,
no se consulta un backend y no se transmite el sobre. El bundle local de Supabase por sí solo
no activa comunicaciones.

Una futura prueba autorizada debe ejecutar primero un preflight local, mostrar alcance y
conflictos, y pedir confirmación explícita antes de aplicar datos remotos. La descarga se
valida sobre una copia; si falla escritura, checksum o render posterior, se restaura la
fotografía local anterior. PDFs, contraseñas de estados de cuenta y archivos Excel nunca
forman parte del sobre sincronizable. Cualquier activación real exige actualizar este aviso,
identificar al proveedor y responsable, definir conservación y eliminación, y probar las
políticas RLS antes de enviar datos.

### Compatibilidad contractual

El diagnóstico puede ejecutar validaciones locales sobre copias de movimientos, empleos, créditos, tarjetas, cuentas, inversiones, activos y participantes del hogar. Solo presenta versión, cantidad de tipos, registros revisados y conteos de advertencias o errores. No incorpora los registros normalizados, importes, nombres, conceptos ni identificadores de usuario al JSON de diagnóstico.

### Modo privacidad visual

El botón de privacidad oculta importes sensibles en la interfaz para compartir pantalla o revisar
la aplicación en público. Es una protección visual: no cifra ni elimina los datos guardados y no
reemplaza el bloqueo del dispositivo, un respaldo seguro o el cierre de la sesión del navegador.
En p19.2 su continuidad se verifica junto con Inicio, sueldo, patrimonio e inversiones.
