🦥 findbox — Drop it in. Forget it. Find it by what you remember.

Built for Hacktoberfest 2026 Week 3: Slow & Steady (International Sloth Day). Open-source, 100% local, zero cloud.

👉 GitHub: chourasiavinit9-dev/findbox

🌐 Static Demo (judges): chourasiavinit9-dev.github.io/findbox

🐳 Docker Ready: docker compose up --build

The Problem: Your Downloads Folder Is a Crime Scene

I have 847 files in my Downloads folder right now. IMG_4471.png (an Instagram recipe I'll never find), scan(3)_final_FINAL.pdf (who knows), WhatsApp Image 2026-09-14.jpg (could be anything), and buried in there somewhere — an electricity bill I need to pay.

Sorting this takes hours. So nobody does it. The mess compounds. Then one day you get a late fee because the bill was buried under 200 screenshots.

findbox solves this while you sleep.

📸 The Final Web App Look

1. Homepage & The Payoff Meter

findbox homepage with payoff meter

2. Vague Memory Search (AI-Parsed Query + Instant Filter)

findbox vague search for paneer recipe

3. Action Items Deadlines & Device Scanner

findbox action items

The Build Session

I built the entire thing with Antigravity (Gemini coding agent) in one session:

Building findbox: Local AI File Organizer (Hacktoberfest 2026)
You

Build a winning submission for 'Slow and Steady: International Sloth Day'. PROJECT: findbox. Tagline: 'Drop it in. Forget it. Find it by what you remember.' A fully local tool that quietly cleans up your digital mess overnight (Downloads folder, screenshots, photos, PDFs, scans, exported chats) and then lets you find anything by describing it vaguely.

Agent

Perfect project for the Sloth Day theme! Here's the architecture I'll build: zero-config auto-scan of common device landfill folders, open-weight Gemma 3 for local inference via Ollama, SQLite FTS5 BM25 for vague-memory search, and a neobrutalism web UI at [REDACTED]:8765. Let me start building.

▸ write_to_file sloth_box/organizer.py — core intake pipeline
sloth_box/organizer.py — core intake pipeline
Created file with run_intake(), auto-discovery, SHA256 dedup, collision-safe rename
You

make it like it can access anything on the device — zero config

Agent

Added AUTO_SCAN_DIRS to config.py — automatically discovers ~/Downloads, ~/Desktop, ~/Documents, ~/Pictures/Screenshots, WhatsApp Chat exports, iCloud Drive. No path needed. User just runs: python3 sloth_box.py run --apply

▸ multi_replace_file_content Add AUTO_SCAN_DIRS + get_auto_scan_dirs() to config.py
Add AUTO_SCAN_DIRS + get_auto_scan_dirs() to config.py
Updated config.py with 8 device landfill locations
You

add a button to clear text search

Agent

Added a floating ✕ clear button inside the search input. JavaScript toggleClear() shows/hides it as you type. clearSearch() wipes the input and returns to /?. Now users can search multiple items without backspacing.

You

see bug — ai error html and sample data not openable, fix both

Agent

Fixed two bugs: 1) {{ai_meta_html}} was double-escaped — changed to {ai_meta_html} so AI search chips render correctly. 2) Added '📄 Open File ↗' button on every document card using file:// protocol from current_path in SQLite — clicking opens the actual file in its native macOS app.

You

add scan my device button and fix action items panel

Agent

Done! Added: (1) 'Scan My Device' panel showing all auto-scan folders as chips + a POST /scan button that triggers run_intake() in a background thread — no terminal needed. (2) Replaced 7-day Due Soon filter with 'Action Items' showing ALL todos color-coded: red = due ≤7 days, purple = future, gray = past. 18/18 tests still passing.

The Lazy Workflow

# Run this once before bed (or click 'Scan My Device' in the UI) python3 sloth_box.py run --apply # Wake up to everything organized. Then search: python3 sloth_box.py serve # http://127.0.0.1:8765 # Search: "paneer recipe september" → finds it instantly 

Your effort: 1 command. That's literally it.

findbox runs at os.nice(19) — the absolute lowest CPU priority, yielding to every other process on the machine.

