Privacidad y avisos de error
Ajé no tiene cuentas ni guarda tus datos fuera del teléfono. Lo único que puede salir del teléfono son los avisos de error, y solo si los activas: al abrir la app por primera vez te lo pregunta, y puedes cambiarlo cuando quieras en Ajustes → Privacidad. Vienen apagados.
Sirven para una cosa: saber que en tal versión, tal operación de tal banco falló, o que llegó un SMS del banco con una forma que Ajé todavía no sabe leer. No sirven para saber quién eres, y esta página explica por qué.
Qué se envía
Cada aviso es un evento suelto, con estos campos y ningún otro:
| event | Qué pasó: la app arrancó, se envió un código USSD, llegó la respuesta, llegó un SMS del banco, un error. |
| app, commit | La versión de Ajé y la revisión exacta del código. |
| android, maker | La versión de Android (solo el número grande, como 13) y el fabricante (samsung, xiaomi). No el modelo. |
| op, bank, via | El código de la operación (46 es consultar saldo), el banco y si fue por la API o por el marcador. El banco se deduce de los primeros dígitos de la tarjeta; el número nunca sale. |
| ok, failure_code | Si salió bien y, si no, el código de fallo que da Android. |
| latency_ms, age_ms | Cuánto tardó, redondeado a décimas de segundo. |
| kind, sender, length, lines | El tipo de SMS, el remitente si es un servicio (como PAGOxMOVIL; un número de persona nunca), y el largo del texto. |
| text, error, stack | El texto del SMS o de la respuesta, o el error y en qué línea del código ocurrió, tachados como se explica abajo. |
El tachado
Antes de salir del teléfono, cada texto pasa por un tachado. Las palabras que pasan son las de una lista cerrada: las palabras fijas de los mensajes del banco y de ETECSA, y palabras como «de», «la» o «su». Cualquier otra palabra se cambia por ‹w›. En una palabra con números, cada dígito pasa a # y cada letra a A o a. Un nombre nunca está en la lista, así que se tacha sin que nadie tenga que reconocerlo. Un ejemplo con datos inventados:
Lo que llega al teléfono
Banco Metropolitano: La Transferencia fue completada. Fecha: 1/2/2026 Beneficiario: 9200XXXXXXXX0001 Ordenante: ANA PEREZ Monto: 100.00 CUP Nro. Transaccion: AB0000XYZ0001 Saldo restante: CR 1134.56 CUP
Lo que sale
Banco Metropolitano: La Transferencia fue completada. Fecha: #/#/#### Beneficiario: ####AAAAAAAA#### Ordenante: ‹w› ‹w› Monto: ###.## CUP Nro. Transaccion: AA####AAA#### Saldo restante: CR ####.## CUP
Con la forma basta para arreglar el código que lee ese mensaje. El nombre, el monto y los números no salen.
Lo que no se envía nunca
- Números de tarjeta o de cuenta, ni siquiera en parte.
- Tu carné, tu nombre, tu número de teléfono, tu clave.
- Saldos ni montos.
- Un identificador de la instalación, del teléfono o de tu cuenta.
Por qué no se puede saber de quién vino
- Sin identificador. Ningún aviso lleva algo que sea igual en dos avisos tuyos.
- Uno por envío. Cada aviso viaja solo, en su propia petición; nunca en un paquete con otros tuyos.
- Sin hora exacta. El teléfono no manda la hora. El servidor anota solo la hora en punto en que llegó.
- Mezclados. Al cerrar cada hora, el servidor desordena los avisos de esa hora antes de guardarlos, así que el orden no dice cuáles llegaron juntos.
- Sin dirección IP. Tu conexión llega al servidor, como a cualquier página web, pero ni el servidor web ni el colector la escriben en ningún sitio. Esto es una promesa del servidor, no algo que se pueda comprobar desde fuera; el código del colector es público para que se pueda leer.
Así nadie, tampoco quien mantiene Ajé, puede unir dos avisos tuyos, saber que quien usa un banco también usa otro, ni hacer estadísticas por persona.
Los datos son públicos
Todo lo recibido se publica tal cual en aje.apiad.net/data/, un archivo por día, con licencia CC0. La hora en curso no aparece hasta que se cierra y se mezcla. Puedes ver en Ajustes → Privacidad, con los avisos activados, cada aviso que salió de tu teléfono, exactamente como salió.
El código que tacha, el que envía y el colector están en GitHub, y la explicación técnica en docs/telemetry.md.