بُني من أجل المكالمات
التي لم يكن أحد يردّ عليها.
Kasper نظام هاتف يردّ على المتصل — باللهجات البغدادية والجنوبية والموصلية قبل أي شيء آخر، وبالإنجليزية لأن ذلك ضروري أيضًا.
لا ينبغي لأحد أن يخسر عميلًا بسبب هاتف لم يردّ عليه أحد.
يتيح Kasper لأي نشاط تجاري أن يدير تواصله مع عملائه بوكلاء ذكاء اصطناعي، بدلًا من موظفيه الحاليين أو إلى جانبهم. وللوكيل شخصية، ومجموعة قواعد، ومعرفته الخاصة، ومجموعة أشياء يُسمح له بفعلها. يصل إليه العملاء بالهاتف أو واتساب أو من موقعك أو بالبريد الإلكتروني، فيتحدث إليهم كما ينبغي.
والجزء المهم هو ما يحدث باللغة التي يتحدثها عملاؤك فعلًا. معظم الأنظمة المبنية لهذا الغرض صُمّمت في مكان آخر ثم تُرجمت لاحقًا؛ أما هذا فبُني للعربية البغدادية والجنوبية والموصلية أولًا، ويعمل بالإنجليزية لأن ذلك ضروري أيضًا.
شاهد كيف يعملهذه النسخة الثانية، والأولى هي السبب.
هناك نسخة أقدم من Kasper تردّ على مكالمات حقيقية منذ فترة. عملت، ثم صارت من النوع الذي لا تستطيع تغييره بأمان — وهذه حكاية أنفع من حكاية الشركة التي بدأت في مرآب.
نمت النسخة الأولى كما تنمو المنتجات حين تنجح. وفي النهاية صار فيها مجلد واحد يضمّ 1,663 ملفًا بلا أي مجلدات فرعية داخله، لأن قاعدةً كانت تحدّ كل ملف بخمسمئة سطر ولم يكن هناك مكان يوضع فيه الباقي. وكان مئتان وثلاثة وثلاثون من تلك الأسماء تبدأ بالكلمة نفسها.
وكانت قاعدة البيانات جدولًا واحدًا فيه عمود JSON، من بقايا ترحيل أقدم، وتحته نحو عشرين فهرسًا مكتوبًا يدويًا تقوم بالعمل الذي كانت المفاتيح الأجنبية ستقوم به. أما مكتب المساعدة فكان تطبيق Ruby منفصلًا، بعنقود بحث وقاعدة بيانات ثانية، يُوصل إليه عبر ستة نداءات لواجهة برمجة ونحو ستين ملفًا من الوساطة وإعادة التغليف.
لم يكن شيء من ذلك ظاهرًا للعميل، وكان كله ظاهرًا لكل من يحاول تغيير شيء. كانت إعدادات الذكاء الاصطناعي موجودة في ست عشرة شاشة مختلفة؛ ثلاث منها موجودة ثلاث مرات، فتعديل جملة ترحيب في موضع لا يغيّرها في موضع آخر. إصلاح شيء يكسر شيئًا آخر، وبانتظامٍ كافٍ جعل الناس يتوقفون عن الإصلاح.
لذلك يُعاد بناء المنتج من الصفر، مع الاحتفاظ بالتصميم واستبدال الأساس — جداول علائقية حقيقية، وحدود مفروضة بين الوحدات، وموضع واحد لكل شأن، وقاعدة تقول إن السطر غير المغطّى بالاختبارات مشكلة تصميم لا فجوة مقبولة. وما أحبّه العميل هو ما بقي.
ستة مبادئ، مرتّبة بحسب أيّها يحسم.
هذه مرتّبة لا مسرودة، والترتيب مستعمل فعلًا: حين يتعارض اثنان منها، يحسم الأعلى.
على الوكيل أن يكون مصيبًا
يجيب من معرفتك أو لا يجيب. والمعرفة العامة بالعالم مرفوضة لا مجرد غير مستحبّة، وهناك بوابة تُغلق عند الخطأ وتحقّق بعد التوليد — لأن «مصيب في الغالب» هو العطب الذي أُعيد بناء هذا المنتج لإزالته.
لكل شيء موضع واحد
موضع واحد لتغيير سعر، وموضع واحد يقيم فيه إعداد، وموضع واحد تُكتب فيه قاعدة. وضعت النسخة السابقة إعدادات الذكاء الاصطناعي في ست عشرة شاشة، وكانت كلفة ذلك ليست الفوضى — بل أن تغيير جملة ترحيب لم يكن يغيّرها في كل مكان.
التغييرات لا تكسر أشياء أخرى
الانحدارات تلتقطها الاختبارات لا العملاء. كل وحدة مغطّاة على المقاييس الأربعة، وكل إصلاح عيب يُشحن ومعه الاختبار الذي كان سيلتقطه، والاختبار الذي لا يستطيع أن يفشل يُعدّ عيبًا.
عليه أن يبدو مصنوعًا عن قصد
بالسمتين، وبالاتجاهين، وعند كل نقطة انكسار، وفي كل حالة من حالات كل عنصر تحكم. تُصوَّر وتُقارَن مع كل تغيير، لأن التصميم الذي ينحرف تصميم لم يقرّره أحد.
يستطيع شخص واحد أن يفهم أي جزء منه
الحدود بين الحزم يفرضها فحص لا عُرف، ولا شيء يستورد عبر طبقة لا ينبغي له أن يعبرها. وهذا ما يجعل فريقًا صغيرًا قادرًا على تغيير منتج كبير.
نقول ما لا نعرفه
في هذا الموقع صفحة حالة تقول «غير مقيسة» بدل الأخضر، وصفحة أمان تسمّي ما لسنا معتمدين فيه، ولا توجد شهادات عملاء لأننا لم نُعطَ أيًّا منها. وهذا ليس تواضعًا — إنه القاعدة نفسها التي يتبعها الوكيل.
تودّ العمل على هذا؟
لا توجد لوحة وظائف ولا استمارة تقديم. إن كان بناء برمجيات صوتية يجب أن تعمل بالعربية العراقية يبدو لك مشكلتك المفضّلة، فاكتب إلينا وقل ما الذي تودّ العمل عليه — هذا يصل إلى شخص حقيقي، وهو طريق أقصر من أي بوابة توظيف.