Shoppin': تسوق بالذكاء الاصطناعي، من البداية للنهاية
المشكلة
التسوق أونلاين مشكلة بحث تتنكر في هيئة مشكلة تصفح. الناس يعرفون تقريباً ما يريدون، “قميص كتّان، مش فضفاض، بأقل من 2000”، لكن المتاجر تجبرهم على ترجمة هذه النية إلى فلاتر وتصنيفات وحظ. Shoppin’ موجود لسد هذه الفجوة: دع الناس يتسوقون كما يفكرون، مع قيام الذكاء الاصطناعي بالترجمة.
أعمل على هذا كجزء من فريق المنتج. دوري هو هندسة المنتج عبر الأسطح التي يعيش عليها: تطبيقات iOS و Android، تجربة الويب، والباكيندز Node و Python خلفهم، بينما المنتج نفسه لا يزال يجد شكله.
الدور
أعمل هنا كمهندس منتج، والكود هو النصف الأصغر من هذه الوظيفة. قبل أن أبني أي شيء، أريد أن أعرف كيف يغير الميزة ما يشعر به المستخدم، وهل تحرك المنتج للأمام فعلاً. هذا يعني العيش بالقرب من قرارات المنتج والتصميم، وليس التذاكر فقط: قراءة السلوك في PostHog، تشغيل دورات الحياة وإعادة التفاعل عبر WebEngage، ومراقبة Google Search Console للحفاظ على سطح الويب قابلاً للاكتشاف. ميزة تُشحن بنظافة لكن لا أحد يتبناها هي فشل يمكنني قياسه، لذا أتعامل مع التبني والاحتفاظ كجزء من تعريفي للـ “منجز”، وليس مشكلة شخص آخر.
ما أعمل عليه
كتالوج مولّد برف لا نهائي. خلال الأشهر الثلاثة الماضية، كان الفريق يبني جانب التجارة الإلكترونية في Shoppin’، وهو يكسر النموذج المعتاد: الملابس التي يشتريها الناس لم تكن أبداً في مستودع. القطع المعروضة على التطبيق والموقع مولّدة بالذكاء الاصطناعي أو مُورّدة، ثم مُدرجة، لذا الرف فعلياً غير محدود وكل فستان يُصنع عند الطلب لشخص واحد. لا مخزون يعني لا نفاد مخزون ولا مخزون ميت، لكن هذا يعني أيضاً أن الطلب والتنفيذ يجب أن يفترضا عدم وجود أي شيء حتى يطلبه شخص فعلياً. أعمل عبر هذا المسار بالكامل: متجر الويب، التطبيق، الباكيند التجاري Node، وخدمات Python خلف التوليد وعمل الذكاء الاصطناعي.
شات يعدل القطعة. إحدى الميزات التي أملكها تتيح للمستخدم التحدث مع الذكاء الاصطناعي وتغيير الملابس نفسها، تعديل القطعة حتى تصبح الشيء الذي أرادوه. النسخة الأولى عملت لكنها كانت بطيئة وغير متسقة، لذا حسّنت خط الأنابيب (pipeline) والـ prompting حتى عادت الاستجابات سريعة وموثوقة على الهدف. هذا الجزء من المنتج الذي يبدو سحراً، لذا يجب أن يبدو بلا جهد.
مدفوعات، في كل مكان يدفع فيه الناس. بنيت طبقة المدفوعات من النهاية للنهاية: Razorpay للهند، Stripe للدولي، و Apple Pay و Google Pay الأصليين داخل التطبيق حتى يستخدم الدفع وسيلة الدفع التي يثق بها الناس بالفعل على أجهزتهم. ضغطات أقل بين الرغبة في الشيء وامتلاكه.
اشتراكات تعمل على المنصتين. دمجت نظام الاشتراكات مع Qonversion، لذا الخطط المتكررة تتصرف بشكل متسق عبر iOS و Android دون كتابة التحقق من الإيصالات ومنطق الاستحقاق يدوياً لكل منصة. حالة الشراء والوصول تعيش في مكان واحد، وهو بالضبط حيث تميل أخطاء الاشتراكات للاختباء.
تحديثات الطلبات على WhatsApp. عندما يطلب شخص ما، لا يجب أن يعود للتطبيق ليعرف ما يحدث. بنيت التدفق الذي يدفع كل تحديث طلب للعميل عبر WhatsApp، لذا كل تغيير حالة يصلهم حيث هم بالفعل.
داشبورد لإدارة الطلبات. الطلبات تحتاج مكاناً تُدار فيه، لذا بنيت الداشبورد الداخلي الذي يستخدمه الفريق لرؤية الطلبات وتحريكها خلال دورة حياتها. المنتج المواجه للعميل جيد فقط بقدر العمليات خلفه.
باكيندان، منتج واحد. Node.js يشغل APIs التجارة والمنتج؛ Python يشغل عمل الذكاء الاصطناعي والتوليد. إبقاؤهما منفصلين يتيح لكل منهما النمو بشروطه الخاصة بينما العملاء (clients) يبقون عروضاً رقيقة (thin views) فوق عقد مشترك. React Native للتطبيقات، Next.js للويب.
أسرع بالأدوات الصحيحة. أعتمد على Claude Code للتحرك بسرعة عبر هذا القدر من المساحة السطحية دون السماح للجودة بالانزلاق، وهذا ما يتيح لي حمل العمل عبر التطبيق، الويب، وكلا الباكيندز بالوتيرة التي يطلبها منتج في مراحله المبكرة.
القرارات
عقل منتج واحد، أسطح متعددة. مع نفس الفريق الصغير يمتلك التطبيقات، الويب، والباكيند، أرخص معمارية كانت طبقة API مشتركة تعامل كل عميل كعرض رقيق. الميزات تهبط مرة واحدة، تُشحن في كل مكان. المقايضة هي أن الصقل الخاص بالمنصة يحتاج ميزانية متعمدة؛ أنفقناها حيث يشعر المستخدمون بها فعلياً (استجابة الإيماءات، تحميل الصور) وتخطيناها حيث لا يشعرون.
اشحن الذكاء الاصطناعي حيث يكسب وجوده. استدعاءات LLM بطيئة ومكلفة نسبياً لكل شيء آخر في المكدس. أبقينا الطبقة المحادثية لالتقاط النية وتعديل الملابس، الجزء الذي يحبه المستخدمون، ونقلنا كل ما يمكن حسابه مسبقاً إلى مهام خلفية. التطبيق يبدو ذكاء اصطناعياً؛ ميزانية الكمون (latency) تقرأ كتطبيق تجارة إلكترونية عادي.
تكرار في الإنتاج، بصدق. المنتجات في مراحلها المبكرة لا تنجو من خرائط طريق لستة أشهر. شحنّا صغيراً، راقبنا سلوكاً حقيقياً، وقتلنا ميزات لم تحرك الاستخدام، بما فيها تلك التي أحببناها.
النتيجة
المنتج مباشر على الويب مع التطبيقات في المتاجر، يُشحن باستمرار: الميزات تهبط عبر iOS و Android والويب في نفس دورة الإصدار، المدفوعات تُصفى عبر ثلاثة مسارات، تحديثات الطلبات تصل الناس على WhatsApp، وطبقة الذكاء الاصطناعي تعمل داخل ميزانية كمون تجارة إلكترونية عادية. أقوى إشارة هي الوتيرة: هذا فريق صغير يكرر في الإنتاج كل أسبوع، ليس إطلاقاً توقف عن الحركة.
دراسة الحالة هذه مستمرة؛ تنمو مع نمو المنتج.