School Handbook Chatbot
Building the Handbook Chatbot: Turning a Static PDF Into an AI-Powered Assistant
For a long time, I wanted to build something practical—something that wasn’t just another tutorial notebook or toy demo. I wanted a project that pulled together everything I’d been learning about retrieval-augmented generation (RAG), embeddings, LLMs, and full-stack app development.
So I picked a very real, very relatable problem: the Bartlesville High School Student Handbook.
Handbooks are dense. They’re difficult to search. And the people who need them most—students, parents, teachers—rarely have time to read through 80+ pages to find simple answers. It felt like the perfect opportunity to build an AI assistant that could turn a static document into something conversational, fast, and genuinely useful.
This project became my first true end-to-end applied AI build. What started as a simple RAG chatbot quickly evolved into a layered, multi-source, agent-driven system—and I documented the entire journey in the change log on my site.
I documented my journey here – Chatbot Change Log
From PDF → Knowledge Base → Chatbot
The first challenge was transforming the handbook into a form an LLM could reason over.
I wrote a document ingestion pipeline that:
-
Extracted text from the PDF
-
Cleaned, split, and chunked the content into semantic sections
-
Embedded each chunk (using BGE-large-en-v1.5)
-
Stored everything in ChromaDB for fast vector retrieval
This turned a long, linear PDF into a searchable knowledge base that an LLM could access in real time.
With FastAPI as the backend and Streamlit as the frontend, the first version of the chatbot went live: a simple interface where users could ask questions in natural language and get grounded, contextual answers directly from the handbook.
Layering in LLMs, Agents, and Better UX
Once the core worked, I began pushing further. Each update became a chance to explore deeper layers of AI engineering and user-centered design.
LLM Integration
I started with Llama-3.3-70B-Instruct-Turbo, a cost-efficient but highly capable model, wrapped behind a lightweight completion API. Prompt strategies evolved, including system messages with tone rules, citation requirements, and fail-safes.
Agent-Driven Retrieval (v2.0)
As the project matured, I rebuilt the logic using LangGraph.
This allowed the assistant to:
-
Rewrite queries for better retrieval
-
Choose between multiple data sources
-
Pull from the handbook or from a new school-calendar knowledge base
-
Plan multi-step reasoning paths
This upgrade made the assistant feel more “aware” of what the user wanted, and reduced hallucinations dramatically.
UI & Experience
I refreshed the frontend with:
-
Clearer disclaimers
-
A friendly avatar
-
Conversation-style interface improvements
-
Registration and API-key verification for controlled access
These weren’t afterthoughts—they made the tool feel polished and approachable for real users.
Technologies Under the Hood
Here’s the stack that powers the chatbot:
-
Python (FastAPI, LangChain/LangGraph, ChromaDB, pydantic)
-
Embeddings: BGE-large-en-v1.5
-
LLM: Llama-3.3-70B-Instruct-Turbo (open-tier)
-
Vector Database: ChromaDB
-
Frontend: Streamlit
-
Deployment: Railway (free/low-cost hosting)
-
Security: API keys, CORS rules, user registration workflow
This project became the place where my work in data science, AI engineering, web development, and experimentation all converged.
What This Project Demonstrates
Building this chatbot gave me a practical way to show the skills I’ve been developing through coursework, bootcamps, and personal exploration:
-
How to design and build a full RAG pipeline
-
How to structure and index data so LLMs can reason over it
-
How to choose, evaluate, and integrate open-source models
-
How to build a real backend, front-end, and deploy an app end-to-end
-
How to version, iterate, and improve an AI product thoughtfully
-
How to apply agentic patterns to improve accuracy and reliability
Most importantly, the project shows that I don’t just study AI—I build with it.
Where It’s Going Next
I’m continuing to evolve the system. Upcoming improvements include:
-
LightRAG/knowledge-graph integration to give the chatbot more structured reasoning
-
A fully rewritten V3 architecture
-
More school-specific datasets: event calendars, policies, extracurricular FAQs
-
Improved embeddings & model selection
-
Cleaner onboarding and multi-user support
Each iteration gives me a chance to explore new ideas and sharpen my skills.
Why I Built It
This wasn’t just a technical exercise. I wanted to build something real, something useful, something others could start using immediately.
Turning a dense handbook into a conversational AI assistant felt like the perfect blend of:
-
curiosity
-
service
-
technical challenge
-
and the type of applied AI experience that actually matters
It’s a project that reflects how I approach learning: through building, experimenting, and going deep into what interests me.

