Inspiration

Every year, new club officers and student council members take over, and the old team graduates. What they learned goes with them: why two clubs got booked into the same classroom, why homework reminders arrived after the deadline, why the sign-up sheet mixed up first and last names. The new team makes the same mistakes and spends weeks working out fixes that already existed. We wanted school teams to have a memory that stays when the people leave.

What it does

MemoryOps for Schools is an AI assistant with a permanent memory of past problems and fixes.

  1. A student officer describes a problem, for example "Two clubs were booked into the same classroom at the same time."
  2. The assistant searches the school's memory with semantic search and shows the most relevant past cases, with how similar, how confident and how verified each one is.
  3. It suggests an action, such as an investigation task, and explains which past cases support it.
  4. A teacher or officer must click Approve. Nothing happens without a human.
  5. After approval, the assistant creates the task and writes what happened back into memory. A future officer who searches later finds it.

If nothing relevant is found, the assistant says so: "No verified historical memory was found." It does not make anything up.

How we built it

  • PostgreSQL + pgvector store every memory, task and agent action in one database, with semantic (vector) search.
  • Amazon Bedrock (Claude) reasons over the retrieved memories, and Titan embeddings turn text into vectors. An offline mode with local embeddings lets the project run without cloud accounts.
  • Node.js, TypeScript and Express power the backend. A simple HTML/CSS/JavaScript page is the interface.
  • Zod validates input, and Vitest runs unit, integration, end-to-end and failure-path tests.
  • A grounding step in code removes any record the AI mentions that was not actually retrieved, so the model cannot invent evidence.
  • Search results are ranked by similarity, confidence, verification and recency. Memories replaced by newer decisions are excluded, and conflicting memories are flagged.
  • Every agent action is logged with its approval state.

Challenges we ran into

  • Stopping the AI from making things up. We solved it by checking every record ID the model cites against what was retrieved, and computing the warnings (low confidence, stale, conflicting) in code instead of trusting the model.
  • Double-clicks creating two tasks. We lock the run during approval so only one task can ever be created.
  • Running without Docker. Our machine could not run Docker, so we added a dev mode that uses an in-process Postgres with pgvector.
  • Adapting the idea to school life. The first version was built for engineering teams. We rewrote the demo data and wording around clubs, reminders, sign-ups and volunteer hours.

Accomplishments that we're proud of

  • The full loop works end to end: retrieve, reason, propose, approve, act, observe and remember. A brand-new search finds the memory that the last run created.
  • Human approval is required for every action.
  • The assistant is honest when it does not know.
  • The test suite checks real database rows, not just what the screen shows.

What we learned

  • A memory that can be wrong needs confidence, verification and provenance, not just search.
  • Safe AI tools put the checks in code and keep a human in charge of anything that changes something.
  • Combining vector search and normal tables in one PostgreSQL database keeps the system simple.

What's next for MemoryOps for Schools

  • Let student officers log new problems and fixes from a simple form or a chat.
  • Add logins for students and teachers, with each school kept separate.
  • Connect to real tools such as the room booking sheet, calendars and reminder messages.
  • Pilot it with a real student council and learn from their feedback.

Built With

Share this project:

Updates

Submission history