Archit OS
~/projects/coursemateai/README.md
← all projects
RAG System·Completed

CourseMateAI

A study assistant that stays inside your course material, with five ways to learn from it.

Role
Agentic AI Engineer
Timeline
Jan – Feb 2026
Team
Solo
Status
Completed
CourseMateAI screenshot
5
learning modes
2-pass
JSON auto-correction
2-stage
boss generation
FAISS
vector retrieval

The problem

Students drown in slides, papers and textbooks, and rote reading does not build understanding. General AI assistants hallucinate when asked about specific course material, which makes them unreliable for studying. A study tool has to stay grounded in what the student actually uploaded.

What it does

Grounded chat

Answers come from retrieved chunks of your own documents, with the model told to say so when the material does not cover a question.

Notes and flashcards

Turns documents into study notes and flashcards for active recall.

Quiz mode

Generates questions from your material and checks your answers.

Arena

Battle AI boss opponents that are generated through a two-stage LLM pipeline.

Structure-aware ingestion

Chunking that respects slide and section boundaries, with overlap and section-header metadata for better retrieval.

How it flows

  1. Upload slides and PDFs
  2. Structure-aware chunking
  3. FAISS index
  4. Mode-specific retrieval
  5. Grounded generation
  6. Auto-corrected JSON

Problems solved

Hallucination

ProblemLLMs produce plausible but wrong answers about specific course material.

SolutionStrict document grounding with retrieval, so answers stay tied to the uploaded content.

Five modes, five behaviours

ProblemChat, notes, flashcards, quiz and arena each need different retrieval and output formats.

SolutionLangGraph state machines with mode-specific nodes, prompts and output contracts.

Structured output that breaks

ProblemModels sometimes return malformed JSON, which would crash a quiz or flashcard screen.

SolutionA two-pass auto-correction step repairs the output before it reaches the UI.

Built with

PythonFastAPILangChainLangGraphFAISSMistralNext.jsRAG