A knowledge graph-based tool that extracts topics from course slides and visualizes them as an interactive prerequisite graph with depth-filtered learning resources.
- Upload your course slides (PDF or PPTX)
- Extract topics and their relationships using AI (OpenAI GPT)
- Visualize topics as an interactive knowledge graph
- Filter by difficulty level (Beginner → Intermediate → Advanced)
- Access curated learning resources for each topic
┌─────────────────────────────────────────────────────────────┐
│ [Settings Sidebar] │ [Interactive Graph] │
│ │ │
│ • Upload PDF/PPTX │ 🟢 Beginner nodes │
│ • Enter API Key │ 🟡 Intermediate nodes │
│ • Select Depth Level │ 🔴 Advanced nodes │
│ • Extract Topics Button │ │
│ ├─────────────────────────────│
│ │ [Resources Panel] │
│ │ • Beginner links │
│ │ • Intermediate links │
│ │ • Advanced links │
└─────────────────────────────────────────────────────────────┘
git clone https://github.com/yourusername/course-graph-explorer.git
cd course-graph-explorerpython -m venv venv
# Windows
venv\Scripts\activate
# Mac/Linux
source venv/bin/activatepip install -r requirements.txtstreamlit run app.pyNavigate to http://localhost:8501
course-graph-explorer/
│
├── app.py # Main Streamlit application
├── requirements.txt # Python dependencies
├── README.md # This file
│
├── data/
│ └── resources.json # Auto-saved learning resources
│
├── src/
│ ├── __init__.py # Package initializer
│ ├── parser.py # PDF/PPTX text extraction
│ └── extractor.py # LLM topic extraction + resource fetching
│
└── samples/
└── sample_slides.pdf # Example slides for testing
- Get your API key from OpenAI Platform
- Enter it in the sidebar when running the app
Note: Without an API key, the app uses a mock extractor with sample data for demonstration.
| Format | Extension | Notes |
|---|---|---|
.pdf |
Works with text-based PDFs | |
| PowerPoint | .pptx |
Extracts text from all slides |
| Level | Color | Description |
|---|---|---|
| 🟢 Beginner | Green | Foundational concepts everyone should know first |
| 🟡 Intermediate | Yellow | Core concepts that build on basics |
| 🔴 Advanced | Red | Deep/specialized topics requiring prior knowledge |
- Click nodes to highlight connections
- Drag nodes to rearrange layout
- Hover for topic details
- Zoom in/out with scroll wheel
For each topic, get curated links at all difficulty levels:
- Beginner: YouTube tutorials
- Intermediate: GeeksforGeeks, tutorials
- Advanced: Documentation, research papers
| Component | Technology |
|---|---|
| Frontend | Streamlit |
| Graph Visualization | Pyvis + NetworkX |
| PDF Parsing | PyMuPDF (fitz) |
| PPTX Parsing | python-pptx |
| AI Extraction | OpenAI GPT-4o-mini |
| Data Storage | JSON |
- Upload
algorithms_lecture.pdf - Click "Extract Topics"
- View graph:
Intro → Big-O → Sorting → Graph Algorithms → Dynamic Programming - Filter to "Beginner" to see only foundational topics
- Upload
ml_slides.pptx - Extract topics
- Explore prerequisites:
Linear Algebra → Statistics → Regression → Neural Networks
| Issue | Solution |
|---|---|
| "No module named 'fitz'" | Run pip install PyMuPDF |
| OpenAI quota exceeded | Add credits at platform.openai.com or use mock mode |
| Resources not showing | Delete data/resources.json and re-extract |
| Graph not rendering | Refresh the page or restart Streamlit |
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
Built with ❤️ for learners who want to master any subject systematically.