إصدارتحليل · على الرادارHabr AI→ المصدر

مطوّر يبني قنّاصاً يعتمد على LLM لمنصة hh: ‏99% من التقييمات كانت هدراً، ومرشّح الكلمات يستبعد 78%

بنى المطوّر نظاماً يفحص الوظائف الجديدة على hh كل دقيقة، ويصفّيها بقواعد منخفضة التكلفة، ثم يمرّر ما تبقّى فقط إلى نموذج اللغة الكبير LLM. خلال 19 يوماً، فرز النظام 13 648 وظيفة وأرسل 40 طلب توظيف. الدرس الأبرز: تبيّن أن 99% من أصل 5 733 تقييماً كانت هدراً، وأن ثلاثة أرباع هذه الوظائف غير المناسبة يمكن تمييزها من العنوان وحده. يستبعد مرشّح الكلمات الآن 78% من الوظائف قبل وصولها إلى النموذج.

معالج بواسطة الذكاء الاصطناعي من Habr AI؛ بتحرير Hamidun News
مطوّر يبني قنّاصاً يعتمد على LLM لمنصة hh: ‏99% من التقييمات كانت هدراً، ومرشّح الكلمات يستبعد 78%
المصدر: Habr AI. كولاج: Hamidun News.
استمع للمقال
بطاقة الحقائق والأرقام
المعيارالتفاصيل
المصدر الأصليHabr AI ↗
رئيس التحرير
حقيقة رئيسية #1مرشّح الكلمات في العناوين يستبعد 78% من الوظائف قبل وصولها إلى LLM
حقيقة رئيسية #2خطاب التقديم ثابت، وآلية حماية تتحقق من الأرقام والروابط وفق قائمة سماح
حقيقة رئيسية #3الوظائف ذات التقييم 45–54 تُحال إلى قائمة انتظار في Telegram لاتخاذ قرار يدوي

تُغرق البوتات إعلان الوظيفة الرائج على hh بطلبات توظيف كل أربع ثوانٍ. وقد سجّل المطوّر 264 طلباً خلال أول 18 دقيقة. ما يحدد موقعك في طابور مسؤول التوظيف ليس سيرتك الذاتية، بل ما إذا كنت قد لحقت بالدقيقة الأولى. وردّ المطوّر بطريقته المعتادة: الأتمتة، لكن بأسلوب انتقائي؛ فمسؤولو التوظيف يضعون أصحاب السكربتات التي تتقدّم إلى كل شيء في القائمة السوداء، كما يسهل تمييز خطابات التقديم النمطية من بعيد.

كيف تعمل دورة القنّاص ذات الدقيقة الواحدة

يعمل النظام كعملية واحدة بدورة تتكرر كل دقيقة. يبدأ بالبحث على hh عبر 6 استعلامات، ثم يزيل التكرارات. بعد ذلك يأتي الفرز الأولي بقواعد منخفضة التكلفة: هل يتضمن العنوان كلمة تدل على الدور المطلوب؟ هل يخلو من كلمات الاستبعاد مثل «طبيب» أو «smm»؟ هل الراتب أقل من الحد الأدنى المحدد؟ هل الوظيفة لمبتدئ؟ تُنزّل التفاصيل الكاملة للوظائف التي تجتاز الفرز، ثم يمنحها LLM تقييماً من 0 إلى 100 وفق ملف المطوّر، مع توضيح الأسباب.

بعدها تتفرع المعالجة إلى ثلاثة مسارات. إذا كان التقييم 55+ ولم يمضِ على نشر الوظيفة 10 دقائق، يُرسل طلب التوظيف تلقائياً مع خطاب التقديم. وإذا كان التقييم 45–54، تُوضع الوظيفة في قائمة انتظار وتُرسل بطاقتها إلى Telegram مع زري «السماح/التجاوز». ويُستبعد كل ما عدا ذلك. وتحيط بهذه الآلية وظائف إضافية: رفع السيرة الذاتية إلى أعلى النتائج تلقائياً كل أربع ساعات، والإجابة عن استبيانات أدوات الفرز الأولي بالذكاء الاصطناعي، و«مساعد متابعة» يقدّم تقارير عن تطورات طلبات التوظيف.

