Case Study · Nurtiverse / She Is My Nutritionist

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)

How UnlockLive turned a Zoom-and-PDF coaching practice into a production gamified nutrition coaching SaaS — a Next.js client app with calorie + macro tracking, a Python-powered recipe and lesson engine, a points/badges/tier progression system that locks and unlocks content, and a coach console that surfaces who is active, who is stalling, and what to send next. Result: 2.5x lift in week-4 retention and thousands of clients onboarded since launch.

  • IndustryHealthcare / Wellness Coaching SaaS
  • Year2024
  • CountryUSA
  • Duration5 months
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

At-a-glance results

  • 2.5xLift in week-4 retention vs. the Zoom + PDF baseline
  • 60%Of clients log meals weekly inside the app
  • 1000sOf clients onboarded since launch
  • <300msMedian meal-log latency on the client app (perceived as instant)

The challenge

She Is My Nutritionist had thousands of paying clients consuming coaching content over Zoom calls, PDF meal plans, and a private Facebook group. Drop-off was severe: most clients quietly disappeared after week 2 because there was no system that rewarded them for sticking with the plan, no in-app place to log meals, no automatic surface of 'what to do next', and no signal to the coach that a client was about to lapse. Coaching is a habit problem, not a content problem — and the existing toolchain was solving the wrong one.

The ask was clear: build a real SaaS the practice could put paying clients on, where the product itself drives daily and weekly engagement, the coach gets a live signal of who is active and who is at risk, and content (recipes + lessons) gates and unlocks based on real progress instead of being dumped on the client all at once.

Our solution

We built Nurtiverse — a Next.js + Node.js + Python + MongoDB SaaS where the gamification layer is the product, not a sticker on top of it.

The Next.js client app is the daily surface every paying user sees: log a meal, scan a recipe, complete today's lesson, check your tier. Calorie and macro tracking are first-class: every food entry hits a Node.js API that writes a structured `MealLog` document and triggers a points calculation. Hit a daily streak, finish a lesson, complete a weekly goal — points roll up into a tier (Bronze → Silver → Gold → Platinum) that unlocks new recipes, new lessons, and new badges. Locked content is visible but blurred with a 'unlock at Silver tier' nudge — so progression is aspirational, not punitive.

The Python recipe + lesson engine is where coaching IP lives. It scores recipes against a client's macros, allergies, dislikes, and tier; auto-generates a grocery list from any selected meal plan; and decides which lesson to surface next based on completion history and the coach's prescribed track. Recipes ship with cook-along videos delivered through a CDN with per-second progress tracking, and lessons gate the next module on real video completion (not just a 'mark as done' checkbox).

The coach console is the second product inside the product. Coaches see every client at a glance: current tier, last meal logged, last lesson completed, week-over-week engagement trend, and a flag on anyone who hasn't logged a meal in 5+ days. From the same console they can send a templated nudge, prescribe a recipe, push a lesson out of order, or schedule a check-in — so the coach is operating on signal, not on Zoom-call memory.

Underneath it all: Stripe subscriptions for billing, Auth0 + JWT for role-scoped access, MongoDB Atlas with Mongoose / Pydantic schemas keeping the Node and Python services on the same data contract, and Sentry + Datadog so a slow recipe-search query never silently kills retention.

  • Calorie + macro tracking with sub-300ms meal logging and structured `MealLog` documents
  • Tiered progression (Bronze → Silver → Gold → Platinum) — points roll up to a tier that unlocks recipes, lessons, and badges
  • Locked content with aspirational 'unlock at next tier' nudges instead of punitive paywalls
  • Python-powered recipe matching against macros, allergies, dislikes, and tier — with auto-generated grocery lists from any meal plan
  • Lesson player with per-second video progress tracking — next lesson unlocks only on real completion, not a checkbox
  • Coach console with current tier, last log, week-over-week engagement trend, and an inactivity flag fired at 5+ days silent
  • One-click coach actions: send a nudge, prescribe a recipe, push a lesson, schedule a check-in — all from the same screen
  • Stripe-managed subscriptions with coach revenue-share split, Sentry + Datadog observability, MongoDB Atlas, role-scoped JWT access

