Bonuxo: una plataforma de fidelización multi-tenant en producción
Diseñé y opero Bonuxo: puntos, sellos, premios y tarjetas en Apple y Google Wallet, con una API pública para sistemas POS. Este caso cubre su arquitectura, su confiabilidad y Nux, el asistente con IA que todavía está en construcción.

Qué es y en qué estado está
Bonuxo es una plataforma de fidelización multi-tenant: puntos, sellos, premios, ruleta de premios, estadísticas y tarjetas en Apple y Google Wallet. Tiene una API pública para sistemas POS, integraciones con e-commerce y facturación recurrente con MercadoPago. Está en producción en bonuxo.com, con la interfaz en 4 idiomas.
La plataforma está en producción. Nux, el asistente con IA del panel, está en construcción: su capa de LLM está construida y probada, pero apagada en producción. Más abajo hay una sección propia con su estado.
El problema que resuelve
Un negocio que quiere fidelizar clientes necesita tres cosas a la vez: reglas de recompensa configurables, que esa fidelidad viva en la billetera del teléfono del cliente y que se conecte con la caja donde se cobra. Bonuxo resuelve las tres sobre una sola plataforma, compartida por muchos negocios y con los datos de cada uno separados.
Arquitectura
El backend sigue Clean Architecture en 4 proyectos: Domain, Application, Infrastructure y Api. Corre sobre .NET 8 con PostgreSQL 16 y Redis 7; los frontends son React.
El aislamiento entre negocios se hace con filtros globales de consulta de EF Core sobre cada entidad con tenant, combinados con borrado lógico y custodiados por un test de arquitectura. El tenant sale de un claim del JWT, y el esquema de API key para POS emite el mismo claim, así que las dos vías de entrada llegan al dominio con la misma forma.
- Redis se usa para caché detrás de un decorador resiliente (una caída de Redis se vuelve un cache miss, no un error 500), contadores de límite de tasa, un contador antifraude, un lock distribuido y sondas de salud.
- El despliegue son 9 aplicaciones en Coolify: backend, 6 frontends, Postgres y Redis. Si falta un secreto requerido, el deploy aborta. Hay endpoints de liveness y readiness.
Motor de fidelidad
Hay varias estrategias de fidelidad: sellos, cashback, descuento progresivo, membresía y puntos (por visita o por monto). Todas pasan por un único núcleo de acumulación.
- Bloqueo de fila con FOR UPDATE.
- Garantía de exactly-once con una clave económica y un índice UNIQUE parcial.
- Un outbox y reversas tipadas.
- Un job de vencimiento de puntos: mínimo de 30 días, con avisos a los 30 y a los 7 días.
- La ruleta de premios usa un generador aleatorio criptográfico, una compuerta antifraude en Redis y una auditoría en Postgres.
Tarjetas en Apple y Google Wallet
Apple Wallet: el .pkpass se firma como PKCS7 desacoplado con SHA-256. Implementa el servicio web de registro de dispositivos de Apple, con un push APNs por HTTP/2 después de cada transacción y un monitor de vencimiento del certificado.
Google Wallet: usa un JWT de guardado firmado con RS256, actualizaciones del objeto por patch y una sincronización geográfica periódica.
API para POS y e-commerce
- API keys con prefijos live y test. Solo se guarda el hash SHA-256, y el esquema de autenticación es independiente del de JWT.
- Límites por clave (600 por minuto) y por IP, un Idempotency-Key opcional con retención de 24 horas, ventas exactly-once y un tope de payload de 256 KB.
- Contrato OpenAPI 3.0.3, versión 1.3.0, con 10 paths.
- Integraciones verificadas en el código: Fudo (POS), TiendaNube (e-commerce) y un adaptador de MercadoPago POS, con polling y reconciliación.
Hice una prueba de carga contra producción con una clave sandbox el 30 de septiembre de 2026: hasta 900 solicitudes por minuto, 3084 solicitudes y 0 errores, con un p95 de 66 a 126 ms por endpoint. La prueba encontró que el límite por clave no se estaba aplicando; lo corregí en el código.
Cobros con MercadoPago
La facturación recurrente usa suscripciones preapproval. La firma del webhook se verifica con HMAC-SHA256 en tiempo constante, y cada webhook se reclama en dos fases de forma idempotente, con manejo de eventos duplicados y fuera de orden. Un servicio de reconciliación de solo lectura compara las suscripciones guardadas con las de MercadoPago.
Seguridad y observabilidad
- JWT de acceso de 15 minutos y refresh tokens de 7 días guardados con hash, sin tolerancia de reloj. Contraseñas con BCrypt y bloqueo por tenant.
- 2FA con TOTP y códigos de recuperación.
- RBAC con 4 roles más permisos por miembro y límites por capacidad del plan.
- Auditoría de las escrituras privilegiadas, sin guardar los cuerpos.
- Cabeceras de seguridad con HSTS preload y CSP. AES-256-GCM para API keys y datos personales. Los datos personales se depuran antes de enviarlos a Sentry.
- La configuración falla al arrancar si falta algo.
- Observabilidad con Sentry, con etiquetas de tenant y de correlación, y logs estructurados con Serilog.
Servidor MCP propio para operar la base
Escribí un servidor MCP propio, en TypeScript, para operaciones sobre la base de datos. Lo uso en desarrollo y operación. Tiene 5 herramientas: escritura DML con guardas, explain, generación de scripts, DDL de una lista blanca y aplicación de migraciones con control por checksum.
Las guardas son una compuerta por entorno, un bloqueo de producción, un token de confirmación, una lista de bloqueo de DDL, solo DML, timeouts de sentencia y de locks, y rollback automático.
Nux: el asistente con IA, en construcción
Nux es el asistente del panel para el dueño y el personal. Está en construcción. La capa determinista (recorridos guiados, ayuda contextual y un router de 23 intenciones) está activa para todos los negocios.
El agente con LLM usa tool calling con 19 herramientas: 12 de lectura, 5 de confirmación y 2 de confirmación fuerte. Las escrituras requieren confirmación humana y respetan los permisos del usuario, con un máximo de 8 rondas de herramientas por turno. El proveedor es intercambiable entre OpenAI y Anthropic, y hay topes de costo por plan y un registro de uso.
Qué está en producción y qué no
- En producción: la plataforma de fidelización, los wallets, la API para POS, la facturación con MercadoPago y el servidor MCP.
- En producción para todos los negocios: la capa determinista de Nux.
- En construcción: el agente con LLM de Nux, apagado en producción, y su integración con LangGraph, LangChain, RAG y Langfuse.
Stack
- .NET
- PostgreSQL
- Redis
- React
- Docker
- Coolify