Étude de cas · Nurtiverse / She Is My Nutritionist

Nurtiverse — Conception d’un SaaS de coaching nutritionnel ludifié avec progression par niveaux, suivi des calories/macros, bibliothèque de recettes et console d’engagement des coachs (Next.js + Node.js + Python + MongoDB)

Comment UnlockLive a transformé une pratique de coaching par Zoom et PDF en un SaaS de coaching nutritionnel ludifié en production — une application cliente Next.js avec suivi des calories + macros, un moteur de recettes et de leçons propulsé par Python, un système de points/badges/niveaux qui verrouille et déverrouille le contenu, et une console de coach qui montre qui est actif, qui stagne et quoi envoyer ensuite. Résultat : une rétention à la semaine 4 multipliée par 2,5 et des milliers de clients intégrés depuis le lancement.

  • SecteurSaaS santé / coaching bien-être
  • Année2024
  • PaysÉtats-Unis
  • Durée5 mois
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

Résultats en un coup d'œil

  • 2.5xGain de rétention à la semaine 4 par rapport à la référence Zoom + PDF
  • 60%Des clients enregistrent leurs repas chaque semaine dans l’application
  • 1000+Des clients intégrés depuis le lancement
  • <300msLatence médiane d’enregistrement d’un repas sur l’application client (perçue comme instantanée)

Le défi

She Is My Nutritionist comptait des milliers de clientes payantes consommant du contenu de coaching via des appels Zoom, des plans de repas en PDF et un groupe Facebook privé. L’abandon était sévère : la plupart des clientes disparaissaient discrètement après la semaine 2, faute d’un système les récompensant de suivre le plan, d’un endroit dans l’application pour consigner les repas, d’une mise en avant automatique de « quoi faire ensuite » et d’un signal pour la coach qu’une cliente était sur le point de décrocher. Le coaching est un problème d’habitude, pas de contenu — et la chaîne d’outils existante résolvait le mauvais problème.

La demande était claire : construire un vrai SaaS sur lequel la pratique pourrait placer ses clientes payantes, où le produit lui-même stimule l’engagement quotidien et hebdomadaire, où la coach reçoit un signal en direct sur qui est active et qui est à risque, et où le contenu (recettes + leçons) se verrouille et se déverrouille selon la progression réelle au lieu d’être déversé d’un coup sur la cliente.

Notre solution

Nous avons construit Nurtiverse — un SaaS Next.js + Node.js + Python + MongoDB où la couche de ludification est le produit, et non un autocollant par-dessus.

L’application cliente Next.js est l’interface quotidienne que voit chaque utilisatrice payante : consigner un repas, scanner une recette, terminer la leçon du jour, consulter son niveau. Le suivi des calories et des macros est de premier ordre : chaque aliment saisi atteint une API Node.js qui écrit un document `MealLog` structuré et déclenche un calcul de points. Atteindre une série quotidienne, terminer une leçon, accomplir un objectif hebdomadaire — les points s’accumulent en un niveau (Bronze → Argent → Or → Platine) qui débloque de nouvelles recettes, de nouvelles leçons et de nouveaux badges. Le contenu verrouillé est visible mais flouté avec un message « débloquer au niveau Argent » — la progression est ainsi motivante, pas punitive.

Le moteur de recettes et de leçons en Python est le lieu où réside la propriété intellectuelle du coaching. Il note les recettes selon les macros, allergies, aversions et niveau d’une cliente ; génère automatiquement une liste de courses à partir de tout plan de repas sélectionné ; et décide quelle leçon présenter ensuite selon l’historique d’achèvement et le parcours prescrit par la coach. Les recettes comprennent des vidéos à suivre en cuisinant, diffusées via un CDN avec suivi de progression à la seconde, et les leçons verrouillent le module suivant tant que la vidéo n’est pas réellement terminée (et non une simple case « marquer comme fait »).

La console de la coach est le deuxième produit à l’intérieur du produit. Les coachs voient chaque cliente d’un coup d’œil : niveau actuel, dernier repas consigné, dernière leçon terminée, tendance d’engagement d’une semaine à l’autre, et un signal pour toute cliente n’ayant pas consigné de repas depuis 5 jours ou plus. Depuis la même console, elles peuvent envoyer un rappel type, prescrire une recette, avancer une leçon hors séquence ou planifier un suivi — la coach agit ainsi sur des signaux, et non sur sa mémoire des appels Zoom.