How we built it

  1. 01

    Discovery, retention threat model, gamification design

    We started by interviewing 20 lapsed clients and 5 active coaches, then ran a retention threat model on the four moments where the practice was actually losing people: day-3 'I don't know what to eat', week-2 'I don't see progress', week-4 'no one noticed I stopped', and the perpetual 'I don't know what to do next'. Out of that came the gamification spec: tiered progression, daily streaks, locked content nudges, and a coach console that fires on inactivity — not a generic 'add some badges' bolt-on.

  2. 02

    Next.js client app + Node.js engagement API

    We shipped the Next.js client app first because the daily surface is where retention is won or lost. Calorie + macro logging, recipe browse, lesson player, today's goal, current tier — all on one screen, all sub-300ms. The Node.js / Express API writes structured `MealLog`, `LessonProgress`, and `Streak` documents and triggers a points calculation on every interaction so the tier UI updates in the same response, not on a delayed cron.

  3. 03

    Python recipe + lesson engine, video CDN, locked content

    We built the recipe + lesson engine in Python because the matching logic — score a recipe against macros, allergies, dislikes, current tier, and the coach's prescribed track — wanted real numerical libraries. The same engine generates grocery lists from selected plans and chooses the next lesson. Recipes and lessons ship with cook-along / instructional video delivered via CDN with per-second progress tracking; the next lesson does not unlock until the previous one is genuinely watched, not 'marked as done'.

  4. 04

    Coach console, Stripe subscriptions, observability, hand-off

    The coach console gives coaches a live engagement signal per client — current tier, last log, week-over-week trend, inactivity flag — and a one-click action set (nudge, prescribe a recipe, push a lesson, schedule a check-in). Stripe Subscriptions handle billing with a coach-revenue-share split. Sentry + Datadog cover both the client app and the recipe engine so a slow query never silently kills retention. The practice got a runbook for content authoring, tier tuning, and coach onboarding.

Tech stack

  • Next.js (React)
  • Node.js + Express
  • Python (recipe + lesson engine)
  • MongoDB (Atlas)
  • Mongoose / Pydantic schemas
  • Mux / CDN video delivery with progress tracking
  • Stripe Subscriptions
  • Auth0 / JWT role-based access
  • Sentry + Datadog (observability)
  • Docker
  • Web App Development
  • SaaS Engineering
  • Gamification Design
  • Content Platform
  • Stripe Subscription Integration
  • DevOps & Observability
Our retention numbers tell the whole story. UnlockLive understood that coaching is a habit problem, not a content problem, and built the gamification layer that finally made it stick.
Sofia Abdelkafi · Health & Wellness Consultant

Frequently asked questions

How do you actually move retention with gamification — instead of just adding cosmetic badges?

Three rules. (1) Reward the action you actually want (logging a meal, finishing a lesson, hitting a weekly goal) — not vanity actions like 'open the app'. (2) Make progression aspirational by showing locked content blurred with a 'unlock at next tier' nudge, so users see what they're working toward. (3) Close the loop with the coach: an inactivity flag fires at 5+ days silent and surfaces a one-click 'send a nudge' action in the coach console — so a stalling client gets a human touch within 24 hours. The combination, not any single piece, is what produced the 2.5x week-4 retention lift.

Why split the backend between Node.js and Python?

Node.js handles the high-frequency engagement API — meal log writes, points calculation, tier updates, streak math — where a single per-request runtime and a sub-300ms response budget matter most. Python runs the recipe + lesson engine, where scoring recipes against a client's macros, allergies, dislikes, and tier is genuinely numerical work and benefits from the Python data ecosystem. The two services share a common MongoDB schema enforced by Mongoose on the Node side and Pydantic on the Python side, so they never drift.

How does locked content actually unlock — and what stops users from skipping ahead?

Lessons unlock on real video completion, not on a 'mark as done' checkbox. We track per-second video progress through the CDN player; the next lesson server-side enforces a minimum 90% watch threshold on the previous lesson. Tiered content (recipes, lessons, badges) unlocks on points thresholds, and points are only awarded for the actions we want to drive — log a meal, hit a weekly goal, complete a lesson. There's no client-side bypass that the server will accept.

Can the platform be re-skinned for another coaching practice or wellness brand?

Yes — the same engine has been intentionally built brand-agnostic. Theme, copy, content library, tier names, points rules, and Stripe revenue split are all configurable. A second coaching practice can be launched on the same engine with their own content and their own coach console, without forking the codebase.

What stack powers Nurtiverse and how is content delivered?

A Next.js (React) client app, a Node.js + Express engagement API, a Python recipe + lesson engine, MongoDB Atlas as the primary store, Stripe Subscriptions for billing, Auth0 + JWT for role-scoped access, video delivered via CDN with per-second progress tracking, and Sentry + Datadog for observability — all containerized with Docker and deployed on cloud infrastructure.

Want a result like this?

Talk to the same team that built 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). We’ll scope your project, give you a fixed-price proposal, and show you the closest analog from our portfolio.

Book a strategy call