Bank-Grade Security Seguridad Nivel Bancario

Security & Privacy Seguridad y Privacidad

Enterprise-grade data protection with defense-in-depth architecture. Every layer encrypted, every access audited, every byte accounted for. Proteccion de datos de nivel empresarial con arquitectura de defensa en profundidad. Cada capa encriptada, cada acceso auditado, cada byte contabilizado.

End-to-End Encryption Cifrado de Extremo a Extremo

  • TLS 1.3 on all endpoints — zero plaintext transmissionTLS 1.3 en todos los endpoints — cero transmision en texto plano
  • AES-256 encryption at rest for all stored dataAES-256 cifrado en reposo para todos los datos almacenados
  • HMAC-SHA256 webhook signatures for integrity verificationHMAC-SHA256 firmas de webhooks para verificacion de integridad
  • NVMe RAID-1 mirrored storage — zero single point of failureNVMe RAID-1 almacenamiento espejado — cero punto unico de falla
  • R2 WAL — write-ahead log with 11 nines durability, zero data loss guaranteeR2 WAL — write-ahead log con 11 nueves de durabilidad, garantia cero perdida de datos
  • Self-healing monitor — 4 health probes every 60s, auto-remediation via systemctl restartMonitor auto-reparable — 4 probes de salud cada 60s, auto-remediacion via systemctl restart

Role-Based Access Control Control de Acceso Basado en Roles

  • JWT authentication with short-lived tokens + auto-refreshAutenticacion JWT con tokens de corta vida + auto-renovacion
  • 4-tier RBAC: Admin, Client Manager, Partner, ViewerRBAC de 4 niveles: Admin, Client Manager, Partner, Viewer
  • Multi-tenant isolation — partners never see other partners' dataAislamiento multi-tenant — partners nunca ven datos de otros
  • Revenue masking — partners see commissions only, never revenueEnmascaramiento de revenue — partners solo ven comisiones

Granular Consent Engine Motor de Consentimiento Granular

  • 8-bit consent bitmask per device — 7 independent consent flagsBitmask de consentimiento de 8 bits por dispositivo — 7 flags independientes
  • Query-level enforcement: DSP exports, cross-client data, and personalization gated by consentEnforcement a nivel de query: exportaciones DSP, datos cross-client y personalizacion controlados por consentimiento
  • LFPDPPP compliant (Mexico) + GDPR-ready architectureCumple con LFPDPPP (Mexico) + arquitectura lista para GDPR
  • No PII stored — only hashed identifiers in identity graphSin PII almacenado — solo identificadores hasheados en el grafo de identidad

Compression & Storage Compresion y Almacenamiento

  • ZSTD(3) + Delta + Dictionary encoding — 8-10x compression on event dataZSTD(3) + Delta + Dictionary encoding — 8-10x compresion en datos de eventos
  • ~16 bytes stored per event (vs ~130 bytes raw) — columnar analytics engine~16 bytes almacenados por evento (vs ~130 bytes crudos) — motor analitico columnar
  • Automatic TTL: 24-month retention with configurable per-consent extensionTTL automatico: retencion de 24 meses con extension configurable por consentimiento
  • Tiered storage: hot data on NVMe, cold data on distributed object storeAlmacenamiento escalonado: datos calientes en NVMe, frios en object store distribuido

Zero Data Loss Architecture Arquitectura de Cero Perdida de Datos

  • 3-tier failover: Edge buffer → KV recovery (30s) → Object store DLQ (60s)Failover de 3 niveles: Buffer en edge → recovery KV (30s) → DLQ object store (60s)
  • Warm standby — automatic failover receiver with disk-based event bufferStandby en caliente — receptor de failover automatico con buffer en disco
  • Automated daily backups to geographically distributed object storageBackups diarios automatizados a object storage geograficamente distribuido
  • Health monitoring with 5-min intervals + instant webhook alertsMonitoreo de salud con intervalos de 5 min + alertas webhook instantaneas

Audit Trail & Compliance Registro de Auditoria y Cumplimiento

  • Full access logging — every API call recorded with user, IP, and actionRegistro completo de acceso — cada llamada API registrada con usuario, IP y accion
  • Commission rate change history with user attribution and timestampsHistorial de cambios de comision con atribucion de usuario y timestamps
  • Payment state machine — validated transitions prevent invalid payment statesMaquina de estados de pagos — transiciones validadas previenen estados invalidos
  • Fraud detection engine — ML-powered scoring with automatic flaggingMotor de deteccion de fraude — scoring con ML y flagging automatico

