Inspiration
Every day, we consume news without questioning how it's written, not just what it says. Loaded language, emotional framing, and subtle manipulation tactics shape our beliefs in ways we rarely notice. I wanted to build a tool that acts like a critical thinking partner sitting beside you as you browse, helping you see through the mirror of media bias in real time.
What it does
MirrorMind is a Chrome extension that lets you select any text on any webpage and instantly analyze it for emotional tone, bias indicators, manipulation tactics, and credibility, all streamed live in a sidebar powered by Azure OpenAI. Four modes: Bias Check, Summarize, Simplify, and Critical Questions.
How I built it
I built MirrorMind entirely in vanilla JavaScript using Chrome's Manifest V3 extension architecture. The core challenge was wiring three isolated browser contexts together, the content script that detects text selection, the background service worker that calls Azure OpenAI, and the side panel that renders the response. Azure OpenAI's Server-Sent Events (SSE) streaming API streams tokens back in real time, which I then relay via chrome.runtime.sendMessage to render token-by-token in the UI. No backend server, no framework - just direct browser-to-Azure communication.
Challenges I ran into
Chrome's Manifest V3 enforces strict service worker lifecycle rules, the background worker can be killed by the browser at any time, which required careful state management. Cross-context messaging between three isolated JS environments (content script, service worker, side panel) was also surprisingly tricky to get right. Getting SSE streaming to work reliably through Chrome's extension message passing system took significant debugging.
Accomplishments I'm proud of
Getting real-time token streaming to render smoothly in the sidebar felt like magic the first time it worked. The floating Analyze button that appears on text selection is a small detail that makes the UX feel polished and native.
What I learned
I went deep on Chrome Extension architecture, MV3 service worker constraints, and Azure OpenAI's streaming API all in one night. I also learned that the simplest architecture (no backend, direct browser-to-Azure) is often the most elegant.
What's next for MirrorMind
Cross-article comparison, credibility scoring with source verification via Azure AI Search, and a Firefox port.
Built With
- azure
- azure-for-startups
- azure-openai-(gpt-4o-mini)
- chrome-extensions-api-(manifest-v3)
- chrome-side-panel-api
- css
- html
- javascript
- server-sent-events-streaming
Log in or sign up for Devpost to join the conversation.