🐳 Zero-Install: Run With Docker

Don't have Python or local dependencies configured? Run with Docker Compose:

git clone https://github.com/chourasiavinit9-dev/findbox && cd findbox docker compose up --build 

Or plain Docker:

docker build -t findbox . docker run -p 8765:8765 \ -v ~/Downloads:/inbox/Downloads \ -v ~/Desktop:/inbox/Desktop \ -v ~/SlothBox:/home/sloth/SlothBox \ findbox 

Open http://localhost:8765 — your files, organized, indexed, and searchable.

Why Open-Weight Models Were Non-Negotiable

Think about what's in your Downloads folder: bank statements, medical prescriptions, Aadhaar/passport scans, private WhatsApp exports, OTP screenshots.

Sending any of this to a cloud API is unacceptable. Open-weight Gemma 3 running locally via Ollama was the only viable choice:

Feature Closed Cloud APIs findbox (Gemma Local)
Privacy Files leave your device Files never leave RAM
Offline Requires internet Works on an airplane
Cost Per-token for 1000s of files Free at any scale
Language English-optimized Hindi/Bengali natively

When Ollama isn't running, findbox falls back to a deterministic heuristics engine — so it never crashes.

Key Features

Zero-Config Auto-Discovery

No path configuration. It auto-finds ~/Downloads, ~/Desktop, ~/Pictures/Screenshots, ~/Documents, WhatsApp exports, and iCloud Drive. Just run it.

Meaningful Renaming

IMG_4471.png → 2026-09-04_instagram-paneer-tikka_recipe.png scan(3)_final_FINAL.pdf → 2026-10-12_electricity-bill_WBSEDCL.pdf WhatsApp Image 2026-09-14.jpg → 2026-09-14_rent-chat-rahul_chats.jpg 

Vague-Memory Search

Gemma parses your query into structured parameters (keywords + category + date range), then SQLite FTS5 BM25 finds the exact file. Search "paneer recipe september" → finds the Instagram screenshot from Sept 4. Includes a dedicated ✕ clear button to immediately wipe filters.

Scan from the UI

The 🦥 Scan My Device Now button in the web UI triggers background scanning with live visual feedback. No terminal needed.

Action Items Panel

Deadlines extracted from every file, color-coded: 🔴 red = due ≤7 days, 🟣 purple = future, ⚫ gray = past.

Architecture

sloth_box/ ├── config.py — AUTO_SCAN_DIRS (8 device locations) ├── security.py — path-traversal, XSS disarm, magic-byte quarantine ├── extractor.py — PDF/DOCX/image/text + fallback heuristics ├── ai.py — local Ollama/Gemma client + vague query parser ├── organizer.py — multi-folder intake, collision-safe rename, undo ├── db.py — SQLite WAL + FTS5 + audit log └── server.py — WCAG 2.1 AA web UI (neobrutalism design) 

Safety: dry-run by default, atomic undo, no overwrites, no deletes, localhost-only server.

The Payoff Meter

$$\text{Minutes Saved} = (\text{Files Indexed} \times 1.5) + (\text{Searches Avoided} \times 5.0)$$

On sample data: 15 minutes saved, 0 minutes spent. That's the sloth way.

Why Open Innovation Matters

This project wouldn't exist as a privacy-safe tool without open-weight models. The files it processes are genuinely sensitive. Gemma running locally means:

  1. Data never moves — inference in local RAM
  2. No internet required — fully offline
  3. No metered cost — 10,000 files, pay nothing
  4. Multilingual — handles Hindi/Bengali natively (WBSEDCL, Aadhaar, kharcha all work)

Try It

git clone https://github.com/chourasiavinit9-dev/findbox && cd findbox python3 sloth_box.py run # dry-run python3 sloth_box.py run --apply # apply python3 sloth_box.py serve # search UI at http://127.0.0.1:8765 python3 -m pytest tests/ -v # 18 tests, 0.04s 

🦥 Hacktoberfest 2026 Week 3 — Slow & Steady · International Sloth Day · Open-source · 100% local · Zero cloud