High Availability & Disaster Recovery Alta Disponibilidad y Recuperacion ante Desastres

Multi-layered resilience deployed March 2026 — from process-level watchdogs to full disaster recovery drills. Every failure mode tested, every recovery automated. Resiliencia multicapa desplegada en marzo 2026 — desde watchdogs a nivel de proceso hasta simulacros completos de recuperacion ante desastres. Cada modo de fallo probado, cada recuperacion automatizada.

DEPLOYED 2026-03-19
RPO ~0 / RTO <2min
LIVE

Systemd Watchdog Protection Proteccion Watchdog de Systemd

Process-level health monitoring with automatic restart Monitoreo de salud a nivel de proceso con reinicio automatico
What It Protects Against Contra Que Protege
  • Deadlocked Go service — goroutine leak or mutex contention freezes event processingServicio Go bloqueado — fuga de goroutines o contention de mutex congela el procesamiento
  • Out-of-memory (OOM) — memory spike from large batch causes process to become unresponsiveSin memoria (OOM) — pico de memoria por lote grande hace que el proceso no responda
  • Silent hangs — service appears running but stops processing eventsBloqueos silenciosos — el servicio parece activo pero deja de procesar eventos
How It Works Como Funciona
  • WatchdogSec=120 — systemd kills the process if no heartbeat received within 120 secondsWatchdogSec=120 — systemd mata el proceso si no recibe heartbeat en 120 segundos
  • Restart=always — automatic restart on any exit, with 5-second cooldown between attemptsRestart=always — reinicio automatico ante cualquier fallo, con 5 segundos de espera entre intentos
  • Zero manual intervention — operates at OS level, independent of application codeCero intervencion manual — opera a nivel de SO, independiente del codigo de la aplicacion
  • Recovery time: <10 seconds — process killed and restarted before next health check cycleTiempo de recuperacion: <10 segundos — proceso eliminado y reiniciado antes del siguiente ciclo de salud
LIVE

External Health Monitor Monitor de Salud Externo

Independent monitoring from Cloudflare Workers cron — survives total server failure Monitoreo independiente desde cron de Cloudflare Workers — sobrevive a fallo total del servidor
What It Protects Against Contra Que Protege
  • Complete server crash — if the Go service crashes, its internal health monitor dies with itCaida total del servidor — si el servicio Go se cae, su monitor interno muere con el
  • Network partitions — server is up but unreachable from the internetParticiones de red — el servidor esta activo pero inaccesible desde internet
  • Tunnel failures — Cloudflare Tunnel disconnects, isolating the backendFallos de tunel — el Tunnel de Cloudflare se desconecta, aislando el backend
How It Works Como Funciona
  • CF Workers cron trigger — runs on Cloudflare's global edge, completely independent of HetznerCron trigger de CF Workers — corre en el edge global de Cloudflare, completamente independiente de Hetzner
  • Dual-target probes — checks both primary (Hetzner) and fallback (VPS) health endpointsProbes de doble objetivo — verifica endpoints de salud tanto del primario (Hetzner) como del fallback (VPS)
  • Email alerts via Mailgun — instant notification when either endpoint is unreachableAlertas por email via Mailgun — notificacion instantanea cuando cualquier endpoint es inaccesible
  • Layered with internal monitor — Go's own 60-second probes handle component-level issues; external catches total outagesEn capas con monitor interno — los probes de 60s del Go manejan problemas por componente; el externo detecta caidas totales
LIVE

WAL Integrity Verification Verificacion de Integridad del WAL

Regular validation of Write-Ahead Log files in R2 object storage Validacion regular de archivos Write-Ahead Log en almacenamiento de objetos R2
What It Protects Against Contra Que Protege
  • Silent data corruption — WAL files written with truncated or malformed JSON go undetectedCorrupcion silenciosa de datos — archivos WAL escritos con JSON truncado o malformado pasan desapercibidos
  • Compression failures — gzip decompression issues discovered only during disaster recoveryFallos de compresion — problemas de descompresion gzip descubiertos solo durante recuperacion
  • Unusable backups — discovering WAL is corrupt when you need it most defeats the purpose of having itBackups inutilizables — descubrir que el WAL esta corrupto cuando mas se necesita anula su proposito
