Caso de éxito · Nurtiverse / She Is My Nutritionist

Nurtiverse — Ingeniería de un SaaS de coaching nutricional gamificado con progresión por niveles, seguimiento de calorías/macros, biblioteca de recetas y consola de interacción para coaches (Next.js + Node.js + Python + MongoDB)

Cómo UnlockLive convirtió una práctica de coaching con Zoom y PDF en un SaaS de coaching nutricional gamificado en producción — una app cliente en Next.js con seguimiento de calorías y macros, un motor de recetas y lecciones impulsado por Python, un sistema de progresión por puntos, insignias y niveles que bloquea y desbloquea contenido, y una consola de coach que muestra quién está activo, quién se estanca y qué enviar a continuación. Resultado: 2.5 veces más retención en la semana 4 y miles de clientes incorporados desde el lanzamiento.

  • SectorSaaS de salud / coaching de bienestar
  • Año2024
  • PaísEE. UU.
  • Duración5 meses
Nurtiverse — Engineering a Gamified Nutrition Coaching SaaS with Tiered Progression, Calorie/Macro Tracking, Recipe Library and a Coach Engagement Console (Next.js + Node.js + Python + MongoDB) hero screenshot

Resultados de un vistazo

  • 2.5xMejora de la retención en la semana 4 frente a la referencia de Zoom + PDF
  • 60%De los clientes registran sus comidas cada semana dentro de la app
  • 1000sDe los clientes incorporados desde el lanzamiento
  • <300msLatencia mediana del registro de comidas en la app cliente (percibida como instantánea)

El reto

She Is My Nutritionist tenía miles de clientes de pago que consumían contenido de coaching mediante videollamadas de Zoom, planes de comidas en PDF y un grupo privado de Facebook. El abandono era severo: la mayoría de los clientes desaparecía en silencio después de la semana 2 porque no había ningún sistema que los recompensara por seguir el plan, ningún lugar en la app para registrar comidas, ninguna sugerencia automática de 'qué hacer a continuación' y ninguna señal para el coach de que un cliente estaba a punto de abandonar. El coaching es un problema de hábitos, no de contenido — y las herramientas existentes resolvían el problema equivocado.

El encargo era claro: construir un SaaS real en el que la práctica pudiera incorporar a sus clientes de pago, donde el propio producto impulse la participación diaria y semanal, el coach reciba una señal en vivo de quién está activo y quién está en riesgo, y el contenido (recetas + lecciones) se bloquee y desbloquee según el progreso real en lugar de volcarse sobre el cliente de golpe.

Nuestra solución

Construimos Nurtiverse — un SaaS con Next.js + Node.js + Python + MongoDB donde la capa de gamificación es el producto, no una pegatina encima.

La app cliente en Next.js es la superficie diaria que ve cada usuario de pago: registrar una comida, escanear una receta, completar la lección de hoy, consultar su nivel. El seguimiento de calorías y macros es de primer nivel: cada entrada de alimento llega a una API de Node.js que escribe un documento estructurado `MealLog` y activa un cálculo de puntos. Mantener una racha diaria, terminar una lección, completar un objetivo semanal — los puntos se acumulan en un nivel (Bronce → Plata → Oro → Platino) que desbloquea nuevas recetas, nuevas lecciones y nuevas insignias. El contenido bloqueado es visible pero difuminado con un aviso 'se desbloquea en el nivel Plata', de modo que la progresión resulta aspiracional, no punitiva.

El motor de recetas y lecciones en Python es donde reside la propiedad intelectual del coaching. Puntúa las recetas según los macros, alergias, aversiones y nivel del cliente; genera automáticamente una lista de compras a partir de cualquier plan de comidas seleccionado; y decide qué lección mostrar a continuación según el historial de finalización y el itinerario prescrito por el coach. Las recetas incluyen vídeos para cocinar paso a paso entregados mediante una CDN con seguimiento del progreso por segundo, y las lecciones condicionan el siguiente módulo a la finalización real del vídeo (no solo a una casilla de 'marcar como hecho').

La consola del coach es el segundo producto dentro del producto. Los coaches ven a cada cliente de un vistazo: nivel actual, última comida registrada, última lección completada, tendencia semanal de participación y una alerta para quien no ha registrado una comida en 5 o más días. Desde la misma consola pueden enviar un recordatorio con plantilla, prescribir una receta, adelantar una lección, o programar un seguimiento — de modo que el coach opera con señales, no con la memoria de las videollamadas.

