{"slug": "focus67dumby-a-100-offline-vision-aware-sticky-note-that-tells-coding-tutorials", "title": "Focus67Dumby: A 100% Offline, Vision-Aware Sticky Note That Tells Coding Tutorials from Brain-Rot", "summary": "A developer built Focus67Dumby, an offline desktop sticky-note accountability widget that uses small open-weight models (gemma3:270m, gemma2:2b, qwen3-vl:2b and others) served through a local Ollama instance to classify active window transitions and downscaled 512x288 screenshots as productive work versus off-task entertainment. The tool evaluates window changes locally in roughly 40ms and never sends data to the cloud, positioning it against blunt site blockers and subscription-based cloud activity trackers. The developer plans a $19 one-time lifetime license for a packaged Pro edition alongside a free open-source build, citing zero marginal inference cost.", "body_md": "*This is a submission for the [Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle](https://dev.to/challenges/hacktoberfest-week2-2026-10-12)*\n\n## \n  \n  \n  What I Built\n\n### \n  \n  \n  The Problem: The \"Coding Tutorial vs. Brain-Rot\" Dilemma\n\nAs developers, students, and freelancers, we all know the pain of opening YouTube to watch a 15-minute system design breakdown or documentation walkthrough—and waking up 45 minutes later deep in a YouTube Shorts or gaming rabbit hole. \n\nExisting productivity tools fail developers in two ways:\n\n1. \n**Traditional Website Blockers (Cold Turkey, Freedom):** They are blunt hammers. They block*all* of YouTube or Reddit indiscriminately, which immediately breaks your workflow when you actually need a coding tutorial or debugging thread.\n2. \n**Cloud AI Activity Trackers (Rize, Reclaim):** They charge $15+/month subscriptions to continuously stream your window titles, private repo names, and screen activity to third-party servers—an absolute non-starter for privacy-conscious engineers or freelancers working under client NDAs.\n\n### \n  \n  \n  The Solution: Focus67Dumby\n\n**Focus67Dumby** is an ultra-lightweight, 100% offline floating sticky-note accountability companion powered by local open-weight models (`gemma4:e2b`, `gemma4:e4b`, `qwen3-vl:2b`, `gemma3:1b`, and `gemma3:270m`) via **Ollama**.\n\nIt sits quietly in the corner of your screen like a minimalist `350x530` dark-amber sticky note. You lock in what you are working on (e.g., *\"Fix Express auth middleware\"*), pick a sprint duration (`25m`), and choose your local Ollama model. In the background, it observes your active window transitions and downscaled in-memory screenshots (`512x288`) to distinguish productive work and relevant tutorials from off-task entertainment—nudging you back on track without ever sending a single byte of data to the cloud.\n\n### \n  \n  \n  Who Would Pay For It? (The Side Hustle Model)\n\nDevelopers, indie hackers, and remote freelancers suffer from horrific subscription fatigue. Because **Focus67Dumby** runs 100% on the user's local hardware via Ollama, our marginal cloud inference cost is **$0.00**. That allows us to sell the packaged Pro Desktop Edition as a **$19 One-Time Lifetime License** (zero recurring monthly fees, zero cloud telemetry) alongside a free self-built open-source edition.\n\n## \n  \n  \n  Demo\n\n*(Tip: On the live landing page, you can interact with the Sticky Note preview directly, test the checkout flow, and explore the local architecture!)*\n\n## \n  \n  \n  Code\n\n### \n      A tiny, privacy-first desktop accountability widget that uses local open-weight AI (Ollama + Gemma) to tell coding tutorials apart from YouTube rabbit holes.\n    \n\n \n\n# 📌 FocusDumbyDumb (FocusSticky)\n\n**Stop blocking all of YouTube. Just block the brain-rot.**\n\nAn ultra-lightweight, 100% offline floating sticky-note accountability partner powered by tiny local open-weight models (`gemma3:270m` / `gemma2:2b`) via Ollama.\n\n### 💡 Why This Exists\n\nTraditional website blockers are blunt hammers—they either block YouTube completely (breaking your workflow when you need a system design breakdown or documentation tutorial) or let you slip into a 45-minute Shorts rabbit hole. Meanwhile, cloud AI productivity trackers stream your private window titles and screen data to third-party servers while charging a monthly subscription.\n\n**FocusDumbyDumb** lives as a tiny, frameless sticky note in the corner of your screen:\n\n1. \n**Lock in your goal & timer** (e.g.,*\"Fix Express auth middleware — 45 mins\"* ).\n2. \n**Pick your local model** dynamically from your Ollama installation (`gemma3:270m` uses <400MB RAM).\n3. \n**Stay accountable privately:** A background watcher evaluates active window changes locally in ~40ms. Coding tutorials pass…\n\n \n \n## \n  \n  \n  How I Built It\n\n**Focus67Dumby** was engineered around small, fast open-weight models running locally through the **Ollama REST API** (`http://127.0.0.1:11434`), wrapped in a modular Python 3.11 desktop architecture (` CustomTkinter` + `Win32 ctypes` + `Pillow`).\n\n### \n  \n  \n  1. Local Open-Weight Models Used (Gemma & Qwen)\n\nThrough live discovery via Ollama's `GET /api/tags`, the sticky note dynamically populates a dropdown so users can hot-swap models based on their hardware:\n\n- \n**`gemma4:e2b` & `gemma4:e4b` (Primary Multimodal Vision + Text Engine):** Google's compact open-weight Gemma models evaluate both the foreground window title and a compressed`512x288` base64 screenshot payload via`POST /api/generate` in strict JSON mode.\n- \n**`gemma3:270m` & `gemma3:1b` (Ultra-Edge Text Mode):** For users on low-spec laptops running on battery,`gemma3:270m` (~290MB footprint) evaluates window titles in sub-50ms using almost zero RAM.\n- \n**`qwen3-vl:2b` & `qwen3.5:2b`:** Supported as drop-in open-weight vision alternatives for reading small UI text inside split-screen browser tabs.\n\n### \n  \n  \n  2. Solving Real-World Desktop Edge Cases\n\nBuilding a local AI watcher that actually feels good to use required solving several gnarly systems challenges:\n\n- \n**👁️ Hybrid Vision + Perceptual Diff Caching (`<3%` Threshold):** Window titles alone can be deceptive (e.g., Chrome just saying`\"LinkedIn\"` when you're actually playing the LinkedIn Zip puzzle game, or watching a coding tutorial with a vague title). In Vision Mode,`window_watcher.py` grabs an in-memory screenshot, resizes it to`512x288` (JPEG quality 65), and computes a fast`16x9` grayscale perceptual signature. If the screen pixels change by`<3%` and the window title is identical (like reading static documentation), it hits the local session cache (`0ms` latency,`0` GPU calls).\n- \n**⏱️ 30-Second Workspace Calibration & Multi-Window Breadcrumbs:** Real engineering tasks span multiple windows (VS Code + Terminal + Localhost Browser + Google OAuth popups). During the first 30 seconds of a sprint, Focus67Dumby enters a**Workspace Calibration Phase** , automatically whitelisting the windows you touch into a trusted workspace (`0ms` instant switching), plus tracking a rolling 4-window breadcrumb trail so the model understands when a secondary login popup was spawned from your primary task.\n- \n**🚨 Two-Strike Grace Period & Escalating Interference:** Quick Alt-Tabbing never triggers a false alarm. If you stay on an unaligned distraction for 2 consecutive checks (`Strikes 2, 4, 6...` ), it fires your chosen interference level:  1. \n`Gentle Toast` (Native Windows notification with custom auto-generated`.ico` icon)\n  2. \n`Toast + Sound` (System audio alert + toast)\n  3. \n`Popup Takeover + Sound` (Forces the sticky note to the front via Win32`WS_EX_APPWINDOW` , flashes the border bright red, and physically shakes the widget horizontally on screen until you get back to work).\n- \n**🐧 Headless Linux & Docker Determinism:** All GUI (`customtkinter` ), screen-capture (`Pillow` ), and Win32 (`ctypes.windll` ) imports are lazily guarded so the app runs a deterministic offline CLI simulation (`python -m src.main --headless --demo` ) and passes all unit tests inside a clean headless Linux Docker container in`0.75s` .\n\n## \n  \n  \n  Why Does Open Innovation Matter?\n\nThis is a product category that **literally cannot exist as a sustainable, trustworthy business on closed-source cloud APIs**:\n\n1. \n**Absolute Data Sovereignty (Zero Screen-Spying):** To know whether you are watching a React tutorial or scrolling memes, an AI needs to see your window titles and screen context. Sending screenshots of a developer's desktop every 10 seconds to a closed cloud API means leaking`.env` files, proprietary company source code, private messages, and banking tabs to external servers. Running`gemma4:e2b` or`gemma3:270m` locally on`127.0.0.1` guarantees that screenshots never even touch the disk—they are evaluated in RAM/VRAM and immediately discarded.\n2. \n**Unit Economics That Make a $19 One-Time Price Possible:** Polling a frontier vision API every 10 seconds across an 8-hour workday equals**2,880 multimodal API calls per user per day** . With closed API pricing, a single heavy user would burn through $20–$40+ in token costs every single month, forcing a bloated recurring SaaS subscription. By running open-weight Gemma models locally on the user's existing hardware, inference costs**$0.00 forever** .\n3. \n**Zero Vendor Lock-In & Offline Freedom:** Whether a user has an 8GB VRAM GPU running`gemma4:e2b` in Vision Mode or an older laptop running`gemma3:270m` on CPU while studying on a train with zero Wi-Fi, the open-weight architecture adapts to them—and still includes a deterministic heuristic fallback if Ollama isn't running.\n\n## \n  \n  \n  My Agent Session\n\nI built and verified this project using an agent-driven workflow anchored by strict repository guardrails (`AGENTS.md`, `ARCHITECTURE.md`, `MISTAKES.md`, and a custom `focus67dumby-master` skill specification). \n\nInstead of letting coding agents hallucinate monolithic spaghetti code, the master skill enforced thread-safe `queue.Queue()` / `root.after()` UI marshaling, sub-60-word structured JSON prompts tailored for small models, Win32 foreground window detection, and an 8-point clean-Linux Docker rebuild gate verified by a 15-test `pytest` suite.\n\n## \n  \n  \n  My First User\n\nI put **Focus67Dumby** in front of its first real user—a college mate of mine who constantly battles the exact \"open YouTube for a lecture/tutorial, end up watching random videos for an hour\" loop during study and coding blocks.\n\n### \n  \n  \n  How the Test Went:\n\n- \n**What clicked immediately:** He loved the floating sticky-note form factor and the fact that it wasn't a heavy browser extension or a full-screen dashboard app. Seeing the widget distinguish between a legitimate task window and off-topic browsing—plus the**\"Popup Takeover + Shake\"** interference mode physically shaking the sticky note on screen when he drifted off-task—got him genuinely excited about using it for daily sprints.\n- \n**Real-world friction we discovered during testing:** Early in our testing, we noticed that real workflows involve bouncing between multiple windows (like opening a secondary login popup or switching between a browser puzzle/task and a terminal), and that unchecking \"Always on Top\" on a frameless Windows widget could hide it behind the browser.\n- \n**What we iterated on next:** That feedback directly inspired our**30-Second Workspace Calibration** feature (where the app automatically learns and trusts the tabs/windows you open in the first 30 seconds of a sprint) and our native Win32 taskbar persistence fix (`WS_EX_APPWINDOW` ).\n- \n**Would they pay?** For students and indie devs, monthly subscriptions are a dealbreaker, which validated positioning the packaged desktop installer as a low, one-time lifetime utility while keeping the core repo 100% open-source.\n\n## \n  \n  \n  Prize Categories\n\n- \n**Best Use of Gemma:****Focus67Dumby** is built around Google's open-weight**Gemma** family (`gemma4:e2b` and`gemma4:e4b` for local multimodal vision-and-title classification, plus`gemma3:270m` and`gemma3:1b` for ultra-low-memory CPU edge classification) served locally via Ollama with strict JSON schema validation and`keep_alive` VRAM management.\n- \n**Best Use of Entire:** Shared the full agent-driven engineering workflow, session history, and repository memory artifacts (`AGENTS.md` ,`ARCHITECTURE.md` ,`MISTAKES.md` , and`focusDumby67-skill.md` ) that governed why each module, thread-safety queue, and headless fallback exists in the codebase.\n- \n**Best Use of Render:** Deployed and hosted the**Focus67Dumby** interactive product front-end, sticky-note state simulator, and license checkout portal on**Render** with automated GitHub continuous deployment.", "url": "https://wpnews.pro/news/focus67dumby-a-100-offline-vision-aware-sticky-note-that-tells-coding-tutorials", "canonical_source": "https://dev.to/thrizzio/focus67dumby-a-100-offline-vision-aware-sticky-note-that-tells-coding-tutorials-from-brain-rot-49h5", "published_at": "2026-10-17 19:00:28+00:00", "updated_at": "2026-10-17 19:05:58.573344+00:00", "lang": "en", "topics": ["ai-tools", "ai-products", "ai-agents", "artificial-intelligence"], "entities": ["Focus67Dumby", "Ollama", "Gemma", "Qwen", "YouTube", "Hacktoberfest"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/focus67dumby-a-100-offline-vision-aware-sticky-note-that-tells-coding-tutorials", "markdown": "https://wpnews.pro/news/focus67dumby-a-100-offline-vision-aware-sticky-note-that-tells-coding-tutorials.md", "text": "https://wpnews.pro/news/focus67dumby-a-100-offline-vision-aware-sticky-note-that-tells-coding-tutorials.txt", "jsonld": "https://wpnews.pro/news/focus67dumby-a-100-offline-vision-aware-sticky-note-that-tells-coding-tutorials.jsonld"}}