En arrière-plan : abonnements Stripe pour la facturation, Auth0 + JWT pour l’accès par rôle, MongoDB Atlas avec des schémas Mongoose / Pydantic qui maintiennent les services Node et Python sur le même contrat de données, et Sentry + Datadog pour qu’une requête de recherche de recettes lente ne tue jamais silencieusement la rétention.

  • Suivi des calories + macros avec saisie des repas en moins de 300 ms et documents `MealLog` structurés
  • Progression par niveaux (Bronze → Argent → Or → Platine) — les points s’accumulent en un niveau qui débloque recettes, leçons et badges
  • Contenu verrouillé avec des messages motivants « débloquer au niveau suivant » plutôt que des paywalls punitifs
  • Appariement de recettes propulsé par Python selon macros, allergies, aversions et niveau — avec listes de courses générées automatiquement à partir de tout plan de repas
  • Lecteur de leçons avec suivi de progression vidéo à la seconde — la leçon suivante ne se débloque qu’à l’achèvement réel, pas par une case à cocher
  • Console de la coach avec niveau actuel, dernier journal, tendance d’engagement d’une semaine à l’autre et signal d’inactivité déclenché après 5 jours ou plus de silence
  • Actions de coach en un clic : envoyer un rappel, prescrire une recette, avancer une leçon, planifier un suivi — le tout depuis le même écran
  • Abonnements gérés par Stripe avec partage des revenus de la coach, observabilité Sentry + Datadog, MongoDB Atlas, accès JWT par rôle

Comment nous l'avons construit

  1. 01

    Découverte, modèle de menaces de rétention, conception de la gamification

    Nous avons commencé par interroger 20 anciens clients et 5 coachs actifs, puis nous avons réalisé un modèle de menaces de rétention sur les quatre moments où la structure perdait réellement ses clients : le jour 3 « je ne sais pas quoi manger », la semaine 2 « je ne vois pas de progrès », la semaine 4 « personne n'a remarqué que j'ai arrêté », et le perpétuel « je ne sais pas quoi faire ensuite ». De là est née la spécification de gamification : progression par paliers, séries quotidiennes, incitations sur le contenu verrouillé et console de coach qui se déclenche en cas d'inactivité, et non un simple ajout générique de badges.

  2. 02

    Application client Next.js + API d'engagement Node.js

    Nous avons livré d'abord l'application cliente Next.js, car c'est sur l'écran du quotidien que la rétention se gagne ou se perd. Suivi des calories et des macros, recettes, lecteur de leçons, objectif du jour, palier actuel : tout sur un seul écran, tout en moins de 300 ms. L'API Node.js / Express écrit des documents structurés `MealLog`, `LessonProgress` et `Streak` et déclenche un calcul de points à chaque interaction, de sorte que l'interface des paliers se met à jour dans la même réponse, et non via une tâche cron différée.

  3. 03

    Moteur de recettes et de leçons Python, CDN vidéo, contenu verrouillé

    Nous avons développé le moteur de recettes et de leçons en Python, car la logique d'appariement (évaluer une recette selon les macros, les allergies, les aversions, le niveau actuel et le parcours prescrit par le coach) exigeait de véritables bibliothèques numériques. Le même moteur génère des listes de courses à partir des plans sélectionnés et choisit la leçon suivante. Les recettes et leçons sont livrées avec des vidéos de cuisine guidée et pédagogiques diffusées via CDN, avec un suivi de progression à la seconde près ; la leçon suivante ne se débloque que lorsque la précédente a réellement été visionnée, et non simplement « marquée comme terminée ».

  4. 04

    Console coach, abonnements Stripe, observabilité, passation

    La console des coachs offre à chacun un signal d'engagement en direct par client (niveau actuel, dernier suivi, tendance d'une semaine sur l'autre, indicateur d'inactivité) ainsi qu'un ensemble d'actions en un clic (relancer, prescrire une recette, pousser une leçon, planifier un point). Stripe Subscriptions gère la facturation avec un partage des revenus avec les coachs. Sentry + Datadog couvrent à la fois l'application client et le moteur de recettes, afin qu'une requête lente ne tue jamais silencieusement la rétention. Le cabinet a reçu un guide d'exploitation pour la création de contenu, le réglage des niveaux et l'intégration des coachs.

