La complexité pédagogique de l'IELTS
L'IELTS Writing est noté selon 4 critères officiels : Task Achievement, Coherence & Cohesion, Lexical Resource, et Grammatical Range & Accuracy. Chaque critère reçoit un score de 1 à 9 (les "Band Descriptors"). La difficulté technique n'est pas de noter une réponse. C'est de noter selon des rubrics précises, de manière cohérente, sur des centaines de copies par semaine.
Un correcteur humain prend 5 à 10 minutes par copie. Multiplié par le volume d'étudiants, c'est une contrainte opérationnelle majeure. L'objectif : automatiser la correction sans perdre la précision des Band Descriptors officiels.
Un correcteur humain prend 5 à 10 minutes par copie. Multiplié par le volume d'étudiants, c'est une contrainte opérationnelle majeure. L'objectif : automatiser la correction sans perdre la précision des Band Descriptors officiels.
Architecture multi-rôles : Admin → Teacher → Secretary → Student
La hiérarchie du système reflète exactement celle d'un centre de langues réel. L'Admin configure les cours, niveaux et leçons. Les Teachers assignent les leçons à leurs étudiants et contrôlent exactement qui voit quoi et quand. Les Secretaries gèrent les emplois du temps et les inscriptions. Les Students accèdent uniquement à leur contenu assigné.
Le module timetable inclut des créneaux horaires (
Le module timetable inclut des créneaux horaires (
TimeSlot, StudentTimetable, StudentTimeSlotAttendance) pour reproduire fidèlement le fonctionnement d'un centre physique. Le contrôle granulaire des devoirs (qui a accès à quelle leçon, à quelle date) a été l'un des défis les plus complexes à modéliser.
Le moteur de correction IA : OpenAI + IELTS Band Descriptors
C'est le cœur différenciant du projet. Quand un étudiant soumet une réponse écrite, le système construit un prompt qui inclut : la réponse de l'étudiant, les Band Descriptors officiels pour chaque critère, et des instructions de scoring structuré.
OpenAI retourne un score par critère (
Le système supporte plusieurs versions de prompts en parallèle, permettant des comparaisons A/B entre différentes formulations pour optimiser la précision du scoring.
OpenAI retourne un score par critère (
CriterionScore), des annotations d'erreurs spécifiques (ErrorAnnotation), et un commentaire global. Ces résultats sont stockés dans AIScoringAnalysis avec versioning des prompts via AIPromptVersion. Leçon apprise : en production, les prompts évoluent, et sans versioning, on perd la traçabilité des scores.Le système supporte plusieurs versions de prompts en parallèle, permettant des comparaisons A/B entre différentes formulations pour optimiser la précision du scoring.
Résultats mesurables
Les métriques d'usage interne ont mesuré des gains concrets sur l'interface enseignant : la navigation a été réduite de 6 sections confuses à 2 entrées claires (67% de réduction). Le nombre d'étapes pour assigner une leçon est passé de 7+ à 4 (43% plus rapide). Le temps de formation d'un nouvel enseignant est passé de 2–3 heures à 30 minutes (75% de réduction), soit une économie estimée à 650+ heures de temps enseignant par an. Le taux estimé de réduction des tickets support est de 60%.
Ce qu'on ferait différemment
Le versioning des prompts IA aurait dû être conçu dès le départ. En production, les prompts évoluent constamment : reformulations, ajout de contexte, changement de modèle. Sans
Leçon : tout ce qui touche à l'IA en production doit être versionné, tracé et auditable dès le premier déploiement.
AIPromptVersion dès le jour 1, les premiers scores produits ne sont pas reproductibles. On l'a ajouté après coup avec une migration rétroactive.Leçon : tout ce qui touche à l'IA en production doit être versionné, tracé et auditable dès le premier déploiement.
Stack technique complète
| Couche | Technologie |
|---|---|
| Backend | Laravel (PHP) |
| Interface | AdminLTE + Blade |
| IA Grading | OpenAI API |
| Examens | Custom exam engine |
| Auth | Laravel Breeze |