قلمي
مساعد تصحيح للمعلّمين، بالعربية والإنجليزية. يقرأ أوراق الطلاب المكتوبة بخط اليد ويكتب الدرجة مسودة، ثم يتوقف، لأن قاعدة البيانات لا تسمح لغير معلّم باعتماد درجة نهائيًا.
زُر qalamiapp.com ←- المنصة
- Next.js + Claude API، بُني بـ Claude Code
- التقنيات
- Next.js 16, React 19, Supabase (Postgres, Auth, Row Level Security, Storage), Claude API, TypeScript, Railway, Paddle, Resend
ما هو
يصحّح قلمي أوراق الطلاب المكتوبة بخط اليد. يصوّر المعلّم أوراق الصف كلها، فيقرأ قلمي كل ورقة مقابل سلّم التصحيح الخاص بذلك المعلّم، ويكتب درجة مسودة لكل معيار، ويكتب معها الملاحظات. ثم يمرّ المعلّم على المسودة، فيُبقي ما هو صحيح ويغيّر ما ليس كذلك، ويعتمد الورقة. وعلى مستوى صف كامل، هذا يحوّل أمسية تصحيح إلى قراءة مراجِعة.
ويعمل بالعربية وبالإنجليزية، بواجهة تعمل من اليمين إلى اليسار فعلًا، لا واجهة مقلوبة عن الإنجليزية. وبالنسبة للمدارس التي بُني من أجلها، هذه ليست طبقة ترجمة أُضيفت في النهاية، بل هي المنتج نفسه. كل نص، وكل صيغة تاريخ، وكل صيغة جمع مكتوبة مرتين؛ والعربية لا تجمع كما تجمع الإنجليزية، فجملة تعدّ ثلاث أوراق وجملة تعدّ إحدى عشرة ورقة تحتاجان كلمات مختلفة فعلًا، والواحد والاثنان ليسا رقمين أصلًا بل كلمتان، فيُقال «صفحتان» لا «2 صفحة». وقد صار عدد هذه النصوص يزيد قليلًا على ألفين وستمئة، كل واحد منها محفوظ بالإنجليزية والعربية جنبًا إلى جنب، واختبارٌ يُفشل البناء إن عرضت شاشةٌ على المعلّم نصًا إنجليزيًا لا عربية بجانبه.
وهو أيضًا الشيء الوحيد في هذه الصفحة الذي هو منتج حيّ لا نموذج أوّلي. مرّ مخطّط قاعدة بياناته بتسع وخمسين عملية ترحيل (migration)، وكثير من ذلك آلات غير برّاقة تحتاجها المدرسة فعلًا: حسابات تظل تعمل حين يترك معلّم المدرسة، ونسخ ممسوحة ضوئيًا تحذف نفسها بعد مدة محددة، وسجلّ لتقدّم طالب واحد يبقى متماسكًا عبر الفصول الدراسية.
وكانت الجولات الأخيرة عن بقية أسبوع المعلّم أكثر منها عن التصحيح نفسه. فهناك أوراق غلاف عليها رمز QR لكل طالب، فيمكن تصوير أوراق الصف بالهاتف وتذهب كل صفحة إلى الاسم الصحيح، وبنك تعليقات يستطيع المعلّم مشاركته مع مدرسته. ويستطيع مسؤول المدرسة أن يأخذ عيّنة من الأوراق المعتمدة لدى زملائه ليراجعها (moderation)، ويستطيع المعلّم أن يطلب من زميل تصحيحًا ثانيًا مستقلًا (blind second marking) لبضع أوراق. فلا يرى الزميل اسم الطالب ولا الدرجات الأولى حتى يُدخل درجاته هو، لأنني أردت أن يكون الرأي الثاني رأيًا ثانيًا فعلًا، لا ردًّا على الرأي الأول.
وكان الأسبوع الأخير من سبتمبر عن إدخال العمل من حيث يوجد أصلًا. فصار المعلّم يستطيع أن يختار أعمال الطلاب من Google Drive أو OneDrive مباشرة، وأن ينقل قائمة صفّه من Google Classroom، وصار الطلاب يستطيعون إرسال صفحاتهم بأنفسهم عبر رابط أو رمز QR خاص بصفّهم. وهذه الأخيرة بُنيت لأول معلّم من خارج المشروع سجّل في قلمي، لأنها كانت أول ما طلبه. ويمكن أيضًا ترك أوراق الصف لتُصحَّح خلال الليل، عبر خدمة الدفعات (batch) لدى Anthropic، وكلفة تشغيلها النصف. ويستهلك المعلّم عدد الصفحات نفسه في الحالتين، ولذلك يصفها التطبيق بأنها أكفأ ولا يقول أبدًا إنها أرخص، لأن التوفير ليس توفيره هو. وصار مسؤول المدرسة يستطيع أن يحدّد حدًّا للصفحات لكل معلّم، بعد أن انتبهتُ إلى أن معلّمًا متحمّسًا واحدًا قد يستهلك الصفحات المشتركة لقسم كامل. وهذا الحد اختياري، ولا يعمل إلا إذا وضعه المسؤول.
وحين صدر نموذج أحدث، قارنته بالنموذج الذي يستخدمه قلمي على الأوراق الحقيقية نفسها قبل أن أغيّر شيئًا. كان تشغيله أرخص، لكنه كان يُسقط أحيانًا معايير من الدرجة كليًا، ويعطي الأوراق العربية درجة أقل بنحو درجة واحدة من ست عشرة، فبقي قلمي على النموذج الذي كان عليه.
ملاحظة بصراحة: هو لا يقرأ كل كلمة قراءة صحيحة. الخط اليدوي يبقى خطًا يدويًا، وإجابة مُمحاة، أو إجابتان مكتوبتان على سؤال واحد، قد تُربكه. ولهذا ليست قراءة المعلّم للمسودة إجراءً شكليًا: فالتصميم يفترض أن المسودة مخطئة في مواضع قليلة، ويحاول أن يجعل تلك المواضع سهلة العثور عليها. أما خط اليد العربي تحديدًا فقد قسته الآن على أوراق طلاب حقيقية بدل أن أفترضه، وتبيّن أن قراءة الخط لم تكن هي المشكلة، وإن كشف الاختبار ثلاثة أخطاء في مواضع أخرى أُصلحت الآن. أما الخط العربي غير المرتّب فقد قيس مرة واحدة، وجاءت القراءة صحيحة بنسبة 90.5 بالمئة، لكنه كله من كاتب بالغ واحد، وهذا ليس كصفّ من الأطفال.
لماذا بنيته بهذه الطريقة
التصحيح هو الجزء الذي يلتهم أمسيات المعلّمين، فمن البديهي أن يحاول أحد المساعدة فيه. وهو أيضًا الجزء الذي يقع الخطأ فيه على طفل، لأن الدرجة تلاحق الطالب بعد ذلك. والسؤال الذي ظللت أعود إليه لم يكن هل يستطيع نموذج أن يقرأ خط اليد، فهو يستطيع في الغالب، بل ما الذي يجب أن يتحقق قبل أن أكون مرتاحة لأن يقترب رقم أنتجه ذلك النموذج من تقرير حقيقي.
الجزء الذي تطلّب تفكيرًا حقيقيًا
هناك نسخة من قلمي تصحّح أوراق الصف وتعرض على المعلّم نتيجة نهائية جاهزة. هي أسرع في الاستخدام وتبدو أفضل في العرض التجريبي، وقد قررت ألا أبنيها، لأن البرنامج متى أعلن رقمًا لم يعد المعلّم هو من يتخذ القرار، بل صار يعترض على قرار اتُّخذ سلفًا. ولم أرد أن يوضع معلّم في هذا الموقف بشأن طالب يعرفه هو ولا يعرفه البرنامج.
لذلك لا يعلن قلمي درجة أبدًا. بل يكتبها مسودة، ويعرض ما قرأه من الورقة، وينتظر.
وأكثر ما يسرّني هو المكان الذي حُفظت فيه هذه القاعدة. فهي ليست عُرفًا في الواجهة قد تُسقطه إعادة هيكلة لاحقة بهدوء، بل هي في قاعدة البيانات. تمرّ الورقة بالحالات: مسودة، ثم جاهزة، ثم قيد التصحيح، ثم قيد المراجعة، ثم نهائية، ولا يستطيع أحد غير المعلّم أن ينفّذ الانتقال الأخير. والمخطّط يقول ذلك في تعليق مكتوب فيه: «لا شيء يصبح نهائيًا بغير معلّم.» ويحمل كل معيار على حدة حالته الخاصة أيضًا: قيد الانتظار، أو مقبول، أو مُعدَّل، فتترك قراءة المعلّم أثرًا يبيّن ما نظر فيه فعلًا بدل أن تنطوي كلها في زر اعتماد واحد.
وقراران أصغر خرجا من التفكير نفسه. التصحيح يقول متى يكون غير واثق، ويشير إلى الإجابات المعيّنة التي لم يتيقّن منها، فيذهب انتباه المعلّم إلى موضع الخطر بدل أن يتوزّع بالتساوي على كومة أوراق. والمهلة التي تمحو نسخ الطلاب الممسوحة بعد تسعين يومًا يبدؤها مُشغِّل (trigger) في قاعدة البيانات لا التطبيق، لأن أي شيء يستطيع التطبيق ضبطه يستطيع خلل في التطبيق ضبطه أيضًا، وذلك يعني إما حذف عمل طفل قبل أوانه وإما الاحتفاظ به إلى الأبد.
ما اكتشفته
أربع عبارات في الموقع كانت تقول إن النظام يسجّل مَن قَبِل كل درجة أو غيّرها. وهو لا يفعل. المخزَّن هو الإجراء نفسه — قُبِل، عُدِّل — لا الشخص أبدًا، ولم يكن هناك عمود كهذا في أي من عمليات الترحيل السبع والعشرين التي كان المخطّط يضمّها حينها. وفي مساحة عمل فيها معلّم واحد تبدو القراءتان متطابقتين، ولهذا بقيت العبارة دون أن يلاحظها أحد كل هذه المدة. أما في غرفة معلّمين مشتركة فقد كانت ببساطة غير صحيحة.
ولم أكتشفها إلا لأنني ذهبت أبحث عن الدليل الذي يسند هذا الكلام فلم أجد شيئًا.
واثنتان من الأربع لم تكونا نصًا تسويقيًا. واحدة كانت في الشروط التي توافق عليها المدرسة، وواحدة كانت في إفصاح الذكاء الاصطناعي، وهو الموضع الوحيد المُلزَم بوصف الآلية الموجودة فعلًا. والعبارات الأربع تقول الآن «ما إذا كانت كل درجة قد اعتُمدت أو عُدِّلت»، بالعربية والإنجليزية معًا، لأن هذا هو ما كان الكود يستطيع إسناده.
وقد بُني جزء من ذلك منذئذ. فحين يغيّر معلّم درجةً، يسجّل سجلٌّ الآن الدرجة قبل التغيير وبعده، ومَن غيّرها ومتى، ولا يكتب في هذا السجل إلا قاعدة البيانات نفسها، فلا يستطيع أحد تعديل التاريخ من خلال التطبيق. أما قبول الدرجة كما جاءت في المسودة فما زال يسجّل الإجراء لا الشخص، ولذلك ما زال النص يقول ما هو صحيح فقط.
ما الذي سأضيفه لاحقًا
- مَن اعتمد الورقة. سجلّ التغييرات يغطي الدرجات التي عُدِّلت، وأودّ أن يحمل الاعتماد نفسه اسمًا أيضًا، حتى يكتمل السجل في غرفة معلّمين مشتركة.
- قراءة من متحدّث أصلي للعربية. الواجهة العربية مسودة أولى متأنّية، ومرّت بقراءة دقيقة واحدة صحّحت اثنتي عشرة هفوة، أسوؤها جملة عن مدة الاحتفاظ قالت إن نسخ الطلاب تُمسح حيث قالت الإنجليزية إنها تُحذف. ولم يراجعها بعدُ قارئ لغته الأم العربية، وإلى أن يحدث ذلك لن أعدّها منتهية.
- الخط العربي غير المرتّب بأيدٍ أكثر. القياس الوحيد للخط غير المرتّب جاء من شخص بالغ واحد، وما سيقدّمه المعلّم فعلًا هو خط غير مرتّب من طلاب كثيرين مختلفين، فهذا هو القياس التالي.