Inspiration
Scrolling through dense docs or long articles, we realised we were tab-bing out to Google every few minutes just to clarify a term. That breaks flow and rarely gets recorded as a learning signal. We wanted an unobtrusive AI that:
- Notices the moment you hit friction.
- Explains only the confusing bit, right in place.
- Remembers every struggle so the next hint is smarter.
What it does
• Captures live OCR + window titles to understand what’s on your screen.
• Detects questions you type (Google, ChatGPT, YouTube) and logs them as “confusion events.”
• Cross-references those phrases with your personal mastery graph.
• Rewrites just the sentence you’re reading—adds a brown-highlighted, grade-9-level explanation.
• Surfaces a 25-word tooltip if it spots a weak concept you haven’t mastered yet.
All of this happens locally; nothing is sent to external servers except an anonymised phrase list to OpenAI for rewriting.
How we built it
Backend – FastAPI + SQLite + Sentence-Transformer + FAISS for mastery scoring.
MCP Server – Python FastMCP bridges ScreenPipe OCR with CrewAI agents.
Browser Extension – Content script tags paragraphs, background worker calls /rewrite, swaps in sentence-level spans.
Agents –
- Observer extracts questions & logs confusion via
log_confusion. - Intervention captures OCR, classifies mastery, and shows targeted tooltips.
Challenges we ran into
- Keeping JSON-RPC pipes alive between Node, Python, and CrewAI without blocking.
- Making the LLM rewrite only parts of a paragraph—solved with a strict span-wrapping prompt.
- Avoiding infinite rewrite loops when users manually rephrased text.
- Getting cross-directory imports (
mastery.py) to resolve inside the standalone MCP server.
Accomplishments that we're proud of
• End-to-end demo where highlighting “posterior distribution” instantly pops a tooltip with a friendly definition.
• Zero-click onboarding—open any article and the AI quietly improves it without menus or settings.
• Logged mastery events sync across sessions, so help becomes progressively rarer and more precise.
What we learned
• Good UX in AI isn’t more answers; it’s fewer, perfectly-timed answers.
• Sentence-level rewrites feel natural; full-paragraph replacements feel invasive.
• Structured protocols (MCP) make multi-language components play nicely—worth the upfront complexity.
What's next for Lenz
- Adaptive difficulty scaling – long-term plan-of-study based on your confusion trends.
- Mobile capture – use ScreenPipe on iOS/Android to overlay hints on PDFs or Kindle.
- General code refactoring - so that agents across the browser and mac can communicate seamlessly.
WandD can be found here: https://wandb.ai/tanishwasp-lenz/Lenz/weave
Log in or sign up for Devpost to join the conversation.