LLM-powered assistant for querying lecture slides through a lightweight Streamlit interface.
- Smart lecture search: Accepts natural-language questions and returns grounded answers with slide-level citations.
- Built-in slide loader: Scans and preprocesses all PDFs in the
data/folder into searchable document chunks. - Retrieval-augmented generation: Uses vector similarity search with OpenAI embeddings and a language model to generate context-aware responses.
- Streamlit interface: Minimal UI for running local semantic search and viewing citations in real time.
.
├── app
│ ├── __pycache__
│ └── main.py # Streamlit app to run the Lecture Navigator UI
│
├── backend # Core logic for PDF loading, splitting, embedding, and QA
│ ├── __init__.py
│ ├── data_loader.py # Loads PDFs from the data folder
│ ├── splitter.py # Splits documents into smaller chunks
│ ├── vectorstore.py # Embeds chunks and stores them in FAISS
│ ├── qa_chain.py # Builds the LangChain QA chain
│ └── pipeline.py # Initializes the full pipeline
│
├── data #Folder containing lecture PDF slides
│ └── *.pdf
├── env
│ └── .env # Your OpenAI API key goes here
├── notebooks
│ └── test_questions.ipynb # Notebook for asking questions and interacting with results
│
├── preview # UI preview images
│ ├── question_answer.png
│ └── slide_preview.png
├── README.md
└── requirements.txt
- Clone the repository
git clone https://github.com/your-username/lecture-navigator.git
cd lecture-navigator- Create and activate a virtual environment
conda create -n lecture-navigator python=3.11 -y
conda activate lecture-navigator- Install dependencies
pip install -r requirements.txt- Set up your OpenAI API key
Create a file named .env inside the env/ directory
Add your OpenAI API key like this:
OPENAI_API_KEY=your_openai_api_key_here
Make sure not to share this key publicly. It gives access to your usage and billing on the OpenAI platform.
- Add your PDF lecture slides
Create the
data/folder if it doesn't already exist:
mkdir dataPlace all your lecture slides (as .pdf files) into the data/ folder.
To launch the interactive app in your browser, run the following command from the root directory:
python -m streamlit run app/main.pyThis will open a local Streamlit interface where you can:
- Ask natural-language questions about your lecture slides
- Get answers with source citations (slide numbers and file names)
Here’s what the app looks like in action:
- Open
notebooks/test_questions.ipynbto explore the system in a code-first environment. - The notebook includes preconfigured environment loading, pipeline initialization, and sample questions.
- Modify the list of questions to reflect content from the PDFs stored in the
data/folder.
Useful for testing, debugging, and custom evaluation without launching the Streamlit interface.
- Darylisha Williams — @dwilliams170
- Gennadii Ershov — @imwaymaran
- Jessica Lawrence — @JessLawren
- Lubna Asmi — @lubnaasmi
This project is licensed under the MIT License.
This project was developed as part of The Knowledge House's Innovation Fellowship.
Special thanks to the TKH team for their support and guidance.

