👻Haunt67Dumby: A 100% Offline, Vision-Aware Sticky Note That Tells Coding Tutorials from Brain-Rot A developer built Haunt67Dumby, a 100% offline desktop sticky-note app that uses small open-weight models (gemma3:270m, gemma4:e2b, qwen3-vl:2b and others) served through Ollama's local REST API to classify active windows and downscaled 512x288 screenshots as productive work, relevant tutorials, or off-task entertainment. The tool escalates distraction detection into a "haunting" alarm, uses perceptual diff caching with a sub-3% threshold to limit vision calls, and keeps all window titles and screenshots on-device, with the developer pitching a $19 one-time Pro license alongside a free open-source edition. This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine https://dev.to/challenges/hacktoberfest-week4-2026-10-26 Haunt67Dumby: A 100% Offline, Vision-Aware Sticky Note That Tells Coding Tutorials from Brain-Rot As developers, students, and freelancers, we all know the pain of opening YouTube to watch a 15-minute system design breakdown or documentation walkthrough, only to wake up 45 minutes later deep in a YouTube Shorts or gaming rabbit hole. You tell yourself you're being productive. Your browser tells a different story. Existing productivity tools fail developers in two ways: Haunt67Dumby 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 . It 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. But here's the Halloween twist. Instead of another boring productivity alarm, what if your desktop started haunting you every time you wandered off? Haunt67Dumby turns distraction detection into an escalating haunting: The idea is simple: your computer already knows when you're procrastinating. It might as well make you regret it. And the best part? Everything runs locally. No screenshots, window titles, or private activity data ever need to leave your machine. Developers, indie hackers, and remote freelancers suffer from horrific subscription fatigue. Because Haunt67Dumby 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. Tip: On the live landing page, you can interact with the Sticky Note preview directly, test the checkout flow, and explore the local architecture Stop blocking all of YouTube. Just block the brain-rot. An ultra-lightweight, 100% offline floating sticky-note accountability partner powered by tiny local open-weight models gemma3:270m / gemma2:2b via Ollama. Traditional 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. FocusDumbyDumb lives as a tiny, frameless sticky note in the corner of your screen: gemma3:270m uses <400MB RAM . Haunt67Dumby 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 . Through 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: gemma4:e2b & gemma4:e4b Primary Multimodal Vision + Text Engine : 512x288 base64 screenshot payload via POST /api/generate in strict JSON mode. gemma3:1b Ultra-Edge Text Mode : qwen3-vl:2b & qwen3.5:2b : Building a local AI watcher that actually feels good to use required solving several gnarly systems challenges: 👁️ 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 . ⏱️ 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, Haunt67Dumby 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. 👻 The Three-Stage Haunting 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... , the haunting escalates through your chosen interference level: The Whisper Native Windows notification with custom auto-generated .ico icon . The Warning Notification + system audio alert . Possession 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 . The goal isn't to block your distractions. It's to make the machine notice when you've broken your pact with it. 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 . This is a product category that literally cannot exist as a sustainable, trustworthy business on closed-source cloud APIs : To know whether you're 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're evaluated in RAM/VRAM and immediately discarded. 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 . 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. The ghost doesn't need the cloud to know when you're slacking off. I 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 . Instead 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. I put Haunt67Dumby 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. 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. 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. 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 . 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. Best Use of Gemma: Haunt67Dumby 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. 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. Best Use of Render: Deployed and hosted the Haunt67Dumby interactive product front-end, sticky-note state simulator, and license checkout portal on Render with automated GitHub continuous deployment. The machine sees everything. Even the tabs you wish it hadn't. 👻