Stack technique

  • Next.js (React)
  • Node.js + Express
  • Python (moteur de recettes et de leçons)
  • MongoDB (Atlas)
  • Schémas Mongoose / Pydantic
  • Diffusion vidéo Mux / CDN avec suivi de progression
  • Stripe Subscriptions
  • Accès par rôle Auth0 / JWT
  • Sentry + Datadog (observabilité)
  • Docker
  • Développement d’applications web
  • Ingénierie SaaS
  • Conception de la ludification
  • Plateforme de contenu
  • Intégration des abonnements Stripe
  • DevOps et observabilité
“Nos chiffres de rétention parlent d’eux-mêmes. UnlockLive a compris que le coaching est un problème d’habitude, et non de contenu, et a construit la couche de gamification qui a enfin permis de l’ancrer.”
Sofia Abdelkafi · Consultant santé et bien-être

Questions fréquentes

Comment faire réellement progresser la rétention avec la gamification, au lieu de simplement ajouter des badges décoratifs ?

Trois règles. (1) Récompensez l’action que vous voulez réellement (enregistrer un repas, terminer une leçon, atteindre un objectif hebdomadaire), et non des actions de vanité comme « ouvrir l’app ». (2) Rendez la progression motivante en affichant le contenu verrouillé flouté, avec une invitation « débloquez-le au palier suivant », pour que les utilisateurs voient ce qu’ils visent. (3) Bouclez la boucle avec le coach : un indicateur d’inactivité se déclenche après 5 jours ou plus de silence et fait apparaître une action « envoyer un rappel » en un clic dans la console du coach, afin qu’un client qui décroche reçoive une touche humaine sous 24 heures. C’est la combinaison, et non un élément isolé, qui a produit le gain de rétention de 2,5x à la semaine 4.

Pourquoi répartir le backend entre Node.js et Python ?

Node.js gère l’API d’engagement à haute fréquence (écriture des journaux de repas, calcul des points, mises à jour de palier, calcul des séries), là où un runtime unique par requête et un budget de réponse inférieur à 300 ms comptent le plus. Python exécute le moteur de recettes et de leçons, où l’évaluation des recettes selon les macros, les allergies, les aversions et le palier d’un client relève vraiment du calcul numérique et profite de l’écosystème de données Python. Les deux services partagent un schéma MongoDB commun, imposé par Mongoose côté Node et par Pydantic côté Python, si bien qu’ils ne divergent jamais.

Comment le contenu verrouillé se débloque-t-il vraiment, et qu'est-ce qui empêche les utilisateurs de sauter des étapes ?

Les leçons se débloquent sur la fin réelle de la vidéo, et non sur une case « marquer comme terminé ». Nous suivons la progression de la vidéo seconde par seconde via le lecteur CDN ; la leçon suivante impose côté serveur un seuil minimum de visionnage de 90 % de la leçon précédente. Le contenu par paliers (recettes, leçons, badges) se débloque selon des seuils de points, et les points ne sont attribués que pour les actions que nous voulons encourager : enregistrer un repas, atteindre un objectif hebdomadaire, terminer une leçon. Le serveur n’acceptera aucun contournement côté client.

La plateforme peut-elle être redéfinie visuellement pour un autre cabinet de coaching ou une autre marque de bien-être ?

Oui : le même moteur a été volontairement conçu sans dépendance à une marque. Le thème, les textes, la bibliothèque de contenus, les noms de niveaux, les règles de points et la répartition des revenus Stripe sont tous configurables. Un second cabinet de coaching peut être lancé sur le même moteur avec son propre contenu et sa propre console de coachs, sans dupliquer la base de code.

Quelle pile technique alimente Nurtiverse et comment le contenu est-il diffusé ?

Une application cliente Next.js (React), une API d'engagement Node.js + Express, un moteur de recettes et de leçons en Python, MongoDB Atlas comme base principale, Stripe Subscriptions pour la facturation, Auth0 + JWT pour l'accès par rôle, des vidéos diffusées via CDN avec suivi de progression à la seconde, et Sentry + Datadog pour l'observabilité, le tout conteneurisé avec Docker et déployé sur une infrastructure cloud.

Envie d'un résultat comme celui-ci ?

Parlez à l'équipe qui a construit Nurtiverse — Conception d’un SaaS de coaching nutritionnel ludifié avec progression par niveaux, suivi des calories/macros, bibliothèque de recettes et console d’engagement des coachs (Next.js + Node.js + Python + MongoDB). Nous définirons le périmètre de votre projet, vous remettrons une proposition à prix fixe et vous présenterons l'exemple le plus proche de notre portfolio.

Réserver un appel stratégique