How It Works Como Funciona
  • Downloads and decompresses WAL files from R2 storage (gzipped NDJSON format)Descarga y descomprime archivos WAL del almacenamiento R2 (formato NDJSON gzipped)
  • Validates JSON integrity — parses every line as JSON, verifying required fields (event_id, event_time, client_id)Valida integridad JSON — parsea cada linea como JSON, verificando campos requeridos (event_id, event_time, client_id)
  • Reports statistics — total files checked, events validated, corruption percentage per runReporta estadisticas — total archivos verificados, eventos validados, porcentaje de corrupcion por ejecucion
  • Catches corruption early — detects issues days or weeks before a disaster recovery scenario occursDetecta corrupcion temprano — identifica problemas dias o semanas antes de que ocurra un escenario de recuperacion
LIVE

DLQ Depth Monitoring Monitoreo de Profundidad de DLQ

Real-time Dead Letter Queue depth counters via /health endpoint Contadores de profundidad de Dead Letter Queue en tiempo real via endpoint /health
What It Protects Against Contra Que Protege
  • Queue overflow — DLQ events accumulate faster than they are replayed, eventually losing dataDesbordamiento de cola — eventos DLQ se acumulan mas rapido de lo que se reprocesan, perdiendo datos
  • Stalled replay — recovery process hangs without warning, letting the backlog grow silentlyReplay estancado — el proceso de recuperacion se bloquea sin aviso, dejando crecer el backlog
  • Persistent failures — repeated edge worker failures continuously feeding the DLQ without resolutionFallos persistentes — fallos repetidos de edge workers alimentando continuamente el DLQ sin resolucion
How It Works Como Funciona
  • Counters exposed via GET /health — S2S DLQ depth and Pixel DLQ depth reported in real-timeContadores expuestos via GET /health — profundidad de DLQ de S2S y Pixel reportada en tiempo real
  • Early warning system — alerts trigger when DLQ depth exceeds configurable thresholdsSistema de alerta temprana — alertas se disparan cuando la profundidad DLQ excede umbrales configurables
  • Separate counters per source — S2S proxy (relo-s2s-dlq) and Pixel (relo-pixel-dlq) tracked independentlyContadores separados por fuente — proxy S2S (relo-s2s-dlq) y Pixel (relo-pixel-dlq) rastreados independientemente
  • Integrates with health monitor — both internal (60s probes) and external (CF cron) check DLQ depthSe integra con monitor de salud — tanto interno (probes 60s) como externo (cron CF) verifican profundidad DLQ
LIVE

Disaster Recovery Testing Pruebas de Recuperacion ante Desastres

Automated DR drill script (drp-test.sh) — validates all failure modes Script automatizado de simulacro DR (drp-test.sh) — valida todos los modos de fallo
Failure Scenarios Tested Escenarios de Fallo Probados
  • ClickHouse failure — database process killed, validates auto-restart and event buffering during downtimeFallo de ClickHouse — proceso de base de datos eliminado, valida reinicio automatico y buffering de eventos
  • DragonflyDB failure — cache/identity store killed, verifies graceful degradation and recoveryFallo de DragonflyDB — cache/store de identidad eliminado, verifica degradacion y recuperacion
  • Go service crash — ingest process killed, confirms systemd watchdog restart and WAL integrityCrash del servicio Go — proceso de ingesta eliminado, confirma reinicio por watchdog de systemd e integridad WAL
  • Combined failures — multiple components down simultaneously, validates full recovery chainFallos combinados — multiples componentes caidos simultaneamente, valida la cadena completa de recuperacion
What It Validates Que Valida
  • Auto-restart timing — confirms all services recover within their target RTO (<2 minutes)Tiempo de reinicio automatico — confirma que todos los servicios se recuperan dentro del RTO objetivo (<2 minutos)
  • Data buffering during outage — events sent during downtime are captured by WAL and DLQ, not lostBuffering de datos durante caida — eventos enviados durante la caida son capturados por WAL y DLQ, no se pierden
  • WAL file integrity — verifies R2 WAL files are valid gzipped NDJSON with parseable JSON linesIntegridad de archivos WAL — verifica que archivos WAL de R2 son NDJSON gzipped validos con lineas JSON parseables
  • Zero data loss verification — event counts before and after drill match, proving RPO ~0Verificacion de cero perdida de datos — conteos de eventos antes y despues del simulacro coinciden, probando RPO ~0
  • Monthly execution recommended — can be run as a cron job for continuous verification of DR readinessEjecucion mensual recomendada — puede ejecutarse como cron job para verificacion continua de preparacion DR

