NONSTOP Fitness Center
The gym is open 24 hours. Now the trainer is too.
I built NS Coach for NONSTOP Fitness Center: a trainer that coaches gym members over WhatsApp, the CRM where staff read every conversation, and the public site. I owned the architecture, the node-based conversation engine, and the integration with ProGym, the management system the gym already ran on.
- My role
- Architecture, backend, conversation engine and AI integration
- Sector
- Gimnasio / Fitness
- Scope
- Bot de WhatsApp con IA + CRM + Sitio web
- 13 nodes
- Editable conversation flow
- 26 machines
- Photos, zone, how-to
- 1,000+
- Exercises with steps and mistakes
- 9 questions
- New-member intake
Stack
- React (Vite)
- TypeScript
- Tailwind CSS
- React Flow
- Astro
- Node.js
- Express
- MongoDB
- MySQL (ProGym)
- Almacenamiento S3
- OpenAI GPT-4o
- WhatsApp Cloud API
- Resend
Screens
Screenshots from the live system.
Bot de WhatsApp
NS Coach, el entrenador que contesta por WhatsApp
El inbox donde el gimnasio ve, en un solo lugar, todas las conversaciones del bot. Dentro de cada una está lo que hace NS Coach: manda la rutina del día con series, repeticiones, descanso, peso inicial y la foto del aparato; propone el sustituto cuando la máquina está ocupada; marca la rutina como completada y lleva la cuenta de la semana. Con un socio nuevo arranca la entrevista de nueve preguntas —incluidas lesiones y condiciones médicas— antes de armarle nada. Desde el mismo panel se configura el perfil de negocio que los socios ven en WhatsApp.
App web
El flujo de conversación, editable en pantalla
Trece nodos y quince conexiones que definen cómo piensa el bot: entrada, validar socio, entrevista, generar el plan, rutina del día, foto del ejercicio, sustitución, pasar a un asesor. Cada nodo se ata a un handler del backend —el motor sólo ejecuta los permitidos, así que cambiar el texto nunca rompe una regla de seguridad— y trae su propio prompt. El flujo se versiona y se publica cuando queda listo.
CRM
CRM: padrón, adopción y planes semanales
El tablero mide lo que importa de un asistente: cuántos socios lo usan hoy, cuántos en la semana, cuántas rutinas se completaron y quiénes llevan más de dos días sin entrenar —esos reciben recordatorio automático. El padrón se sincroniza desde ProGym con su bitácora de cada corrida, y la ficha de cada socio concentra nivel, objetivo, estado de la membresía y si ya hizo la entrevista. Los planes semanales que generó la IA se revisan día por día, con el avance de la semana.
App web
El catálogo del que se alimenta la IA
Lo que evita que el bot recomiende cosas que el gimnasio no tiene. Los 26 aparatos llevan número, nombre en cristiano —«máquina de aperturas de pecho (mariposa)»—, zona, foto y cómo se usan. Los más de mil ejercicios traen pasos, músculo, dificultad y errores comunes, que es lo que el bot lee cuando alguien pregunta cómo se hace algo. Las rutinas base y la fototeca del gimnasio completan el material.
Sitio web
Sitio público
La cara del gimnasio: clases, horario semanal completo, planes y precios, y las preguntas frecuentes. Cada camino termina en el mismo lugar —una conversación de WhatsApp con NS Coach—, que es el canal por el que el negocio realmente atiende. Incluye el aviso de privacidad que exige la LFPDPPP y que Meta pide para operar la WhatsApp Business API.
The problem
NONSTOP is open 24 hours and has close to three thousand members. One instructor can only help one person at a time, and the questions don't come in during business hours — they come in at six in the morning and eleven at night. The gym needed to hand out routines, correct form and answer questions without that bottleneck, and without putting an instructor on every shift. It also had to happen where members already are, not in one more app nobody installs.
What I built
I built the bot on the WhatsApp Cloud API with GPT-4o. It starts by working out who's writing: it takes the phone number, looks it up in ProGym and checks the membership is current. New members get a nine-question intake — age, training history, medical conditions, injuries, goal, session length, available days — and that feeds the weekly plan; every day a member shows up, the bot sends that day's routine with sets, reps, rest, a starting weight and a photo of the machine. From there it just talks: it offers a substitute when a machine is taken, dials things back when something hurts, walks an exercise step by step, marks the session complete, and hands off to the front desk the moment the question stops being about training. On the staff side I shipped the CRM — inbox, synced roster, the AI's weekly plans, and the catalog it draws from — plus the public site, which routes every path into that same WhatsApp thread.
Technical decisions
- 01
The flow is data, not code
The conversation isn't hardcoded. Thirteen nodes and fifteen edges, edited on a React Flow canvas, versioned, then published. Copy, tone and style rules change without a backend deploy.
- 02
Whitelisted handlers, not free execution
Every node binds to a backend handler, and the engine will only run handlers on the allowed list. Editing a prompt can't break a business rule or slip past membership validation.
- 03
The AI can only recommend what's on the floor
All 26 machines and 1,000+ exercises live in an admin-managed catalog: photo, zone, steps, target muscle, common mistakes. That catalog is the model's floor — without it the bot invents equipment the gym doesn't own.
- 04
Integrating with ProGym, the legacy system
I handled membership validation and roster sync straight against ProGym's MySQL database, with a run log for every sync. The gym never had to replace the software it runs on to get the bot.
- 05
The dashboard tracks adoption, not messages
It answers what the owner actually asks: how many members used it today and this week, how many routines got completed, who hasn't trained in over two days. Those members get a morning nudge from the bot.
Next project
Toyota
Automated lead sourcing feeding a drag-and-drop sales pipeline.