DEV Community

Cover image for Stateless LLMs Are a Problem for EdTech — Here's How I Fixed It With a Graph-Vector Memory Layer
John Samuel
John Samuel

Posted on

Stateless LLMs Are a Problem for EdTech — Here's How I Fixed It With a Graph-Vector Memory Layer

The problem

Every AI study tool I'd used had the same flaw: total amnesia. Ask it about your exam today, come back tomorrow, and it's a blank slate. No memory of what you struggled with last week, what topics you already know cold, or when your next exam actually is.

For "The Hangover Part AI" hackathon by WeMakeDevs, powered by Cognee, I decided to fix that for students specifically. The result is Summa AI — a learning companion built around persistent memory instead of stateless chat.

What it does

Summa AI is a Next.js frontend paired with a FastAPI backend, with Cognee as the memory layer running underneath everything:

  • A chat workspace that keeps context across sessions instead of resetting every time
  • Proactive exam check-ins pulled from stored exam data
  • Knowledge gap detection — surfacing weak topics and missing prerequisites before they become a problem
  • A Proficiency Hexagon in the dashboard, visualizing where you actually stand across topics
  • Adaptive study plans that respond to what you already know, not a generic curriculum
  • A forget() step for mastered topics, so the memory layer stays sharp instead of bloated

How Cognee powers it

I leaned on all four parts of Cognee's memory lifecycle:

remember() — every conversation, exam, and study artifact gets written into its own Cognee dataset. A remember_conversation() call stores the query + response summary; remember_exam() stores course, exam type, date, and topics; remember_learning_progress() stores topic-level scores.

recall() — this is the read path behind almost every feature: chat context lookup, exam reminders, saved artifacts, and the hexagon dimensions in the dashboard all route through it.

improve() — triggered right after new progress is recorded, or when a user gives feedback on a response, so the memory consolidates instead of just accumulating.

forget() — lets a student explicitly clear a mastered topic, or wipe a whole dataset, so old noise doesn't crowd out what's actually relevant.

What I'd build next

Deeper graph traversal for concept-map style prerequisite chains, and tighter feedback loops so improve() reacts to more signals than just explicit ratings.

Built for students first — because the thing that should never have amnesia is the tool that's supposed to know how you learn.

WeMakeDevs #Cognee #TheHangoverPartAI #buildinpublic #nextjs #fastapi

Top comments (2)

Collapse
 
hannune profile image
Tae Kim

The forget() step is one of the underappreciated parts here — most memory systems optimise purely for accumulation, but a bloated memory layer increases retrieval noise faster than it increases recall precision, so explicit topic eviction when mastery is confirmed is the right design. The prerequisite gap detection is fundamentally a graph traversal problem: you need the dependency edges between topics, not just topic embeddings, to surface what a student is missing before a concept becomes load-bearing. One thing to watch with the improve() trigger on new progress: if it fires synchronously after every session update it can create consolidation drift where the agent revises its understanding mid-conversation and the response strategy shifts noticeably, so batching the consolidation pass to end-of-session tends to give more stable behavior. The hexagon visualisation is a strong student-facing affordance — spatial radar charts are readable enough to be actionable in a way that topic-level score tables rarely are.

Collapse
 
codegallantx profile image
John Samuel

Noted. Thanks