Manejo de Datos
Un compañero más técnico de nuestra Política de Privacidad. Si quieres saber exactamente cómo el sistema protege el acceso a tu lectura, esta es la página.
Modelo de dos tokens
Cada pedido tiene dos tokens distintos, y hacen trabajos diferentes.
- Token de acceso — una cadena aleatoria opaca que generamos cuando se crea tu pedido. Es el parámetro en cada enlace que te enviamos. Poseerlo significa que eres el dueño del pedido.
- Token de renderizado — una firma de corta duración derivada del token de acceso más un secreto del lado del servidor, válida por diez minutos. Se usa internamente para que nuestro renderizador de PDF pueda probar que tiene autorización para obtener el HTML del reporte. Nunca se almacena.
Sin un token de renderizado válido, las rutas del reporte sirven una vista de consumidor de solo lectura en lugar de la fuente PDF completa.
Cómo se mantienen válidos los enlaces por correo
Los enlaces por correo no incrustan URLs de descarga directas. Apuntan a nuestro endpoint de re-firma, que valida tu token de acceso y luego te redirige a una nueva URL firmada de 15 minutos para el PDF en nuestro almacenamiento de objetos. Eso significa que un correo de hace un año aún funciona — pero un enlace reenviado, interceptado en tránsito, expira en 15 minutos.
Cifrado
- En tránsito: todo el tráfico es HTTPS. El sitio se sirve detrás de un CDN con terminación TLS (Vercel + Cloudflare).
- En reposo: nuestra base de datos (Neon Postgres) y el almacenamiento de objetos (Cloudflare R2) cifran los datos en reposo usando el cifrado administrado por sus respectivos proveedores.
- Secretos: las claves de firma del renderizador, los secretos de webhooks de Stripe y los tokens de proveedores se almacenan en las variables de entorno cifradas de Vercel y nunca se registran.
TTLs de tokens de un vistazo
| Token | Vida útil | Propósito |
|---|---|---|
| Token de acceso | Vida útil del pedido | Te identifica en los enlaces por correo |
| Token de renderizado | 10 minutos | Autoriza nuestro renderizador de PDF |
| URL prefirmada de R2 | 15 minutos | Descarga directa del PDF |
Qué ve la IA
El modelo narrativo recibe la carta astronómica calculada (posiciones de planetas, casas, aspectos). No recibe tu nombre, dirección de correo, ni hora y lugar exactos de nacimiento. Los números de la carta entran; la prosa sale. Usamos la API de Anthropic con su política publicada de uso de datos.
Dónde viven las cosas
| Datos | Dónde | Por cuánto tiempo |
|---|---|---|
| Fila del pedido (nombre, correo, IDs de Stripe, estado) | Neon Postgres | Hasta 7 años (impuestos / AML) |
| Datos de nacimiento y JSON de la carta calculada | Neon Postgres | Mientras el pedido esté activo; eliminado a petición |
| JSON narrativo (el texto de la lectura) | Neon Postgres | Mientras el pedido esté activo; eliminado a petición |
| Reporte PDF | Cloudflare R2 | Mientras el pedido esté activo; eliminado a petición |
| Eventos de webhook de Stripe (registro de idempotencia) | Neon Postgres | Conservados para investigación de fraude / disputas |
| Eventos de analítica del embudo | PostHog | Según la retención de PostHog |
| Reportes de errores | Sentry | Según la retención de Sentry (típicamente 30 a 90 días) |
Eliminación a petición
Cuando nos pides eliminar tus datos, removemos los datos de nacimiento, el JSON de la carta, el JSON narrativo y el objeto PDF. Conservamos un registro mínimo del pedido (tu nombre, correo, ID de sesión de Stripe, monto, marcas de tiempo) para satisfacer los requisitos de mantenimiento de registros financieros — esas filas envejecen según nuestro calendario de retención. Envía las solicitudes a hello@astra.report; las honramos dentro de 30 días.
Respaldos
Nuestros proveedores de infraestructura mantienen respaldos rotativos de sus sistemas para recuperación ante desastres. No controlamos directamente estas ventanas de respaldo; los datos eliminados pueden persistir brevemente en los respaldos del proveedor antes de envejecer según sus políticas.
Preguntas
Preguntas técnicas o de seguridad sobre esta página — hello@astra.report.