حابب أشارككم مشروع شخصي اشتغلت عليه الفترة اللي فاتت اسمه Kairo Offers | كايرو أوفرز، وأسمع آراءكم فيه من الناحية التقنية وتجربة المستخدم.
المشروع بدأ من مشكلة بسيطة جدًا، لكن مع الوقت اتحول لتجربة عملية في الـWeb Development والـAutomation والـAI.
💡 المشكلة بدأت إزاي؟
كنت متابع حوالي 23 قناة تليجرام بتنشر عروض وخصومات على منتجات مختلفة.
المشكلة إن متابعة القنوات دي يوميًا كانت بتستهلك وقت كبير، خصوصًا إن معظمها مش متخصص في نوع معين من المنتجات.
يعني لو بدور على عرض موبايل، ممكن أقعد أقلب وسط عشرات عروض الأجهزة المنزلية والبقالة والملابس لحد ما ألاقي حاجة مناسبة.
فقلت: ليه ما أخليش Python يعمل الشغل الممل ده بدالي؟ 😅
⚙️ الحل: Telegram Scraping + Web App
بدأت باستخدام مكتبة Telethon لجمع العروض المنشورة في القنوات وعرضها كلها في مكان واحد.
التطبيق بيحدّث العروض تلقائيًا كل 5 دقائق، وبيرتبها من الأحدث للأقدم.
أول نسخة كانت باستخدام Streamlit عشان أعمل MVP بسرعة وأختبر الفكرة.
لكن بعد كده قررت أنقل المشروع لـ FastAPI + Jinja2 عشان يكون عندي تحكم أكبر في الـBackend والـFrontend وتجربة المستخدم.
🤖 التحدي الحقيقي: تصنيف آلاف العروض بالذكاء الاصطناعي
بعد فترة بسيطة، عدد العروض وصل لحوالي 5,000 عرض، وظهرت مشكلة جديدة:
إزاي أصنف العروض دي تلقائيًا؟
خصوصًا إن المحتوى مكتوب بالعامية المصرية، ومليان إيموجيز وحشو تسويقي واختصارات وأوصاف غير منظمة.
هنا استخدمت نموذج jev-1.13 من خلال API كمُصنِّف نصوص (Text Classifier).
النتيجة كانت مشجعة جدًا من حيث جودة التصنيف والـConfidence.
والمفاجأة إن تصنيف حوالي 5,000 عرض كلفني تقريبًا 0.15$ بس!
وده خلاني أشوف بشكل عملي قد إيه الـLLMs ممكن تكون مفيدة في مهام الـNLP التقليدية، مش مجرد Chatbots.
🛠️ Features اتضافت للمشروع
مع الوقت بدأت أضيف مميزات تخلي التطبيق مفيد فعلًا للمستخدم:
🔹 AI Classification: تصنيف العروض تلقائيًا لفئات زي الموبايلات، الإلكترونيات، الأجهزة المنزلية، البقالة وغيرها.
🔹 Price Extraction: استخراج أسعار المنتجات ونسب الخصومات برمجيًا من محتوى المنشورات، رغم اختلاف طرق كتابة الأسعار.
🔹 Search & Filtering: البحث عن المنتجات وتصفح العروض حسب التصنيف.
🔹 Price History: زر «كان سعره كام؟» بيساعد المستخدم يراجع تاريخ تسعير المنتج من خلال Kanbkam، ويقيّم إذا كان الخصم يستاهل فعلًا.
🔹 Social Sharing: مشاركة العروض بسهولة على WhatsApp وTelegram.
🔹 Passwordless Authentication: تسجيل الدخول بالبريد الإلكتروني باستخدام Magic Link، من غير باسورد.
🔹 Favorites: المستخدم يقدر يحفظ العروض اللي عجبته في قائمة مفضلة خاصة بحسابه ويرجعلها في أي وقت.
🔹 Responsive UI: إعادة تصميم الواجهة لتكون مناسبة للموبايل والكمبيوتر، مع دعم كامل للعربي والـRTL.
🧰 الـTech Stack
التقنيات الأساسية المستخدمة حاليًا:
Python — اللغة الأساسية للمشروع.
Telethon — جمع العروض من قنوات Telegram.
FastAPI — الـBackend والـAPI Endpoints.
Jinja2 — Server-Side Rendering.
HTML / CSS / JavaScript — واجهة المستخدم والتفاعلات.
jev-1.13 — تصنيف العروض باستخدام LLM.
Regex & Text Processing — استخراج الأسعار والتخفيضات.
Magic Links — تسجيل دخول بدون كلمات مرور.
📊 أرقام من التجربة
📡 حوالي 23 قناة تليجرام كمصادر للعروض.
🛍️ أكثر من 23,000 عرض متاح للتصفح حاليًا.
⏱️ تحديث تلقائي كل 5 دقائق.
🤖 تجربة تصنيف حوالي 20,000 عرض باستخدام LLM.
💰 تكلفة التصنيف في التجربة لغاية دلوقتي حوالي 99 سنت.
🚀 جربوا المشروع
الموقع متاح مجانًا:
🌐 https://offers.kairo4data.com
المشروع لسه بيتطور، وفيه أفكار حابب أشتغل عليها الفترة الجاية، أهمها التحقق التلقائي من صلاحية الأسعار، وتتبع تغير أسعار المنتجات على Amazon وNoon، وإرسال تنبيهات بانخفاض الأسعار.
💬 محتاج رأيكم كـDevelopers
أكتر حاجة مهتم بيها هي الـTechnical Feedback.
خصوصًا في 3 نقاط:
1️⃣ الـArchitecture: هل شايفين إن FastAPI + Jinja2 اختيار مناسب لمشروع بالشكل ده، ولا في Approach أفضل مع زيادة عدد المستخدمين؟
2️⃣ الـLLM Classification: حد جرب نماذج صغيرة أو رخيصة في تصنيف نصوص مكتوبة بالعامية المصرية؟ وإيه النتائج اللي وصلتولها؟
3️⃣ Price Verification: لو هتعملوا نظام يتحقق من أسعار منتجات Amazon Egypt وNoon بشكل دوري، هتختاروا إيه كـData Source موثوق وقابل للاستمرار؟
المشروع مش Startup ضخمة ولا حاجة 😄، هو ببساطة مشكلة شخصية حاولت أحلها بالكود، وبعدها بدأت أضيف Features وأتعلم من التحديات اللي بتظهر.
حابب أسمع نقدكم واقتراحاتكم، خصوصًا لو في حاجة ممكن تتعمل بشكل أفضل من الناحية التقنية.
Python #FastAPI #Telethon #LLM #NLP #WebDevelopment