This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady
What I Built
SnapSloth 🦥: for every screenshot you said "baad mai" to.
📴 100% offline. Runs on my laptop with Wi-Fi off. No cloud, no API key, no screenshot ever leaves the machine.
I had 367 screenshots named Screenshot from 2026-08-30 23-51-07.png. Fee notices, UPI
requests, notes to myself, an Aadhaar photo. Unsearchable, forgotten, and some of them risky.
SnapSloth fixes that while I sleep. A local open-weight model reads every screenshot, then:
- 🗂️ sorts and renames them (
sorted/notes_or_study/2026-08-30_mqtt-vs-http-for-iot.png) - 🔎 makes them searchable by what's inside, text and picture
- ✅ pulls out what I still have to do
- ⚠️ flags risky ones (OTPs, UPI, Aadhaar/PAN, passwords), values masked
- ☕ leaves a morning report
Demo
My favourite moment: at 1:22 AM I sent myself "tomo ca and need to take concession for railway"
and forgot about it. Next morning, the report said:
→ Take concession for railway tomorrow
Code
🦥 SnapSloth
For every screenshot you said "baad mai" to.
Sorts, searches and safety-checks your screenshots with a local AI model, while you sleep.
Setup · Using the app · Lazy mode · Privacy
😩 The problem
You take a screenshot because you'll deal with it "baad mai". A fee notice, a UPI payment, a train
ticket, an error to fix, a note to yourself. Two months later there are 367 of them, all named
Screenshot from 2026-08-30 23-51-07.png, and:
- You can't find anything. Your file manager searches names, and every name is a timestamp.
- You forget what mattered. The railway concession, the money request, the hostel fee deadline buried under memes.
- Some of them are a risk. OTPs, UPI IDs, Aadhaar and bank details, sitting in a folder that syncs and gets shared.
- Cloud AI isn't the fix. Uploading your Aadhaar to someone's server to organise it is…
One-line install for Linux, macOS and Windows is in the README. Then snapsloth ui.
How I Built It
- Gemma 4 E4B (open-weight, vision) running locally through Ollama, on a laptop with no GPU.
- Go, standard library only: one binary with a CLI and a local web UI.
-
Always-valid JSON: Ollama's
formattakes a JSON schema, so every answer has a category, title, key text, to-do and risk flags. - Crash-proof: files are tracked by SHA-256 and saved after every image. Stop anytime, it resumes.
- Safety net: regex with Luhn/Verhoeff checksums double-checks the model, and every sensitive value is masked before it's saved.
- Never destructive: sorting only renames, never overwrites, and Undo puts everything back.
Making a CPU laptop fast enough:
| trick | result |
|---|---|
| shrink screenshots to 1024 px | 932 → 264 image tokens per screenshot |
| instructions in the system prompt | cached by Ollama instead of re-read every time |
| ask for key words, not every word | less to generate |
4+ minutes → ~1.5 minutes per screenshot.
Why Does Open Innovation Matter?
- My data stays mine. OTPs and an Aadhaar card don't belong on someone else's server. It works with Wi-Fi off.
- Free every night. No API key, no per-image bill.
- I could tune it. Open weights let me measure image tokens, pick the size and compare model sizes.
The Lazy Payoff
| by hand | SnapSloth | |
|---|---|---|
| sort 367 screenshots | ~1.5 hours | 0 min (overnight) |
| find one screenshot | minutes of scrolling | seconds |
| spot risky ones | open all 367 | automatic |
| remember to-dos | I didn't 😅 | in the morning report |
Slow on a CPU, but it runs at 2 AM. My part: zero minutes. 🦥
Prize Categories
Best Use of Gemma: Gemma 4 E4B does all the seeing and reading, locally, tuned for a CPU laptop.

Top comments (0)