Inspiration
Standard browser history is a limited list of links. It tells you where you were, not what you learned.
We lose valuable information the moment we close a tab- especially from content Google can't index, like private Google Docs, company wikis, Notion pages, and emails. Finding that one crucial paragraph becomes an impossible task. We built Rewind to capture what we've read, not just where we've been, by giving our browser a perfect, private memory.
What it does
Rewind is a privacy-first Chrome extension that turns your browsing history into a personal knowledge base that runs 100% on your machine.
It supports two flows:
- Ask (RAG Q&A): A chat surface that embeds your question, retrieves high-quality passages from your local history, and prompts Gemini Nano (via the Chrome Prompt API) to draft a cited answer.
- Search: A hybrid engine that fuses semantic and keyword scores. This unlocks your entire browsing history, including private, un-indexed content like internal wikis and docs, making them as searchable as the public web.
How we built it
Rewind ships as a Manifest V3 extension written in TypeScript. Every AI call stays local.
- Indexing: A background service worker manages an IndexedDB-backed queue. Content scripts chunk each page, and a background pipeline uses the quantized EmbeddingGemma model (via Transformers.js) to embed and store passages locally.
- RAG pipeline: Questions trigger an on-device query embedding. Our retriever ranks local passages by relevance and diversity. Finally, a controller builds a prompt from these passages and streams a response from Gemini Nano through an offscreen document.
- Integrated Chrome AI: We rely on the Prompt API for Q&A.
Challenges we ran into
- Evaluating RAG Performance: Running systematic evaluations on our retrieval and generation quality was difficult without a robust, pre-built ground-truth dataset of browsing history and corresponding questions.
- Designing Retrieval: We initially tried page-level summaries, but the results were too broad. We pivoted to passage-level embeddings, which dramatically improved relevance but created new challenges in indexing performance and storage.
- Service Worker Lifecycle: MV3’s non-persistent worker forced us to build a resilient indexing queue that could persist state, use keepalive alarms, and cleanly resume after restarts to ensure no pages were lost.
Accomplishments
- Fully on-device RAG: We built a complete passage-based retrieval and answer stack that never leaves Chrome, from embeddings (EmbeddingGemma) to generation (Gemini Nano).
- Unlocked Private Content: Rewind makes previously "dark" content- private docs, wikis, emails- instantly accessible and searchable for the first time.
- Privacy by design: All browsing data, embeddings, and answers live only in the user’s local IndexedDB.
What we learned
- Passage-level context sharply improves answer fidelity over page-level summaries for Q&A.
- Chrome’s built-in AI APIs (Gemini Nano, Prompt API) can power sophisticated, multi-step RAG flows entirely on-device when wrapped in an offscreen document.
- MV3 constraints reward disciplined queueing, caching, and failure recovery, leading to a more robust application.
What's next for Rewind
- Robust Evals: Running more systematic evaluations with noisier, real-world browsing data and a better ground-truth dataset to tune our retrieval models.
- Intent Classification: Identifying user intent (e.g., "find" vs. "summarize" vs. "compare") to provide more specialized and accurate answers.
- Temporal Q&A: Adding time-based awareness to answer questions like, "Summarize the Forbes article I read last week" by fusing semantic search with recency data.
Built With
- embeddinggemma
- gemini
- promptapi
- typescript

Log in or sign up for Devpost to join the conversation.