التحدي
كان لدى She Is My Nutritionist آلاف العملاء المدفوعين يتلقون محتوى الإرشاد عبر مكالمات Zoom وخطط وجبات بصيغة PDF ومجموعة Facebook خاصة. وكان التسرب حاداً: فمعظم العملاء يختفون بهدوء بعد الأسبوع الثاني لأنه لم يكن هناك نظام يكافئهم على الالتزام بالخطة، ولا مكان داخل التطبيق لتسجيل الوجبات، ولا عرض تلقائي لـ «ما يجب فعله تالياً»، ولا إشارة للمدرب بأن عميلاً على وشك الانقطاع. الإرشاد مشكلة عادات لا مشكلة محتوى — وكانت الأدوات الحالية تحل المشكلة الخاطئة.
كان المطلوب واضحاً: بناء منصة SaaS حقيقية يمكن للممارسة وضع العملاء المدفوعين عليها، بحيث يدفع المنتج نفسه المشاركة اليومية والأسبوعية، ويحصل المدرب على إشارة حية بمن هو نشط ومن هو معرّض للانقطاع، ويُقفل المحتوى (الوصفات والدروس) ويُفتح بناءً على التقدم الفعلي بدلاً من إغراق العميل به دفعة واحدة.
حلّنا
بنينا Nurtiverse — منصة SaaS بـ Next.js + Node.js + Python + MongoDB تكون فيها طبقة التحفيز (gamification) هي المنتج نفسه، لا مجرد ملصق فوقه.
تطبيق العملاء بـ Next.js هو الواجهة اليومية التي يراها كل مستخدم مدفوع: سجّل وجبة، وامسح وصفة، وأكمل درس اليوم، وتحقق من مستواك. تتبع السعرات والمغذيات الكبرى ميزتان أساسيتان: كل إدخال طعام يصل إلى واجهة Node.js API التي تكتب مستند `MealLog` مهيكلاً وتطلق حساب النقاط. حافظ على سلسلة يومية، أو أنهِ درساً، أو أكمل هدفاً أسبوعياً — وتتراكم النقاط في مستوى (برونزي → فضي → ذهبي → بلاتيني) يفتح وصفات ودروساً وشارات جديدة. والمحتوى المقفل مرئي لكنه ضبابي مع تلميح «يُفتح عند المستوى الفضي» — فيكون التقدم طموحاً لا عقابياً.
محرك الوصفات والدروس بـ Python هو موضع الملكية الفكرية للإرشاد. فهو يقيّم الوصفات بحسب المغذيات الكبرى لدى العميل وحساسياته وما لا يفضله ومستواه؛ وينشئ تلقائياً قائمة مشتريات من أي خطة وجبات مختارة؛ ويقرر أي درس يُعرض تالياً بناءً على سجل الإكمال ومسار المدرب الموصوف. وتأتي الوصفات مع فيديوهات طهي تُسلَّم عبر CDN مع تتبع تقدم لكل ثانية، وتقفل الدروس الوحدة التالية على إكمال الفيديو فعلياً (وليس مجرد خانة «تم»).
لوحة المدرب هي المنتج الثاني داخل المنتج. يرى المدربون كل عميل بنظرة واحدة: المستوى الحالي وآخر وجبة مسجلة وآخر درس مكتمل واتجاه المشاركة أسبوعاً بعد أسبوع، وعلامة على كل من لم يسجل وجبة منذ 5 أيام أو أكثر. ومن اللوحة نفسها يمكنهم إرسال تذكير جاهز أو وصف وصفة أو تقديم درس خارج الترتيب أو جدولة متابعة — فيعمل المدرب بناءً على إشارات لا على ذاكرة مكالمات Zoom.
وتحت كل ذلك: اشتراكات Stripe للفوترة، وAuth0 + JWT للوصول المقيّد بالأدوار، وMongoDB Atlas مع مخططات Mongoose / Pydantic التي تُبقي خدمتي Node وPython على عقد بيانات واحد، وSentry + Datadog حتى لا يقتل استعلام بحث وصفات بطيء الاحتفاظ بالعملاء بصمت.
- تتبع السعرات + المغذيات الكبرى مع تسجيل وجبات في أقل من 300 مللي ثانية ومستندات `MealLog` مهيكلة
- تقدم بمستويات (برونزي → فضي → ذهبي → بلاتيني) — تتراكم النقاط في مستوى يفتح الوصفات والدروس والشارات
- محتوى مقفل مع تلميحات طموحة «افتح عند المستوى التالي» بدلاً من جدران دفع عقابية
- مطابقة وصفات بـ Python بحسب المغذيات الكبرى والحساسيات وما لا يُفضَّل والمستوى — مع قوائم مشتريات تُنشأ تلقائياً من أي خطة وجبات
- مشغّل دروس مع تتبع تقدم الفيديو لكل ثانية — يُفتح الدرس التالي عند الإكمال الفعلي فقط، لا بخانة اختيار
- لوحة مدرب بالمستوى الحالي وآخر تسجيل واتجاه المشاركة أسبوعاً بعد أسبوع وعلامة خمول تُطلَق عند صمت 5 أيام أو أكثر
- إجراءات المدرب بنقرة واحدة: إرسال تذكير ووصف وصفة وتقديم درس وجدولة متابعة — كلها من الشاشة نفسها
- اشتراكات تديرها Stripe مع تقسيم حصة الإيرادات للمدرب، ومراقبة Sentry + Datadog، وMongoDB Atlas، ووصول JWT مقيّد بالأدوار