Volver al portfolio
Prizely — SaaS Multi-Inquilino de Captación de Leads Gamificada

Prizely — SaaS Multi-Inquilino de Captación de Leads Gamificada

Diseñamos y desarrollamos Prizely, una plataforma SaaS multi-inquilino en Laravel 12 que convierte la captación de leads en una experiencia de juego personalizada. Los comerciantes se registran, crean una o más marcas (cada una con su propio slug, paleta de 2 colores, logo y hasta 8 recompensas con imágenes), configuran los porcentajes de ganancia por recompensa y activan los juegos de Ruleta de la Suerte o Rasca y Gana. Cada marca vive en una URL limpia /{brand-slug} con su propia identidad visual — el jugador solo ve esa marca. Antes de jugar, los leads completan un formulario con nombre, email y teléfono (casillas de consentimiento RGPD configurables por marca); la detección de duplicados por email+teléfono previene el abuso. Los ganadores reciben un email de recompensa automatizado con códigos de canje opcionales. Los paquetes de créditos se compran mediante Stripe Checkout (facturación medida por jugada), con una página de historial de facturación autogestionada. El panel de administración muestra gráficos de jugadas por día, estadísticas de distribución de recompensas, tasas de conversión y una tabla de leads filtrable y exportable (.xlsx). Un modo de prueba aislado permite a los propietarios previsualizar juegos sin consumir créditos ni registrar leads. Para eventos presenciales, el modo quiosco bloquea el dispositivo en una sola marca con un flujo de desbloqueo exclusivo para el propietario. La plataforma es bilingüe (griego/inglés), cumple con WCAG 2.2 AA e incluye animaciones GSAP al desplazamiento, SEO con JSON-LD, alternates hreflang por página y un archivo llms.txt para visibilidad ante crawlers de IA.

Tecnologías

Laravel 12 PHP 8.5 Tailwind CSS GSAP Stripe MySQL Multilingual (el/en) JSON-LD / SEO WCAG 2.2 AA Responsive Design Kiosk Mode Email Automation

Retos

Diseñar una arquitectura multi-inquilino donde cada marca mantiene su propia identidad visual (colores, logo, recompensas) bajo una sola instalación de Laravel, construir dos motores de juego distintos (ruleta vs. rasca) que comparten un pipeline común de juego/recompensa, e implementar facturación Stripe medida que descuenta créditos por jugada sin latencia perceptible para el jugador.

Soluciones

Utilizamos el enrutamiento tenant-agnóstico de Laravel con comodines {brand} y puertas de propiedad basadas en políticas — una sola base de código, infinitas vitrinas de marca. Cada juego se construyó como un componente Blade/Alpine autónomo que alimenta un PlayController compartido que valida créditos, previene duplicados, resuelve recompensas mediante selección aleatoria ponderada y envía correos de confirmación en cola. Las sesiones de Stripe Checkout transportan metadatos (pack_id, brand_id, user_id) procesados mediante webhook; una columna de caché de saldo de créditos evita escrituras en BD por jugada. El modo quiosco utiliza una bandera de sesión + flujo de desbloqueo por PIN con intentos limitados. El panel de administración utiliza Chart.js para la distribución de jugadas/recompensas y una tabla de leads filtrable basada en DataTables con exportación .xlsx.