LockIn: Browser Focus Tracker
Table of Contents
What it is #
You start a session with a goal, such as “fix auth bug in login flow”. The extension records each page you open. An LLM labels each visit on-task, distraction or ambiguous relative to that goal. If you drift, an overlay nudges you and offers to take you back. When the session ends you get a focus report.

How it works #
- Extension (Manifest V3). Sends each page load, with its URL, title and page text, to the backend, and polls a nudge endpoint every 60 seconds.
- Backend (FastAPI). Stores the visit and returns at once. Classification runs as a background task, so browsing never waits on the model.
- Classification. A RocketRide pipeline sends GPT-4o the goal, URL, title and the first 2,000 characters of the page, and asks for a JSON label and reason.
- Graph storage (Neo4j). Sessions, tasks, visits, sites and nudges are nodes. Visits link in order with
NEXTedges, and sites link to tasks asON_TASK_FORorDISTRACTION_FROM. - Report and Q&A. The report shows a focus score, a color-coded timeline, a per-site breakdown and LLM insights. A second pipeline answers plain-language questions about past sessions by querying the graph.
Neo4j runs in Docker Compose, and a seed script loads a demo session.