Caso de estudio / Racing Pass

Un club atado al software
de un proveedor.

Una de las instituciones más grandes de Argentina manejaba cada interacción de socios a través de una caja negra externa — pagos, ticketing, accesos, datos, todo cerrado. La reemplazamos por una plataforma que el club controla y sigue corriendo.

Cliente
Racing Club Avellaneda
Industria
Deportes · socios · ticketing
Inicio
2022
Estado
En operación continua
SportsInstitutional softwareAWS
Racing Pass platform preview

El lock-in

Racing no tenía un sistema de socios. Lo alquilaba. BoleteríaVip manejaba pagos, ticketing, control de accesos y datos de socios — y Racing no podía tocar nada. Sin exports. Sin API. Sin forma de conectar los datos de socios con nada más que el club necesitara.

Cuando conocimos a Racing en 2017, los ayudamos a lanzar su primera app oficial. Se dio de baja, pero la relación quedó. Cuando volvimos a hablar, les propusimos retomar la app. Racing vino con un pedido más grande: matar al proveedor, construir la plataforma, ser dueños de los datos.

Esa decisión — construir, no comprar — es lo que hizo posible todo lo demás.

Contra qué estábamos

El desafío técnico era real, pero no era lo difícil. Lo difícil era el tiempo.

La negociación se comió la mitad del proyecto. Un plan de 12 meses se comprimió a 6. Tuvimos 2–3 meses de relevamiento solo para mapear cómo funcionaba el sistema anterior — y la mayor parte vivía en la cabeza de la gente, no en documentos. El equipo de socios cargaba las reglas de negocio en memoria muscular. Estado de cuotas. Categorías. Lógica de débito automático. Nadie lo había documentado porque simplemente funcionaba.

Y el alcance era enorme: socios, pagos, ticketing, control de accesos, reportería — con 14 categorías de socio, descuentos por grupos familiares, múltiples procesadores de tarjetas, butacas numeradas y no numeradas, molinetes con RFID, y +30 personas entre los departamentos de Racing.

  • Mapear 14 categorías de socio a un modelo de datos unificado
  • Recrear la lógica de descuentos por grupos familiares de 3/4/5+
  • Procesar batches de débito automático: Amex, Master, Visa, Prisma, First Data
  • Manejar ticketing para butacas numeradas, no numeradas, palcos, VIP y cortesía
  • Validar accesos con RFID, QR, DNI y fallback offline de molinetes
  • Coordinar con +30 personas en gerencia de socios, IT y administración

La apuesta: simplificar para salir

Teníamos dos opciones. Construir todo lo que la analista funcional había documentado — 1.342 párrafos de lógica institucional — y salir en 18 meses. O simplificar cada problema en algo publicable, perder detalle, y escalar después del lanzamiento. Elegimos lo segundo.

Eso significó cortar alcance sin piedad. Dos frontends separados en lugar de una mega-app. Débito automático marcado como menor — hasta que se convirtió en la feature más crítica. Selección de butacas 3D fuera de la fase 1. Factura electrónica postergada. Cada corte fue una decisión: cedimos completitud por la posibilidad de salir a producción.

Fue la decisión que salvó el proyecto — y la que más refinaríamos con el tiempo.

  • Dividir en dos frontends: uno para socios, otro para equipos internos
  • Postergar el mapa 3D de butacas — publicar ticketing plano primero
  • Diferir factura electrónica — agregarla después del lanzamiento
  • Simplificar la lógica de grupos familiares para cubrir el 80% el día uno
  • Aceptar imperfección en la primera versión, iterar desde producción

El lanzamiento que nadie planificó

La fecha límite era diciembre 2022. Después enero. Después febrero. Y entonces se quemó el hardware del sistema anterior — literalmente — y Racing tuvo que salir a producción con lo que tuviera listo.

No debería haber funcionado. Lo probamos en la cancha durante el primer partido, refinando las queries de control de accesos entre tiempos. En el segundo partido, las queries ya respondían rápido. En el tercero, los socios pasaban por los molinetes sin incidentes. La migración de datos corría de noche: exportábamos del sistema viejo al cierre y cargábamos al nuevo antes de la mañana.

La parte más cruda fue el registro de socios — lo primero que un socio nuevo toca. Fue lo último que queríamos publicar sin terminar. Pero lo hicimos, y lo arreglamos en vivo.

Por qué serverless bancó

Elegimos serverless-first en AWS porque el equipo necesitaba publicar módulos nuevos constantemente — pagos un mes, control de accesos el siguiente, features de IA un año después. Una infraestructura fija habría sido un cuello de botella en cada iteración. Costo variable significaba pagar por partidos y renovaciones, no por servers idle. Bajo DevOps significaba que una sola persona podía correr todo.

Una sola Aurora RDS MySQL en todos los módulos mantuvo la integración simple. La arquitectura absorbió picos de tráfico por partidos, venta de entradas y renovaciones — llegamos al límite y fuimos puliendo el setting de la DB con meses de carga real.

Si lo hiciéramos hoy, el frontend lo haríamos en Next.js sobre Vercel. Las decisiones de backend envejecieron bien.

  • Rutear la web de socios por CloudFront → API Gateway → Lambda → Aurora
  • Autenticar el mobile por API Gateway → Lambda → Cognito
  • Servir el backoffice por API Gateway → Lambda → S3
  • Integrar pagos, control de accesos, logística y notificaciones
  • Cachear con Redis, molinetes con AWS IoT, email con SES, IA con Bedrock