Defense-in-Depth: 5 Layers of Protection Defensa en Profundidad: 5 Capas de Proteccion

L1
Systemd Watchdog
Process-level restart <10s Reinicio de proceso <10s
L2
Internal Monitor Monitor Interno
4 probes every 60s + auto-fix 4 probes cada 60s + auto-fix
L3
External Monitor Monitor Externo
CF cron + email alerts Cron CF + alertas email
L4
R2 WAL + DLQ
Zero data loss guarantee Garantia de cero perdida
L5
DR Drills Simulacros DR
Monthly automated testing Pruebas automatizadas mensuales

Consent Bitmask Architecture Arquitectura de Bitmask de Consentimiento

8-bit per-device consent flags — enforced at query level on every data access 8 bits de consentimiento por dispositivo — aplicados a nivel de query en cada acceso a datos

Bit 0 (0x01)
Analytics
Bit 1 (0x02)
Personalization
Bit 2 (0x04)
DSP Export
Bit 3 (0x08)
Cross-Client
Bit 4 (0x10)
Email
Bit 5 (0x20)
Push
Bit 6 (0x40)
Extended RetentionRetencion Extendida
LFPDPPP
Mexico Privacy LawLey de Privacidad Mexico
GDPR-Ready
EU Data ProtectionProteccion de Datos UE
TLS 1.3 + AES-256
End-to-End EncryptionCifrado de Extremo a Extremo
24mo TTL
Automatic Data RetentionRetencion Automatica de Datos

Regulatory Compliance Cumplimiento Regulatorio

How RELO complies with international data protection regulations — with real technical controls, not just policies. Como RELO cumple con regulaciones internacionales de proteccion de datos — con controles tecnicos reales, no solo politicas.

COMPLIANTCUMPLE
🇲🇽

LFPDPPP

Ley Federal de Proteccion de Datos Personales en Posesion de los Particulares
What It RequiresQue Requiere
  • Opt-out consent model — data collection allowed by default with privacy noticeModelo opt-out — recoleccion permitida por defecto con aviso de privacidad
  • ARCO rights — Access, Rectification, Cancellation, OppositionDerechos ARCO — Acceso, Rectificacion, Cancelacion, Oposicion
  • Purpose limitation — data used only for stated purposesLimitacion de finalidad — datos usados solo para propositos declarados
  • Data minimization — collect only what is necessaryMinimizacion — recolectar solo lo necesario
How RELO CompliesComo Cumple RELO
  • Consent bitmask defaults to 0xFF (all enabled) — respects opt-out modelBitmask de consentimiento default 0xFF (todo habilitado) — respeta modelo opt-out
  • Per-bit consent revocation — users can disable analytics, DSP, email, etc. individuallyRevocacion por bit — usuarios desactivan analytics, DSP, email, etc. individualmente
  • 24-month automatic TTL — data auto-deletes after retention periodTTL automatico de 24 meses — datos se auto-eliminan tras periodo de retencion
  • No PII storage — only hashed device IDs (IDFA/GAID/email) in identity graphSin PII almacenado — solo IDs hasheados (IDFA/GAID/email) en grafo de identidad
LIVE
🇪🇺

GDPR

General Data Protection Regulation (EU)
What It RequiresQue Requiere
  • Opt-in consent — explicit user agreement before any data collectionConsentimiento opt-in — acuerdo explicito antes de cualquier recoleccion
  • Right to erasure (Art. 17) — users can request complete data deletionDerecho al olvido (Art. 17) — usuarios pueden solicitar eliminacion total
  • Data portability (Art. 20) — export personal data in machine-readable formatPortabilidad (Art. 20) — exportar datos personales en formato legible
  • Records of processing (Art. 30) — maintain audit trail of all data activitiesRegistro de procesamiento (Art. 30) — mantener registro de todas las actividades
