Dread Drawer: A Very Small Robot for a Very Large Downloads Mess
This is my submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady
What I Built
My Downloads folder had become a tiny digital attic: Capture1.PNG, Ep_1.docx, and subtil.srt (being a bit overdramatic cause you do not want to see my actual folder. Believe me. Really.) all waiting for the mythical day I would sort them.
I built Dread Drawer, a local desktop app that asks an AI model to suggest clearer names and folders based on filenames and file extensions. It scans only the direct files in the folder I choose (not nested folders) and shows me the proposed destinations before anything moves.
The important part: the AI is a suggestion engine, not an overconfident intern with delete permissions. I can skip suggestions, approve the ones I want, and undo the last tidy-up. It never reads file contents or deletes files.
The side-hustle pitch? A tiny privacy-first utility for people who would rather do literally anything else than organize their Downloads folder. No cloud upload, no per-file fee, and no subscription just to put PDFs with other PDFs.
Demo
Dread Drawer is a local desktop app, so there’s no hosted web demo. These screenshots show the flow:
1. The peaceful beginning: the app starts with an empty review list, pointed at the selected folder.
2. The robot is thinking: Dread Drawer sends filenames to local Ollama and waits for suggestions.
3. Suggestions, not commands: the app proposes destinations, and I decide what to apply.
4 Gemma suggests; I edit: I can change the suggested folder or filename before applying the move.
5 I choose what moves: I can skip suggestions and apply only the files I select.
6 Undo is part of the plan: Changed my mind? Dread Drawer can restore the last moved file to its original location.
To try it, install Ollama, download Gemma, and run the app:
ollama pull gemma3:4b
python .\dread_drawer.py
Code
Dread Drawer on GitHub — Python app, setup notes, and tests.
How I Built It
Dread Drawer is a small Python desktop app built with Tkinter and Python’s standard library. It calls Ollama’s local chat API and asks an open-weight model for structured suggestions: a category and a filename stem for each file.
The model receives filenames and extension-based hints—not file contents or full paths. The app validates the response, displays the suggested destinations, and only moves files after I review and confirm. It also records the last operation so I can undo it.
I tested the flow using Gemma 3 4B through Ollama. On my machine, GPU inference hit a CUDA/PTX compatibility error, so I configured Ollama to run inference on the CPU instead. It’s slower, but it let me keep the whole workflow local.
Why Does Open Innovation Matter?
Filenames can reveal more about someone’s life than they might expect. I didn’t want a file-organizing tool to require sending those names to a server I don’t control.
With a local model, filenames stay on my machine. After downloading the model, the app can make suggestions without an internet connection or a cloud API bill. I can also swap in another Ollama model rather than being locked into one provider’s pricing or behavior.
That flexibility mattered in practice: when the GPU runtime failed, I could switch to CPU inference and keep testing locally. Open models gave me options—and a way to keep building without handing my files to a cloud service.
The Lazy Payoff
I haven’t measured a real time saving yet, so I’m not going to claim that this app saves 15 minutes based on absolutely nothing but optimism.
What I can show so far is the workflow: three filenames become three suggested destinations in one review screen. The next benchmark is to time a real tidy-up and count how many suggestions I accept, edit, or reject. Until then, the honest payoff is fewer repetitive decisions—and one less excuse to keep final_FINAL_reallyfinal.docx where it is.
Prize Categories
Best Use of Gemma - The suggestion flow was tested with Gemma 3 4B running locally through Ollama.
Top comments (0)