679,162 سجلاً عاماً مجانياً للسيارات المنهوبة في السودان من فوضى منصات التواصل العربية
عائلات في السودان كانت تبحث في مجموعات Facebook منشوراً بعد منشور عن رقم شاسيه واحد. هذا الخط يجمع عشرات الآلاف من المنشورات العربية، ويحوّل صورها إلى نص، ويقيّمها، ثم يضعها في سجل يستطيع أي شخص البحث فيه. واضطررت إلى إعادة هندسته حتى صار قادراً على تحمّل تكلفة تشغيله. الجزء المهم هو ما كلّفه جعله يعمل، وما كانت المقاييس تخفيه.
مشروع شخصي · Python وواجهات Claude وOpenAI البرمجية وGoogle Cloud Vision · 2026
السياق
بدأ المشروع لسبب خاص: سيارة للعائلة أُخذت خلال الحرب في السودان. الأثر الوحيد لسيارات مثلها موجود في قنوات Telegram ومجموعات Facebook العربية: قوائم استرداد، ومنشورات مزادات، وصور أوراق. آلاف المنشورات كل أسبوع عن السيارات المنهوبة في السودان، بلا بحث وبلا ترتيب، والإجابة الحقيقية في مكان ما بينها.
سرعان ما صار المشروع أوسع من شأن خاص. المنشورات نفسها التي قد تحتوي سيارة واحدة تحتوي عشرات الآلاف غيرها، ولكل منها صاحب. لذلك يحتفظ النظام الآن بسجل قابل للبحث تستطيع العائلات الأخرى أن تبحث فيه: بجزء من رقم الشاسيه، أو برقم اللوحة، بالأرقام العربية المشرقية أو اللاتينية، أو بنص حر.
ما الذي فعلته
- بنيت طبقة الجمع: مراقب حي لقنوات Telegram مع استرجاع المنشورات القديمة، وبوت استقبال يرسل إليه الأهل والأصدقاء أي شيء مريب، وأداة جمع لـ Facebook مستضافة ذاتياً تبحث داخل المجموعات بدل التمرير في الخلاصة، لأن نتائج البحث تظهر بثبات بينما يُقيَّد تحميل صفحات الخلاصة.
- بنيت طبقة الاستخراج: كل قائمة استرداد، نصاً كانت أو صورة، تُفكَّك إلى سجلات منفصلة لكل سيارة قابلة للبحث، بدل أن تبقى كتلة نص. هذا ما حوّل بحثاً خاصاً إلى سجل عام.
- أعدت بناء البنية حين طلبت الأرقام ذلك. التصميم الأصلي كان يرسل كل صورة إلى نموذج رؤية. بعد قياس صادق، انتقلت إلى تحويل كل صورة إلى نص مرة واحدة بالتعرف الضوئي على الحروف العربية (OCR) عبر Google Cloud Vision، بنحو 1.50 دولار لكل ألف صورة، فصارت المادة كلها نصاً، وهذا أرخص وأفضل. قست نموذجاً منافساً على الكم المتراكم نفسه بنحو 145 دولاراً دون أي تحسن في الجودة، ولم أستخدمه.
- خفّضت تكلفة الذكاء الاصطناعي على أربع طبقات لا تفقد أي معلومة: فحص حتمي دقيق للمعرّفات المعروفة قبل أي استدعاء لنموذج؛ وبوابة صلة تستبعد المنشورات التي تخلو من مفردات السيارات ومن أي رقم بشكل رقم الشاسيه ومن الصور، وتزيل نحو 35% من المادة؛ وإزالة التكرار ببصمة المحتوى (content hash)، لأن هذه القوائم يُعاد نشرها بين المجموعات، وحكم واحد يكفي لكل النسخ؛ وتدرّج النماذج، حيث يعالج فرز رخيص معظم المنشورات ولا يُصعَّد إلا المنشور الحدّي. والكميات المتراكمة الكبيرة تُعالج عبر واجهة الدفعات غير المتزامنة (batch API) بنصف السعر.
- أضفت مزوداً احتياطياً: عند بلوغ حد الإنفاق أو حد معدل الطلبات أو انقطاع الخدمة، يعيد النظام المحاولة لدى مزود ثانٍ ويوسم الحكم باسم النموذج الذي أصدره، فلا يسقط المنشور بصمت.
- بنيت أربع بوابات تحقق تعمل على كل موجة معالجة قبل أن يُكتب أي شيء في قاعدة البيانات: التغطية، والاستناد إلى المصدر (grounding)، ومنع التقلص، والنقص.
جُمعت، وحُوّلت إلى نص، وقُيّمت، وصارت قابلة للبحث. كل صورة في المادة حُوّلت إلى نص مرة واحدة بالضبط.
البوابة التي أثبتت قيمتها
كانت التغطية تُقاس لكل منشور، فبدت سليمة وهي تخفي كارثة: قائمة واحدة فيها 684 سيارة قد تُرجع 401 منها فقط وتنجح بالكامل، لأن المنشور نفسه عولج. هذا النوع من الخطأ أضاع بصمت نحو 130,000 سجل.
الحل كان بوابة نقص تقارن عدد السجلات الناتجة بعدد الأرقام التي تشبه رقم الشاسيه في المصدر، وتنبّه إلى الفرق ولا توقف المعالجة، لأن قائمة من رموز تتبع مجردة تعطي صفر سيارات عن حق، والبوابة التي تكثر الإنذارات الكاذبة ينتهي بها الأمر مطفأة. وكان لإصلاح ثانٍ الأهمية نفسها: فحص الاستناد إلى المصدر كان يتحقق في البداية من نص المنشور وحده، وهذا كان سيستبعد كل معرّف استُخرج من صورة. في موجة واحدة كان العدد 537 معرّفاً.
أين تذهب المنشورات قبل أن تصل إلى نموذج مدفوع (أرقام من دورة معالجة سابقة؛ المجموعة الحية وصلت منذ ذلك الحين إلى 106,595 منشوراً)
الفرق منشورات أزالها الفحص الحتمي للمعرّفات وبوابة الصلة وإزالة التكرار ببصمة المحتوى. لا شيء من ذلك كلّف استدعاء API، ولا شيء منه أضاع معلومة.
ما سأقوله لك في مقابلة
كل قرار مكلف في هذا المشروع اتخذته قبل أن أقيس. البنية القائمة على نموذج الرؤية أولاً، واختيار النموذج، ومقياس التغطية: كل منها بدا صحيحاً بوضوح، وكل منها كان خاطئاً بطريقة لم يكشفها إلا قياس مقارن أو مطابقة مع المصدر. العادة التي خرجت بها هي التي سأحملها إلى أي عملية: ضع أدوات قياس، وقارن ما يدّعيه النظام بما وصل فعلاً، وتعامل مع أي مقياس أخضر لم تدققه كافتراض لم يُختبر.
أين ينفع هذا
ما يعنيه هذا لصاحب العمل: أحوّل بيانات فوضوية متعددة اللغات إلى سجل يعتمد عليه الناس، وأنقل الوضع بصدق حتى حين تقول لوحة المتابعة إن كل شيء أخضر، وأدير تكلفة النماذج والسحابة كبند في الميزانية. هذا خط معالجة مستندات بسقف للتكلفة وشرط للدقة، وهذا وصف لكثير من العمل التجاري: استقبال المطالبات، ومستندات اعرف عميلك (KYC) وإعداد العملاء، والتقاط الفواتير والإيصالات، ومراجعة الامتثال. والنمط ينطبق مباشرة: صفِّ بالقواعد الحتمية قبل الاحتمالية، وحوّل الصور إلى نص مرة واحدة، ودرّج النماذج، ولا تثق بنسبة إنجاز لم تطابقها مع المصدر.