Back to projects

AI / ML · In progress

Personal Learning Agent

A multi-agent RAG system that ingests AI/ML content, builds a hybrid concept-and-tool knowledge base in Obsidian, and answers adaptively — with video timestamps and watch-tracking so nothing gets re-taught.

Year
2026
Role
Solo build
Stack
Python, LangGraph, LangChain, Chroma, Claude, Obsidian

Overview

I was drowning in AI/ML content — YouTube lectures, papers, docs — and re-watching the same explanations because I couldn’t track what I’d already learned. So I built a personal learning agent: a multi-agent RAG system that ingests that content, organizes it into a knowledge base, and answers my questions with citations back to the exact moment in the source video.

It writes everything into my Obsidian vault, so the knowledge base is something I actually own and can browse, not a black box.

The problem

Learning from scattered video content has two failure modes: you can’t easily find the 90 seconds that answers your question, and you have no memory of what you’ve already covered — so you waste time re-learning. I wanted an agent that retrieves precisely and tracks coverage.

Approach

  • Ingestion pipeline — pulls content (YouTube transcripts first) and structures it into a hybrid knowledge base organized by both concepts and tools, so retrieval works whether I ask “what is a cross-encoder?” or “how do I use LangGraph?”
  • Adaptive answers with timestamps — responses cite the source video and the exact timestamp, and a watch-tracking layer records what I’ve already seen so material is never repeated.
  • LangChain → LangGraph refactor — I first built the pipeline in LangChain, then deliberately rebuilt it in LangGraph to benchmark the tradeoffs of explicit graph orchestration against chain-based flow.
  • Claude + Chroma + Obsidian — Claude (via Claude Code) for reasoning, a Chroma vector store for retrieval, and an Obsidian vault writer so the output is durable, linkable notes.

What I learned

Rebuilding the same system twice — once in LangChain, once in LangGraph — taught me more about agent orchestration than any tutorial could. LangGraph’s explicit state machine makes branching and memory legible; you can see exactly where the agent is and why. That legibility is what makes multi-agent behavior debuggable instead of magic.

What’s next

A Discord surface so I can query the knowledge base conversationally, and spaced-repetition prompts driven by the watch-tracking data.