Case study, 2026
CampusContext
CampusContext embeds an AI sidebar directly into Canvas LMS so students get context-aware help without leaving their coursework.
Problem
Students are constantly copy-pasting assignment prompts, quiz questions, and lecture PDFs into ChatGPT in another tab, losing context and breaking flow. The answers they get back know nothing about their course, their deadlines, or the materials their professor actually uploaded.
Solution
I built a Chrome extension (Manifest V3) that injects an AI sidebar into every Canvas page, indexes each course's materials into a local knowledge base, and streams answers from Google Gemini grounded in the student's actual coursework.
Impact
The historical v0.4 prototype demonstrated streaming Gemini chat, Canvas-material indexing, and inline widgets. The original repo is no longer available, so a rebuild and hardening pass remain planned work.
Build notes
- JavaScript
- Manifest V3
- Chrome Extensions API
- Google Gemini
- Express
- pdf.js
Problem
Students already use AI for coursework. The workflow is copy-paste from Canvas into a generic chatbot that knows nothing about the course, syllabus, files, deadlines, or professor context.
Build
- Chrome extension injects an AI sidebar into Canvas pages.
- Course context auto-detects from Canvas and caches for 24 hours.
- Knowledge base indexes PDFs, DOCX files, Canvas Pages, and discussion threads.
- Gemini chat streams inside Canvas with direct-answer and study modes.
- Generative UI widgets render grade breakdowns, reminders, and study plans inside responses.
Technical Signal
- Built around Manifest V3 constraints: streaming flows server to background to content script.
- Indexed Canvas materials from PDFs, DOCX, Pages, and discussion threads using the student's active Canvas context.
- Added SSRF validation on extract-text requests, restricting fetches to Canvas domains.
- Historical review identified remaining work in widget sanitization, postMessage origin validation, storage partitioning, and keyboard access.
Current State
Version 0.4 was a working prototype of sidebar injection, course detection, material indexing, streaming chat, and inline widgets. The original repo is no longer available. Any return to the product starts with a rebuild, followed by security and accessibility hardening.
Why It Matters
The value is not the model. It is the course context the model normally lacks.