Inspiration
A lot of us procrastinate even when we really care about the work. We wanted something that helps you snap out of it without shaming you or blocking the whole internet.
What it does
noRot watches what app you’re using, gives you a real-time distraction score (0–100), and labels it into 5 levels (focused → crisis). When you drift, it talks to you with an AI voice that gets more serious over time. You can snooze, dismiss, or talk back. It also has a dashboard and a todo list so it knows what you meant to be doing.
How we built it
We used Electron for the desktop app and React + TypeScript for the UI. The Electron main side collects telemetry, runs the logic, and saves data in a local SQLite database. We made a FastAPI backend in Python for scoring and ElevenLabs for script generation, and we keep shared types/scoring logic in a shared package so both sides match. Gemini and ElevenLabs are optional for better scripts and voice; there are fallbacks if the API isn’t running.
Challenges we ran into
Getting reliable active window tracking and dealing with OS permissions was a big problem. Browser sites are also hard to detect cleanly. We also had to stop the app from nagging too often, keep the UI from changing text every few seconds, and make IPC (desktop - UI communication).
Accomplishments that we're proud of
It works even without the backend (offline fallback). The score updates in real time and the UI feels responsive. The voice escalation feels different at each level.
What we learned
Timing matters more than we expected - when and how you interrupt someone is everything. OS-level telemetry is tricky. Keeping shared code/types saved a lot of debugging time.
What's next for noRot
Better onboarding and permission setup, stronger security/privacy, more accurate app/site classification, more personalization based on your goals and habits, smoother packaged releases, and real user testing.


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