Etude.AI is a multi-agent system for a Tunisian primary-school tutoring platform: it uses LLM agents, a Neo4j knowledge graph, and a Qdrant vector store to summarize textbook lessons, answer kids’ questions, and generate quizzes, while a dedicated planner agent combines user and session history to propose study sessions for the parents.
# Etude.AI – Multi-Agent Tunisian Educational Platform
Etude.AI is a **backend service** that uses multi-agent LLMs, a Neo4j knowledge graph, and a Qdrant vector store to support primary-school students (in Arabic/Tunisian dialect) with:
- **Lesson summaries**
- **Question answering**
- **Auto-generated quizzes**
- **PDF session reports for parents**
This repo contains **only the backend, data pipelines, and planner logic** – not the frontend UI.
**The complete platform, including the frontend application, Docker configuration, deployment setup, and production infrastructure, is maintained in a private repository.**
---
## System Overview
The system is built around several agents and a small amount of session memory:
- **Summary Agent** – Generates a structured JSON “lesson script” (slides + optional images) from the book’s knowledge graph.
- Implemented in: `app/crew/agents.py` → `summary`
- Used by: `generate_summary_json` in `app/handlers.py`, exposed via `POST /summary` in `app/app.py`.
- **Q&A Agent** – Answers free-form questions from the student, using Qdrant + KG as context and a chat memory buffer.
- Implemented in: `app/crew/agents.py` → `qa`
- Used by: `handle_qa` in `app/handlers.py`, exposed via `POST /qa`.
- **Quiz Agent** – Creates multiple-choice and true/false questions for a given topic and returns them as JSON.
- Implemented in: `app/crew/agents.py` → `quiz`
- Used by: `generate_quiz_json` in `app/handlers.py`, exposed via `POST /quiz`.
- **Feedback Agent** – Reads the stored session data and writes a short encouraging note in Tunisian dialect.
- Implemented in: `app/crew/agents.py` → `feedback`
- Used inside: `POST /report` in `app/app.py` to include the note in the PDF.
- **Session Memory** – Very light in-memory store (`SessionMemory` in `app/pdf_report.py`) wrapped as `GLOBAL_MEM` in `app/runtime.py`.
- Logs: summaries, Q&A history, quiz logs, feedback note, etc. for the current ses …