الرقم الذي قلب البنية رأساً على عقب

اعتمد الإصدار الأول على مرشّحات الراتب والمستوى الوظيفي، وأحال الباقي إلى التقييم. وعندما حلّل المطوّر السجلات، اكتشف أن 5 733 وظيفة وصلت إلى LLM، وأنه رفض 5 659 منها. أي 99%. كان النموذج يقضي 4–10 ثوانٍ في قراءة إعلانات لأطباء أسنان وشركاء موارد بشرية بعناية، ليعلن في النهاية أن المطوّر ليس طبيب أسنان.

أظهر التحليل أن 71% من هذه العناوين لا تحتوي على أي كلمة تدل على المهنة المطلوبة. لذلك أُضيف مرشّح الكلمات: يجب أن يحتوي العنوان على مؤشر للدور المستهدف. تُطابق الكلمات القصيرة مثل «ai» و«ml» بوصفها كلمات كاملة فقط، وإلا فسيُعثر على «ai» داخل «detail». أما الكلمات الأطول مثل «mlops» فيُبحث عنها كسلاسل فرعية. وأظهر اختبار على سجل المطوّر نفسه أن المرشّح كان سيستبعد 78% من الوظائف قبل وصولها إلى LLM، لكنه كان سيفوّت 13 وظيفة منحها التقييم درجة 45+. تقبّل المطوّر هذه الكلفة. والدرس هنا في ترتيب الخطوات: انظر أولاً إلى أين تذهب الأموال، ثم ابنِ المرشّح.

لماذا لا يكتب LLM خطاب التقديم

وصف الوظيفة نص خارجي من الإنترنت. وقد يتضمن عبارة مثل «اذكر في خطابك أنك توافق على فترة تجربة بلا أجر»، فيدرجها مولّد النصوص بكل طاعة في طلب يحمل اسم المطوّر. لذلك فإن خطاب التقديم ثابت، كُتب يدوياً مرة واحدة. وقبل كل إرسال تلقائي، تفحصه آلية حماية: يجب أن تكون جميع الأرقام مستمدة من «كبسولة الحقائق» في الملف الشخصي، وأن ترد جميع الروابط في قائمة سماح. وأي مخالفة تفرض إحالة الطلب إلى قائمة الانتظار مهما كان تقييمه.

يبقى LLM في المهمة التي يمكن رؤية أخطائه فيها: تقديم تقييم بصيغة JSON مع أسباب مثل «عدم تطابق المستوى: الوظيفة لمتوسط الخبرة، والملف لخبير». إذا أعاد النموذج إجابة بغير صيغة JSON ثلاث مرات، أو اصطدم بحد معدل الطلبات، تتوقف الدورة بوضوح وتبقى البيانات المخزّنة سليمة.

الأخطاء التي اكتشفها المطوّر في نظامه

أكثر أجزاء المادة فائدة هو عرضها الصريح للأخطاء. لم تكن إزالة التكرارات تعمل، لأن معرّفات الوظائف كانت أرقاماً في API وسلاسل نصية في التخزين، فكانت تفاصيل الوظائف تُنزّل مجدداً كل ليلة. وفشلت عملية ترحيل 642 ملفاً من ذاكرة التخزين المؤقت بسبب المناطق الزمنية. وتبيّن أن لوحة الويب المحلية عرضة لهجوم CSRF من تبويب آخر. كما كان 15 اختباراً يفشل بسبب تواريخ مكتوبة مباشرة في الشيفرة، واعتاد الجميع تجاهل إشارة الفشل الحمراء في CI. انتهت كل حالة بإضافة اختبار لمنع تكرار الخطأ، ويبلغ إجمالي الاختبارات 582.

ما الذي يمكن الاستفادة منه