How RELO CompliesComo Cumple RELO
  • Consent engine supports opt-in mode — bitmask can start at 0x00 (no consent)Motor de consentimiento soporta opt-in — bitmask puede iniciar en 0x00 (sin consentimiento)
  • Art. 17 Deletion API (LIVE) — POST /api/gdpr/erase deletes from ClickHouse events + MVs, DragonflyDB identity graph, and Supabase product_sales + app_eventsAPI de Eliminacion Art. 17 (LIVE) — POST /api/gdpr/erase elimina de ClickHouse events + MVs, DragonflyDB identity graph, y Supabase product_sales + app_events
  • TTL-based auto-purge — events, audiences, and user profiles expire automatically (24-month ClickHouse TTL)Auto-purga basada en TTL — eventos, audiencias y perfiles expiran automaticamente (TTL de 24 meses en ClickHouse)
  • Immutable audit trail — access logs, commission changes, and payment events recordedRegistro de auditoria inmutable — accesos, cambios de comision y pagos registrados
  • Query-level consent enforcement — bitAnd(consent_flags, N) on every data readEnforcement de consentimiento a nivel query — bitAnd(consent_flags, N) en cada lectura
ARCHITECTURE READYARQUITECTURA LISTA
🇺🇸

CCPA / CPRA

California Consumer Privacy Act + California Privacy Rights Act
What It RequiresQue Requiere
  • Right to know — disclose what personal data is collected and whyDerecho a saber — revelar que datos se recolectan y por que
  • Right to delete — consumer request to erase personal dataDerecho a eliminar — solicitud del consumidor para borrar datos
  • Opt-out of sale — "Do Not Sell My Personal Information" signalOpt-out de venta — senal "No Vender Mi Informacion Personal"
  • Sensitive data (CPRA) — additional protections for precise geolocation, biometricsDatos sensibles (CPRA) — protecciones adicionales para geolocalizacion, biometricos
How RELO CompliesComo Cumple RELO
  • DSP export consent flag (Bit 2) — data sharing gated by explicit consent bitFlag de consentimiento DSP (Bit 2) — compartir datos controlado por bit de consentimiento
  • Identity graph uses only hashed IDs — no raw PII storedGrafo de identidad usa solo IDs hasheados — sin PII crudo almacenado
  • Multi-tenant data isolation — client_id enforced on every query, no cross-client leakageAislamiento multi-tenant — client_id en cada query, sin fuga de datos cross-client
  • Automatic data lifecycle — TTL-based deletion, no manual purge neededCiclo de vida automatico — eliminacion por TTL, sin purga manual
BUILT-ININTEGRADO

ePrivacy + ATT

EU ePrivacy Directive + Apple App Tracking Transparency
What It RequiresQue Requiere
  • ATT (iOS 14.5+) — prompt required before accessing IDFAATT (iOS 14.5+) — prompt requerido antes de acceder al IDFA
  • ePrivacy — consent for non-essential cookies and device trackingePrivacy — consentimiento para cookies no esenciales y tracking
  • SKAdNetwork — Apple's privacy-preserving attribution frameworkSKAdNetwork — framework de atribucion de Apple con privacidad
How RELO CompliesComo Cumple RELO
  • IDFA field is Nullable — gracefully handles ATT denial (null, not empty)Campo IDFA es Nullable — maneja correctamente la denegacion ATT (null, no vacio)
  • Probabilistic identity resolution — fingerprint-based fallback when IDFA unavailableResolucion probabilistica de identidad — fallback por fingerprint cuando IDFA no disponible
  • Server-side event tracking — web pixel + CAPI reduce dependency on client-side cookiesTracking server-side — pixel web + CAPI reducen dependencia de cookies del navegador

Technical Implementation Summary Resumen de Implementacion Tecnica

bitAnd()
Every query checks consent flags at the database engine level — impossible to bypassCada query verifica flags de consentimiento a nivel motor de base de datos — imposible de bypass
TTL
Automatic data expiration: 24mo events, 90d audiences, 90d user profiles — no manual cleanupExpiracion automatica: 24m eventos, 90d audiencias, 90d perfiles — sin limpieza manual
SHA-256
All identifiers hashed before storage — device IDs, emails, and fingerprints are one-way hashesTodos los identificadores hasheados antes de almacenar — IDs, emails y fingerprints son hashes unidireccionales
RLS
Row-Level Security on relational DB — database-enforced tenant isolation, even if application logic failsSeguridad a Nivel de Fila en BD relacional — aislamiento de tenant a nivel DB, incluso si la logica falla