The quiz was due in three hours and the video was four hours long. That frustration became a Manifest V3 extension that orchestrates multiple AI providers to turn passive video consumption into active, automated learning.
The Problem Space
Coursera courses demand hours of video watching before quizzes, with no way to extract structured answers from lecture content. Students spend more time navigating the platform than learning. Browser extensions that try to solve this break on every Coursera UI update because they rely on fragile DOM selectors.
Engineering the Solution
I built a Manifest V3 Chrome extension with a multi-provider AI backend — OpenAI, Gemini, and Anthropic — behind a provider-agnostic interface. The extension injects content scripts that extract quiz questions and video context, routes them through a configurable AI provider, and returns structured answers. I chose Manifest V3 over V2 because Chrome was deprecating V2, accepting the trade-off of losing persistent background pages in exchange for service workers that survive browser restarts. The release pipeline includes CRX signing, update XML generation, and Chrome Web Store deployment.
A complete browser extension with content script injection across Coursera quiz and video pages, a service worker background runtime, popup UI for provider configuration, multi-provider AI orchestration with fallback chains, and a full release engineering pipeline. The extension handles Coursera DOM mutations through MutationObserver patterns rather than static selectors, making it resilient to platform UI changes.
Impact & Outcomes
Published on the Chrome Web Store with 200+ active users. The extension handles quiz automation, video content extraction, and provider switching without requiring users to manage API keys directly for the default provider.
Reflections & Takeaways
Key observations from building this system:
- Manifest V3 service workers force you to rethink state management — no persistent background pages means every interaction must be self-contained or serialized.
- Multi-provider AI orchestration needs graceful degradation, not just failover. When Gemini is slow, switching to OpenAI mid-request is better than waiting.
- Release engineering for browser extensions is its own discipline — CRX signing, update manifests, and Web Store review cycles add real operational overhead.