"Accio doesn't just watch the lecture with you; it understands exactly how to help you master it."
Accio is an autonomous, multi-agent learning engine that watches a lecture alongside its user and continuously models their comprehension in real time. By mapping lecture content into a 384-dimensional neural embedding space, Accio tracks knowledge state with mathematical precision and then acts on it, delivering personalised context and clarification without the generic advice of a traditional AI
A student watches a video. As they interact with it such as pausing, rewinding, acing or failing quiz questions etc, Accio captures every signal automatically. These signals feed a live Bayesian evidence engine that updates a per-concept mastery score and uncertainty score for every topic in the lecture. The weakest, most uncertain concepts bubble up and trigger the autonomous agent, which generates a structured Context Pack and delivers a targeted, grounded explanation back to the student in real time.
Traditional LLMs have to cram the student's entire history, so things such as rewinds, quiz scores, notes etc into a text prompt. This is expensive, lossy, and hits a hard limit so when the context fills up, the model forgets.
Accio sidesteps this entirely. Rather than sending history, it sends geometry — a context extracted from a live mathematical 384 dimensional representation of the student's knowledge state. The result is a payload orders of magnitude smaller than a chat history, but denser in meaning: every field is a mathematically derived signal, not a text approximation.
The graph is the memory. The LLM is only called when it's needed, with exactly the context it needs, nothing more.
Video Lecture
│
▼
Player Events (pause, rewind, quiz, …)
│
▼
┌─────────────────────────────────────────────┐
│ Confusion Model │ ← trained on MOOCCube (~250k events)
│ outputs: confusion_probability, risk_band │
└─────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ Supabase Learning Data API │ ← stores & retrieves telemetry
│ /store-learning-data /get-learning-data │
└─────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ GraphState — Evidence Engine │ ← Bayesian mastery derivation
│ mastery ∈ [-1, 1] uncertainty ∈ [0, 1] │
└─────────────────────────────────────────────┘
│
├──── 3D WebGL Learner Graph (live visual for testing purposes)
│
└──── Context Pack → Gemini (personalised explanation)
Accio/
├── assets/
│
├── confusion_model/ # [INTELLIGENCE] Trained ML classifier (MOOCCube dataset) that
│ # predicts student confusion from binary behavioral signals.
│
├── landing/ # [ONBOARDING] Standalone Vite-based project handling marketing,
│ # user waitlist flow, and the initial onboarding experience.
│ # live at https://acciohackeurope.vercel.app/
│
├── supabase/ # [INFRASTRUCTURE] Configuration and SQL migrations for the cloud
│ # database tracking long-term Bayesian mastery scores.
│
├── webgl_visualisation/ # [TESTING] Interactive 3D diagnostic tool that renders
│ # student knowledge state from 384D neural embeddings.
│
│
│
├── server.py
│
├── app.js
│
├── app.html
│
├── styles.css
│
├── requirements.txt
│
└── README.md
Before any session begins, Accio processes the lecture's transcript into a semantic knowledge graph:
- Each concept/topic in the video is embedded with a
sentence-transformersmodel into a 384-dimensional vector. - PCA reduces these to 2D
(x, y)coordinates — topics that are semantically similar end up physically close. - k-Means clustering groups topics into subject domains (e.g. "Linear Algebra", "Probability").
- Cosine similarity between embeddings determines the weight of each link (cylinder) between topics.
confusion_model/ contains a trained ML classifier (trained on the MOOCCube dataset — ~250,000 real student video interaction events) that computes a confusion_probability ∈ [0, 1] and risk_band (low / medium / high / very_high) purely from session-level engagement metrics:
watching_count— how many times this segment was viewedrewind_events_est— estimated number of rewindslocal_watching_time_sec— total wall-clock time spentvideo_progress_time_sec— actual video time coveredpause_seconds— cumulative pause duration
This model complements the evidence engine for cases where explicit quiz/confusion signals aren't available which gives Accio a signal even for a passive viewer.
Enter the API Keys in .env.local
# First-time setup + run
cd <path-to-project>
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python3 server.py
# Next runs
cd <path-to-project>
source .venv/bin/activate
python3 server.py