Inspiration

We've all opened our laptops to finish an assignment and ended up reading or watching something completely unrelated. Traditional website and app blockers frequently miss the context: a YouTube tutorial might help with an assignment, while a note about Pokémon cards probably won't. We built Anchor to understand what you're working toward and bring you back when you drift.

What it does

A user enters their goal and chooses how long they want to focus. Anchor checks whether their active app, browser tab, or document is relevant to that goal. NVIDIA Nemotron evaluates unfamiliar activity and learns rules for faster decisions during the session. When the user goes off task, a fullscreen overlay prompts them to return to their work. Stay off task for more than 10 seconds, and Anchor sends an iMessage through Photon. At the end of the session, the user receives focus metrics and an AI-written debrief. An animated menu-bar indicator shows whether they're on task, off task, or being checked.

How we built it

We built Anchor as a macOS desktop app using Electron and TypeScript, with an HTML, CSS, and JavaScript interface. When a user enters a goal and starts a focus session, NVIDIA’s Nemotron Nano Omni model translates that goal into initial relevance rules. The app then uses AppleScript to monitor the active application, window title, and browser URL, waiting roughly two seconds after a switch before evaluating the destination so that briefly passing through a window doesn’t trigger an unnecessary judgment. SpacetimeDB stores session state, activity, learned rules, and agent jobs. Familiar activity can be classified using existing rules or previous verdicts, while unfamiliar activity goes to Nemotron’s judging agent, which can inspect page metadata, consult session context, and save new rules. For content-heavy apps such as Notes, screenshots and visual change detection help it distinguish relevant work from distractions within the same application. An off-task verdict triggers a fullscreen Electron overlay with a button to return to the last relevant window or supported note. SpacetimeDB schedules a follow-up check, and if the user remains off task for 10 seconds, the agent generates an accountability message that Photon’s Spectrum SDK delivers through iMessage. At the end of the session, Anchor calculates focus metrics and uses Nemotron to write a debrief, which appears in the app and is sent to the user’s phone. We also added live agent traces, animated menu-bar status, and a permission checker to make the system’s decisions and operating status visible.

Challenges we ran into

  • The same app can contain both productive and distracting content, so app-level blocking wasn't enough.
  • Switching between notes didn't always change the window title, making those transitions difficult for Anchor to detect. We added note identification and visual change detection to catch changes within the same window.
  • Returning to the right place was another challenge. Bringing Notes forward could reopen the distracting note, so we added support for remembering and reopening the specific on-task note.
  • Screen Recording, Accessibility, and Automation permissions each affected different features. We built a visible permission checker and added consistent code signing to address permission issues across rebuilds.
  • Restricted development environments made live model calls, messaging, and macOS behavior difficult to verify together.
  • Our biggest unfinished challenge was the homework-assistance feature. We wanted users to upload course materials and ask Anchor for help, using RAG to provide explanations grounded in relevant passages with source references. We couldn't get this feature running before the deadline, and it remains our next priority.

Accomplishments that we're proud of

Our team is made up of two people from very different backgrounds, which made it challenging to both work towards our goals(due to our inexperience regarding Photon, NVIDIA, and Spacetime), and frankly work together due to our initial cohesiveness not being the greatest. A supply chain major and someone with none-to-little experience with these technologies coming together to create Anchor itself, a concept and app we truly believe in.

What we learned

We learned that building a desktop AI agent requires coordinating operating-system events, model inference, and persistent state. Window titles and browser URLs provide useful signals, but detecting changes within apps such as Notes requires document identifiers and screenshot comparison. We learned to debounce those changes so the agent evaluates the content a user settles on, reducing unnecessary model calls and judgments during navigation. Combining cached verdicts and learned rules with Nemotron’s tool-calling capabilities helped balance responsiveness with contextual reasoning. SpacetimeDB gave us a way to coordinate activity records, agent jobs, and delayed alerts, while Electron’s main process and preload bridge connected that logic to the interface. We also learned how macOS permissions and code-signing identity affect screen capture and application control across rebuilds. Throughout development, visible agent traces and fallback behavior were essential for diagnosing failures across the model, database, messaging service, and desktop environment.

What's next for Anchor

  • Our immediate next step for Anchor is a user-initiated homework assistant powered by retrieval-augmented generation, which was part of our original vision for the project. Students will be able to add lecture notes, assignment instructions, and course readings, which Anchor will index and search when they ask for help. It will retrieve relevant passages and use them to provide explanations, hints, and guided walkthroughs with citations back to the original material. This extends Anchor’s support to the moments when students lose momentum because they’re stuck or unsure how to proceed.

  • Beyond homework assistance, we want to develop Anchor into a full research tool. Users could organize papers and sources around a research question, search across their collection, compare findings, and build a cited synthesis of what they’ve read. Anchor could help surface conflicting evidence, identify unanswered questions, and connect claims to their supporting passages. Combined with its focus sessions, this would let users manage both the attention research demands and the knowledge they gather along the way.

Share this project:

Updates

Submission history