À propos du projet

LearnMate AI est un compagnon d'étude basé sur l'IA qui organise le matériel d'étude en Spaces et Projects, traite les PDF importés et fournit un Tutor qui répond aux questions uniquement à partir du contenu importé avec des citations de pages. Lorsque le matériel ne couvre pas une question, le système renvoie explicitement une réponse « not enough evidence ». Un Quiz cible les concepts faibles, évalue les réponses en texte libre avec des retours, et met à jour les scores de Mastery par concept. Des tâches en arrière-plan génèrent des Recommendations fondées sur le propre matériel de l'utilisateur, et un tableau de bord Growth affiche les tendances. L'architecture combine un frontend React/Vite avec une API Node.js/Express et des workers d'arrière-plan BullMQ. Les PDF sont traités page par page : extraction de texte, découpage en chunks, embeddings via BAAI/bge-small-en-v1.5 dans pgvector, et extraction de concepts. Les réponses du Tutor utilisent une recherche de similarité sur les chunks d'un projet et un JSON validé par schéma pour garantir la suffisance des preuves. La sélection des questions de Quiz évalue les concepts selon l'écart de maîtrise, le manque de pratique, la récence et les erreurs. Le Mastery utilise un historique en ajout seul avec une pondération 60/40 des nouvelles preuves. La stack comprend Prisma avec PostgreSQL (Neon) et pgvector, Redis (Upstash) pour les files de tâches, Groq pour les appels LLM, Hugging Face pour les embeddings hébergés, Cloudinary pour le stockage des PDF, et l'authentification JWT avec des cookies HTTP-only. La configuration locale nécessite Node.js 20+, une base de données Postgres avec pgvector activé, Redis, et des clés API pour Groq, Hugging Face et Cloudinary. Le projet inclut des tests d'intégration contre une infrastructure réelle couvrant l'isolation entre utilisateurs, l'accès admin, les calculs de mastery, la sélection adaptative, la fiabilité du tutor et l'idempotence du traitement du matériel. Le déploiement est documenté pour Vercel (frontend) et Render (processus combiné API et worker).