Qué cambió para el club

Antes: un proveedor era dueño de los datos, los canales y el roadmap. Racing no podía conectar su sistema de socios con nada — ni la app, ni la web, ni el software de contabilidad.

Después: Racing es dueño de todo. Los socios se autogestionan desde la webapp y la app oficial. Los equipos internos corren cada operación desde un solo backoffice — débito automático, reportería, facturación, ticketing, control de accesos. El club decide qué conectar y cuándo. Sin dependencia de proveedores.

La plataforma corre socios, ticketing, accesos al estadio, colonias, deportes, rental de canchas, estacionamientos y administración. Sigue en producción. Sigue creciendo.

  • Eliminar la dependencia del proveedor — el club es dueño de sus datos y canales
  • Unificar socios, pagos, ticketing y accesos en un solo sistema
  • Automatizar débito automático y reportería compleja
  • Centralizar toda la información institucional en una base de datos
  • Abrir canales de autogestión para socios en web y mobile
  • Publicar módulos nuevos continuamente — la plataforma sigue creciendo

Qué haríamos distinto

Habríamos presionado más fuerte en el timeline de la negociación. El relevamiento se comió la mitad del proyecto. La próxima vez, correríamos discovery y desarrollo en paralelo desde la semana uno — publicar las partes conocidas mientras seguimos mapeando las desconocidas.

También habríamos lanzado el registro de socios antes. Fue la parte más cruda del lanzamiento accidental, y era lo primero que un socio nuevo tocaba. Eso nunca debió ser el eslabón más débil.

El momento en que se hizo real

Después del segundo partido, alrededor del 14–17 de febrero de 2023. Los molinetes funcionaban. Las queries respondían rápido. Los socios entraban. Nadie se quejó.

Racing valoró la confianza y la flexibilidad por sobre todo. El proyecto se destacó por el desafío, la falta de tiempo y la escala. PATMOS aprendió escalabilidad y velocidad de equipo para proyectos críticos — y redefinió todo: producto, arquitectura y operación.

AWS architecture

Serverless-first en AWS — cada módulo es una Lambda detrás de un API Gateway, compartiendo una sola Aurora RDS MySQL. Redis para cache, AWS IoT para molinetes, SES para email, Bedrock para IA. Costo variable, bajo DevOps, diseñada para absorber picos de día de partido.

Arquitectura serverlessReact y React NativeAWS LambdaAmazon API GatewayAWS CognitoAurora RDSRedisAmazon S3Amazon CloudFrontAWS IoTAWS SESAWS Bedrock

Security and access

Identidad centralizada, permisos por rol, credenciales dinámicas y auditoría en cada workflow de socios y administración.

Operational impact

  • Eliminar la dependencia del proveedor — el club es dueño de sus datos
  • Unificar socios, pagos, ticketing y control de accesos
  • Automatizar débito automático y reportería compleja
  • Abrir canales de autogestión en web y mobile
  • Absorber picos de tráfico de día de partido sin escalar manualmente
  • Publicar módulos nuevos continuamente desde un solo backoffice

Escalar una institución deportiva no es un problema de tráfico. Es un problema de coordinación.

El equipo

Las personas que construyeron Racing Pass desde cero. +30 personas pasaron por el proyecto: analistas, developers, diseñadores y product owners. Estos son los que lo llevaron a producción.

Israel Wegierski

Israel Wegierski

Founder & Arquitecto

Hizo que todo pasara. Estrategia de producto, arquitectura y las decisiones que mantuvieron el proyecto vivo cuando se acabó el tiempo.

Ezequiel Conde

Ezequiel Conde

Product Owner (Racing)

Product Owner del lado de Racing. Tomó ownership de la plataforma post-entrega.

Celeste Riquelme

Celeste Riquelme

Analista Funcional

La persona que hizo que todo pasara al principio. Escribió el documento de diseño funcional que mapeó todo el sistema anterior.

Patricio Nuñez

Patricio Nuñez

Full Stack Developer

El que más código aportó. Ticketing, portal de socios, backoffice.

Andy Orlandi

Andy Orlandi

Product / UX Designer

UX design e investigación. Ex-Aerolab. Buenos Aires.

Sebastián Vitis

Sebastián Vitis

UX Designer

10+ años en diseño digital. Hoy UX Designer en Mercado Libre, docente FADU UBA.

Rocío Martin

Rocío Martin

Mobile Developer

App React Native para socios.

Nico Seguro

Nico Seguro

React Developer

Hoy Founder & CAIO @ Fardo, enfocado en IA.

Augusto Rossetti Lorea

Augusto Rossetti Lorea

Full Stack Developer

Laburó junto a Nico Seguro en backoffice y portal de socios.

Diego Ortega

Diego Ortega

Backend Engineer

Arquitectura de APIs, NestJS.

Ignacio Miranda

Ignacio Miranda

Developer

Product Engineer.

Gonzalo Di Mario

Gonzalo Di Mario

Frontend Developer

Backoffice y portal de socios. Ayudó a publicar las web apps.

Ariel Sotelo

Ariel Sotelo

Full Stack Developer

Backend + frontend en toda la plataforma.

Damián Caceres

Damián Caceres

Database Administrator

Primer DBA del proyecto. Diseñó el modelo de datos inicial (MySQL Workbench).

Sebastián Marra

Sebastián Marra

Database Administrator

Oracle DBA. Pieza clave del soporte actual — administra la base de datos en producción.