ReadIt
Built at The Persistent Context Sprint Hackathon | Live at MongoDB .Local Build Fest · Aug 13, 2026 · San Francisco, CA
The problem: LLMs produce a lot of output. People read maybe a third of it, skimming, skipping, jumping to code blocks. The model then says "as I mentioned above" about a paragraph your eyes never touched. Every follow-up compounds the error, because the model's model of your knowledge is assumed, never measured. The idea: eye tracking measures which parts of an answer a person actually read. We store that per fact, per user, in MongoDB Atlas, and condition every later response on it. Within a conversation, the model re-explains what you skipped and does not repeat what you read. Across conversations, facts you have read are embedded and matched with Atlas Vector Search, so a brand-new conversation about a related topic skips what you already know. That is the "No Cold Start" requirement satisfied literally: the agent knows what you know, because it watched you read. The model emits numbered atomic facts, not prose. Each fact is one DOM span, so "which fact did they read" is just elementFromPoint plus a dwell timer. No fragile alignment between rendered text and extracted claims. Dwell past a length-scaled threshold marks the fact read, persists it to the facts collection, and the next system prompt carries READ and NOT-READ lists. Cross-conversation recall runs as a $vectorSearch aggregation over embeddings of verifiably read facts, pre-filtered by user and read state. The heatmap (a live dithered attention overlay, also persisted to Atlas as fixations) is shown for debugging purposes. The product is a different next response; read-state exists only to change the prompt. Works with a Tobii Eye Tracker 5 or any webcam (WebGazer fallback, Tobii wins when both stream). Stack: MongoDB Atlas Vector Search on the hackathon sandbox, OpenRouter (Claude), Node/Express, WebSocket, Electron, WebGazer. The Tobii driver predates the event, everything in this repo was written during it.