DEV Community

Abhinav Amrute
Abhinav Amrute

Posted on

SlothSort

Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady 🦥

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady

What I Built

SlothSort is a lazy person's file butler. It watches your Downloads folder (or any folder you point it at), reads what's actually inside each file, and then renames it with a sensible name, sorts it into the right folder, and archives anything stale, all by itself and all on your own machine.

No more Screenshot 2026-10-12 at 11.42.07 (3).png, final_FINAL_v2.pdf, or a Downloads folder with 900 mystery files. You drop things in, SlothSort files them away overnight, and in the morning you get a short digest of what it moved and why. If it isn't confident about a file, it leaves it alone and flags it, and every move can be undone with one command.

Anyone who has ever said "I'll clean this up later" gets to be a little lazier.

Demo

  • Video demo: [add your video link here]
  • Deployed link (if any): [add link here]

Code

[Add your GitHub repo link here. On DEV you can embed it directly with the {% embed https://github.com/your-username/slothsort %} tag.]

How I Built It

SlothSort is built around a local open-weight model served through Ollama, so the whole pipeline runs without a network connection.

  • Model: [your open-weight model, e.g. a small Qwen, Gemma or Llama variant] running locally via [Ollama / llama.cpp]. I picked a small model on purpose, since classifying and naming files doesn't need a giant one, and a small model keeps the laptop quiet and the battery happy (very sloth-appropriate).
  • Watcher: a lightweight Python script using watchdog that notices new files and queues them.
  • Content extraction: plain-text readers for PDFs, docs and text files, plus [a local vision model / OCR] for images and screenshots. Nothing is uploaded anywhere.
  • Decision step: the model gets the extracted text, the filename, and my folder rules, and returns a small JSON object: { "new_name": ..., "folder": ..., "confidence": ... }.
  • Safety rails: anything below a confidence threshold is skipped, nothing is ever deleted (only moved), and every action is written to a log so slothsort undo can reverse it.
  • Morning digest: one short summary of what was filed, generated by the same local model.

The folder rules live in a plain config file, so changing how SlothSort behaves means editing a few lines, not retraining anything.

Why Does Open Innovation Matter?

Sorting your files means the tool has to read your files: tax documents, invoices, medical reports, private screenshots. That is exactly the kind of data I don't want to send to a server I don't control.

Running an open-weight model locally made that possible:

  • Privacy by default: file contents never leave my machine, so there is nothing to trust a third party with.
  • Works offline: it runs on a plane, on bad Wi-Fi, or with the router unplugged.
  • Zero running cost: no per-file API charges, so I can let it process thousands of files without watching a bill.
  • Swappable and tunable: I can change models as better open ones appear, adjust prompts and rules, and even fine-tune on my own naming style, none of which a closed API would let me do on my terms.
  • No surprises: the model version I tested with is the model version I keep running. It can't change under me or disappear.

For a "set it up once and forget it" tool, that reliability matters as much as the privacy.

My Agent Session

[Optional: embed your DevRelay session here with the agent_session tag, or paste a link to it.]

The Lazy Payoff

  • Files processed so far: [number]
  • Time I used to spend tidying per week: [X minutes]
  • Time I spend now: [near zero, plus a 10-second glance at the morning digest]
  • Used by: [me / a friend / my team] this week

[Replace these with your real numbers, or delete this section if you'd rather not include it.]

Top comments (0)