A textbook RAG chatbot, frozen in amber
An O'Reilly book companion project that ingests PDFs and answers questions via LangGraph—now archived for reference.

What it does
This monorepo is a full-stack template for chatting with PDFs. Upload documents through a Next.js frontend; the backend parses them into embeddings, stores them in Supabase, and retrieves relevant chunks to answer questions via OpenAI (or another LLM). Responses stream in real time, with clickable source references.
The interesting bit
The architecture is split into two LangGraph state machines—one for ingestion, one for retrieval—which you can inspect and debug in LangGraph Studio. It’s essentially a well-documented reference implementation for the O’Reilly book Learning LangChain, not a production SaaS.
Key highlights
- Monorepo with Turborepo: separate backend (LangGraph/Node) and frontend (Next.js/React)
- Two distinct graphs:
ingestion_graph.tsfor indexing,retrieval_graph.tsfor Q&A - Vector storage via Supabase with pgvector; configurable for other stores
- Streaming SSE responses with cited source chunks
- LangSmith tracing support built in for debugging
Caveats
- Not maintained: the README explicitly states “not actively maintained” and warns against expecting responses to issues or PRs
- Chat history is session-only (not persisted); only ingested documents survive across sessions
- Requires manual Supabase setup (table +
match_documentsfunction) before first use
Verdict
Good for developers learning LangChain/LangGraph who want a working reference to trace through. Skip it if you need an actively supported drop-in PDF chatbot—this is a teaching tool, not a product.