Por debajo de todo: suscripciones de Stripe para la facturación, Auth0 + JWT para el acceso por roles, MongoDB Atlas con esquemas Mongoose / Pydantic que mantienen los servicios de Node y Python con el mismo contrato de datos, y Sentry + Datadog para que una consulta lenta de búsqueda de recetas nunca perjudique la retención en silencio.

  • Seguimiento de calorías y macros con registro de comidas en menos de 300 ms y documentos `MealLog` estructurados
  • Progresión por niveles (Bronce → Plata → Oro → Platino) — los puntos se acumulan en un nivel que desbloquea recetas, lecciones e insignias
  • Contenido bloqueado con avisos aspiracionales de 'se desbloquea en el siguiente nivel' en lugar de muros de pago punitivos
  • Coincidencia de recetas con Python según macros, alergias, aversiones y nivel — con listas de compras generadas automáticamente a partir de cualquier plan de comidas
  • Reproductor de lecciones con seguimiento del progreso del vídeo por segundo — la siguiente lección se desbloquea solo al completar de verdad, no con una casilla
  • Consola del coach con nivel actual, último registro, tendencia semanal de participación y una alerta de inactividad a partir de 5 días sin actividad
  • Acciones del coach con un clic: enviar un recordatorio, prescribir una receta, adelantar una lección, programar un seguimiento — todo desde la misma pantalla
  • Suscripciones gestionadas por Stripe con reparto de ingresos al coach, observabilidad con Sentry + Datadog, MongoDB Atlas y acceso JWT por roles

Cómo lo construimos

  1. 01

    Descubrimiento, modelo de amenazas de retención, diseño de gamificación

    Empezamos entrevistando a 20 clientes inactivos y 5 coaches activos, y luego realizamos un modelo de amenazas de retención sobre los cuatro momentos en los que la práctica realmente perdía gente: día 3 «no sé qué comer», semana 2 «no veo progreso», semana 4 «nadie notó que dejé de venir» y el eterno «no sé qué hacer ahora». De ahí salió la especificación de gamificación: progresión por niveles, rachas diarias, recordatorios de contenido bloqueado y una consola para coaches que se activa ante la inactividad, no un añadido genérico de «agreguemos algunas insignias».

  2. 02

    Aplicación cliente en Next.js + API de engagement en Node.js

    Entregamos primero la aplicación cliente en Next.js porque la superficie diaria es donde se gana o se pierde la retención. Registro de calorías y macros, recetas, reproductor de lecciones, meta de hoy, nivel actual: todo en una sola pantalla, todo por debajo de 300 ms. La API de Node.js / Express escribe documentos estructurados `MealLog`, `LessonProgress` y `Streak` y dispara un cálculo de puntos en cada interacción, de modo que la interfaz de niveles se actualiza en la misma respuesta y no en un cron diferido.

  3. 03

    Motor de recetas y lecciones en Python, CDN de vídeo, contenido bloqueado

    Construimos el motor de recetas y lecciones en Python porque la lógica de coincidencia —puntuar una receta según macros, alergias, aversiones, nivel actual y el plan prescrito por el coach— requería bibliotecas numéricas reales. El mismo motor genera listas de la compra a partir de los planes seleccionados y elige la siguiente lección. Las recetas y lecciones incluyen video de cocina guiada e instructivo entregado mediante CDN con seguimiento del progreso por segundo; la siguiente lección no se desbloquea hasta que la anterior se ha visto realmente, no solo 'marcado como hecho'.

  4. 04

    Consola del coach, suscripciones con Stripe, observabilidad, traspaso

    La consola del coach ofrece a los coaches una señal de participación en vivo por cliente —nivel actual, último registro, tendencia semanal, indicador de inactividad— y un conjunto de acciones en un clic (recordatorio, prescribir una receta, enviar una lección, programar un seguimiento). Stripe Subscriptions gestiona la facturación con reparto de ingresos del coach. Sentry + Datadog cubren tanto la aplicación del cliente como el motor de recetas, de modo que una consulta lenta nunca destruya la retención en silencio. La práctica recibió un runbook para la creación de contenido, el ajuste de niveles y la incorporación de coaches.