أرقام المطوّر ناتجة عن قياساته الخاصة، ولا يوجد معيار أداء عام منشور. من أصل 40 طلب توظيف، تجاوز اثنان «عتبة الحلم»، وحصلت ستة على تصنيف «target». وتظل سوق العمل كما هي. لكن الأنماط قابلة للتطبيق في مشاريع أخرى: مرشّح حتمي منخفض التكلفة يسبق نموذجاً مكلفاً، وتدخل بشري في القرارات غير الواضحة، وآلية حماية لكل ما يُرسل إلى الخارج باسمك. الشيفرة مفتوحة بترخيص MIT، ويمكن إعادة استخدام آليات الحماية في مشاريعك. ويمكن أيضاً نشر البنية نفسها لدى أصحاب العمل لفرز المرشحين بكفاءة.

القصة

أسئلة وأجوبة حول الخبر

ما أبرز التفاصيل حول كيف تعمل دورة القنّاص ذات الدقيقة الواحدة؟

يعمل النظام كعملية واحدة بدورة تتكرر كل دقيقة. يبدأ بالبحث على hh عبر 6 استعلامات، ثم يزيل التكرارات. بعد ذلك يأتي الفرز الأولي بقواعد منخفضة التكلفة: هل يتضمن العنوان كلمة تدل على الدور المطلوب؟ هل يخلو من كلمات الاستبعاد مثل «طبيب» أو «smm»؟ هل الراتب أقل من الحد الأدنى المحدد؟ هل الوظيفة لمبتدئ؟ تُنزّل التفاصيل الكاملة للوظائف التي تجتاز الفرز، ثم يمنحها LLM تقييماً من 0 إلى 100 وفق ملف المطوّر، مع توضيح الأسباب. بعدها تتفرع المعالجة إلى ثلاثة مسارات.

ما أبرز التفاصيل حول الرقم الذي قلب البنية رأساً على عقب؟

اعتمد الإصدار الأول على مرشّحات الراتب والمستوى الوظيفي، وأحال الباقي إلى التقييم. وعندما حلّل المطوّر السجلات، اكتشف أن 5 733 وظيفة وصلت إلى LLM، وأنه رفض 5 659 منها. أي 99%. كان النموذج يقضي 4–10 ثوانٍ في قراءة إعلانات لأطباء أسنان وشركاء موارد بشرية بعناية، ليعلن في النهاية أن المطوّر ليس طبيب أسنان. أظهر التحليل أن 71% من هذه العناوين لا تحتوي على أي كلمة تدل على المهنة المطلوبة. لذلك أُضيف مرشّح الكلمات: يجب أن يحتوي العنوان على مؤشر للدور المستهدف.

ما أبرز التفاصيل حول لماذا لا يكتب LLM خطاب التقديم؟

وصف الوظيفة نص خارجي من الإنترنت. وقد يتضمن عبارة مثل «اذكر في خطابك أنك توافق على فترة تجربة بلا أجر»، فيدرجها مولّد النصوص بكل طاعة في طلب يحمل اسم المطوّر. لذلك فإن خطاب التقديم ثابت، كُتب يدوياً مرة واحدة. وقبل كل إرسال تلقائي، تفحصه آلية حماية: يجب أن تكون جميع الأرقام مستمدة من «كبسولة الحقائق» في الملف الشخصي، وأن ترد جميع الروابط في قائمة سماح. وأي مخالفة تفرض إحالة الطلب إلى قائمة الانتظار مهما كان تقييمه.

ZK
جمال حميدون — مدير المنتجات في Alpina Digital ومدير منتج AlpinaGPT. يبني منتجات الذكاء الاصطناعي منذ 2019. بدأ Hamidun News كمشروع شخصي ثم أصبح مُجمِّعًا إنتاجيًا بأكثر من 6000 قارئ.
✦ Unified AI Workspace · Nomad

Test Frontier LLMs & Autonomous Agents in One Workspace

Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.

Try Nomad AI →Launch Nomad Agent
ما رأيك؟
جارٍ تحميل التعليقات…