
منتج خاص · 2026
كرافتليسيرة ذاتية واحدة، تُعاد كتابتها لكل وظيفة تتقدّم لها
ارفع ملفك، الصق إعلان الوظيفة، واحصل على سيرة ذاتية بلغة جهة العمل جاهزة لأنظمة الفرز.
- منتج خاص
- —
- السنة
- 2026
- الدور
- تصميم + تطوير متكامل
- الخدمات
- تصميم منتج, تطوير متكامل, ذكاء اصطناعي
- التقنيات
- Next.js · React · TypeScript · Tailwind CSS · Motion · NextAuth · Prisma · PostgreSQL · Google Gemini · Groq · Zod · unpdf · Vercel
التحدي
إعادة كتابة السيرة لكل وظيفة بدون اختلاق أي جهة عمل أو شهادة أو تاريخ، وتشغيل المنتج كله على الخطط المجانية.
الفكرة
ترفع ملف PDF مرة وحدة، وبعدها كل تقديم مجرد لصق ودقيقة: سيرة بلغة جهة العمل، بسيطة تقرأها أنظمة الفرز، مع إجابات جاهزة لأسئلة التقديم.
اقرأ تفاصيل البناء كاملة
يأخذ كرافتلي سيرتك الذاتية الحالية مع إعلان الوظيفة، ويعيد كتابة السيرة بلغة جهة العمل نفسها — الحقيقة ذاتها، لكن موجّهة بدقة — ثم يصيغ إجابات أسئلة الفرز في نموذج التقديم. ترفع ملف PDF مرة واحدة فيتحوّل إلى ملف شخصي منظّم وقابل للتحرير، وبعدها كل تقديم لا يتجاوز لصق النص ودقيقة من الوقت. الملف المُصدَّر بسيط عن قصد: عمود واحد بمقاس A4 بخط Computer Modern، بلا ألوان ولا أيقونات، لأن هذا ما تقرأه أنظمة تتبع المتقدمين بنظافة وما يبدو كوثيقة كتبها إنسان فعلاً.
التطبيق كله يعمل على الطبقات المجانية، وهذا القيد هو ما شكّل معظم الهندسة فيه. تتوزّع نداءات النموذج بين Gemini و Groq ضمن ميزانية واحدة مشتركة مدتها ٥٠ ثانية تقلّ عن سقف البيئة الخادمة، وكل محاولة محدودة بـ ٢٢ ثانية، ولا تبدأ محاولة جديدة إلا إذا تبقّت أربع ثوانٍ — إذ كانت نسخة سابقة قد تسلسل ستة نماذج مع إعادات المحاولة فتتجاوز عمر الدالة وتعود بلا شيء. معرّفات النماذج مثبّتة لا مختصرة، ويمكن تجاوزها من متغيّرات البيئة، لأن المزوّدين يوقفون النماذج وفق جدولهم الخاص فتتحوّل القائمة الثابتة إلى عطل صامت. ويُميَّز النموذج المتوقّف عن تجاوز الحدّ عن انتهاء المهلة، ويُبلَّغ عن كل حالة باسمها بدل أن يصير كل خطأ رسالة 'الخدمة غير متاحة مؤقتاً' إلى الأبد.
يُطلب من المزوّدَين إخراج JSON أصلاً، ومع ذلك يُفكَّك الرد بماسح يتتبّع الأقواس المتوازنة مع احترام النصوص بين علامات التنصيص — لأن الاقتطاع بـ indexOf و lastIndexOf ينكسر مع أي نص لاحق يحتوي قوساً. تُتحقَّق المخرجات عبر Zod وتُعاد المحاولة مرة واحدة مع تغذية سبب الفشل إلى الطلب التالي.
تُطبَّق الحصص لكل مستخدم على قاعدة البيانات نفسها بدل خدمة إضافية. يُكتب صف المطالبة قبل قراءة العدّ: فالتحقق ثم الكتابة يسمح لنقرتين متتاليتين أو تبويبين مكررين بقراءة العدد نفسه والمرور معاً وإنفاق حصة المزوّد مرتين، وهو تحديداً ما وُجد المحدِّد لمنعه. وتُلغى المطالبة المرفوضة فوراً، وتُنظَّف الصفوف المنتهية انتهازياً في ٢٪ من الطلبات بدل مهمة مجدولة. ولا يُحاسَب رفع الملف إلا بعد أن يُنتج نصاً صالحاً، لأن القراءة محلية ومجانية ولا يصح أن تكلّف صورة ممسوحة المستخدمَ جزءاً من حصته.
النصوص الموجَّهة للنموذج خارج معالجات المسارات. كانت النسخ السابقة ترسل السجل كاملاً — كل سيرة مُخصَّصة بحذافيرها — مع كل طلب، فينمو حجم الطلب بلا حدّ حتى يتجاوز حدود الطبقة المجانية؛ أما الآن فيُرسل ملخّص محدود لآخر أربعة تقديمات فقط، يكفي لإبقاء جهات العمل والمسمّيات والتواريخ متسقة بينما تُعاد صياغة النقاط عمداً لكل وظيفة. وإعادة الكتابة مقيّدة بقصد: يُمنع النموذج من اختلاق جهة عمل أو شهادة أو تاريخ، ومن ادّعاء تقنية لا أساس لها في سجل المرشّح، ومن استخدام حشو مثل 'شغوف بـ' أو 'موجّه بالنتائج'. المصادقة عبر NextAuth v5 مع Google، ويعمل الوسيط الطرفي بإعداد بلا مُهايئ فتأتي الهوية من الرمز وحده، ويعيد الطلب غير المصادَق عليه رمز 401 بصيغة JSON بدل تحويله إلى صفحة HTML تكسر قراءة الرد في المتصفح. أما الواجهة فورقية دافئة: خلفية كريمية، ولون برتقالي واحد، وخطوط شعرية بدل الظلال، وثلاثة خطوط لكل منها مهمة واحدة، ورسوم SVG مكتوبة يدوياً فلا توجد مكتبة أيقونات في المشروع كله. نحو ٧٬٧٠٠ سطر في ٦٠ ملفاً، و١٠ مسارات API، و٦ صفحات.

الشاشات



بالحركة
على الجوال



ابدأ مشروعك