Stack tecnológico

  • Next.js (React)
  • Node.js + Express
  • Python (motor de recetas y lecciones)
  • MongoDB (Atlas)
  • Esquemas Mongoose / Pydantic
  • Entrega de vídeo Mux / CDN con seguimiento del progreso
  • Stripe Subscriptions
  • Acceso basado en roles con Auth0 / JWT
  • Sentry + Datadog (observabilidad)
  • Docker
  • Desarrollo de aplicaciones web
  • Ingeniería SaaS
  • Diseño de gamificación
  • Plataforma de contenido
  • Integración de suscripciones con Stripe
  • DevOps y observabilidad
“Nuestras cifras de retención lo dicen todo. UnlockLive entendió que el coaching es un problema de hábito, no de contenido, y construyó la capa de gamificación que por fin hizo que funcionara.”
Sofia Abdelkafi · Consultor de salud y bienestar

Preguntas frecuentes

¿Cómo se mueve realmente la retención con la gamificación, en lugar de limitarse a añadir insignias cosméticas?

Tres reglas. (1) Recompense la acción que realmente desea (registrar una comida, terminar una lección, alcanzar una meta semanal), no acciones vanidosas como 'abrir la app'. (2) Haga que la progresión sea aspiracional mostrando el contenido bloqueado difuminado con un aviso de 'se desbloquea en el siguiente nivel', para que los usuarios vean lo que están persiguiendo. (3) Cierre el ciclo con el coach: una alerta de inactividad se activa tras 5 o más días de silencio y muestra una acción de un clic para 'enviar un recordatorio' en la consola del coach, de modo que un cliente que se estanca recibe un toque humano en menos de 24 horas. La combinación, y no una pieza aislada, fue lo que produjo la mejora de 2.5x en la retención de la semana 4.

¿Por qué dividir el backend entre Node.js y Python?

Node.js gestiona la API de interacción de alta frecuencia (escritura de registros de comidas, cálculo de puntos, actualizaciones de nivel, cálculo de rachas), donde más importan un único runtime por solicitud y un presupuesto de respuesta inferior a 300 ms. Python ejecuta el motor de recetas y lecciones, donde puntuar recetas según los macros, alergias, aversiones y nivel de un cliente es un trabajo genuinamente numérico que se beneficia del ecosistema de datos de Python. Ambos servicios comparten un esquema común de MongoDB aplicado mediante Mongoose en Node y Pydantic en Python, por lo que nunca se desalinean.

¿Cómo se desbloquea realmente el contenido bloqueado y qué impide que los usuarios se salten pasos?

Las lecciones se desbloquean con la finalización real del video, no con una casilla de 'marcar como hecho'. Rastreamos el progreso del video segundo a segundo a través del reproductor del CDN; la siguiente lección exige en el servidor un umbral mínimo de visualización del 90% de la lección anterior. El contenido por niveles (recetas, lecciones, insignias) se desbloquea al alcanzar umbrales de puntos, y los puntos solo se otorgan por las acciones que queremos fomentar: registrar una comida, alcanzar una meta semanal, completar una lección. No existe ningún bypass del lado del cliente que el servidor acepte.

¿Puede la plataforma cambiar su apariencia para otra práctica de coaching o marca de bienestar?

Sí: el mismo motor se ha construido deliberadamente sin depender de una marca. El tema, los textos, la biblioteca de contenido, los nombres de niveles, las reglas de puntos y el reparto de ingresos de Stripe son configurables. Una segunda práctica de coaching puede lanzarse sobre el mismo motor con su propio contenido y su propia consola de coach, sin bifurcar el código.

¿Qué pila impulsa Nurtiverse y cómo se entrega el contenido?

Una aplicación cliente en Next.js (React), una API de engagement en Node.js + Express, un motor de recetas y lecciones en Python, MongoDB Atlas como almacén principal, Stripe Subscriptions para la facturación, Auth0 + JWT para el acceso limitado por rol, video entregado mediante CDN con seguimiento del progreso por segundo y Sentry + Datadog para la observabilidad, todo contenerizado con Docker y desplegado en infraestructura en la nube.

¿Quiere un resultado como este?

Hable con el mismo equipo que construyó Nurtiverse — Ingeniería de un SaaS de coaching nutricional gamificado con progresión por niveles, seguimiento de calorías/macros, biblioteca de recetas y consola de interacción para coaches (Next.js + Node.js + Python + MongoDB). Definiremos el alcance de su proyecto, le daremos una propuesta a precio fijo y le mostraremos el caso más parecido de nuestro portafolio.

Reservar una llamada estratégica