Sorting files by extension is easy and nearly useless: a folder of forty PDFs is still a folder of forty PDFs. Sorting them by what they actually contain is the useful version, and there are good cloud tools that do it today.
They all share one property, though, and it is worth saying plainly: to sort your documents by content, they upload your documents. Not thumbnails, not metadata, the files themselves. The folder people most want tidied is usually the one holding invoices, contracts, payslips, tax letters, and a photo of a passport, which is to say the exact set of documents nobody should be casually handing to a third party so it can be filed into the right subfolder.
That is not a flaw in those products. It is what happens when the model runs somewhere else. Move the model onto the machine the files are already on, and the whole question disappears: there is no upload, so there is nothing to trust anybody with, nothing to read a privacy policy about, and nothing sitting in a bucket after you cancel.
So we built QVAC Desk Tidy: an illustrative example, not a product, that sorts a folder by content, entirely on-device. It is built on the QVAC SDK, and the point is the pattern, so you can clone it and make it your own. See it in our demo video below:
Repo: github.com/tetherto/qvac-examples (the qvac-desk-tidy example).
What the demo does
Point it at a folder. Nothing moves until you say so.
- It reads each file, works out which category it belongs to, and shows you the whole plan before touching anything. You apply it, and there is always an Undo.
- Categories are yours to edit, and there is always a “not sure” bucket. When it is not confident, the file stays exactly where it is rather than being filed somewhere plausible and wrong.
- It can keep going on its own: on a timer from 15 minutes to a day, or by watching a folder and reacting when something lands (it waits for a download to finish first). Each watched folder is either notify-first, which tells you and waits for a click, or auto-file, which moves only what it is sure about.
- Nothing is ever deleted. Name collisions get a suffix, never an overwrite. Every move is journalled and reversible.
It handles the mess a real folder contains: text files and PDFs by reading them, screenshots and photos by looking at them, and code, installers, and archives by their extension, because for those the extension genuinely is the answer.
Why local makes sense here
- Your documents never leave your machine. No upload, no account, no third party holding your contracts in order to classify them. The privacy question is not answered, it is removed.
- It works on files you would never upload. That is the actual unlock. The folder you would not trust a cloud tool with is the folder this is for.
- It works offline. Internet is needed once, on the first run, to fetch the models.
- Nothing is metered. No per-file charge, no monthly bill, no quota to think about before pointing it at a thousand files.
Recommended hardware
| Spec | Recommended |
|---|---|
| RAM | 8 GB minimum, 16 GB recommended |
| Free disk | about 0.3 GB for text only, about 1.8 GB with images |
| GPU | works on CPU, slower |
| OS | macOS 13+, Windows 10+, or Linux |
| Runtime | Node.js 22.17 or newer |
Two models are fetched on first run into the shared ~/.qvac cache: a small text classifier always, and a vision model only if the folder contains images or scanned PDFs. A text-only folder never downloads the second one.
Not sure your machine can handle it? Run npx -y @qvac/cli doctor.
One macOS thing worth knowing
macOS protects Desktop, Documents, and Downloads. Run the app from a terminal and the permission is attributed to the terminal, not the app, so a bare permissions error can look like a bug when it is not. The clean way round it is to pick folders through the app’s own Choose a folder dialog: a folder chosen that way comes with consented access, and works anywhere, not only on the Desktop.
Get it
git clone https://github.com/tetherto/qvac-examples
cd qvac-examples/qvac-desk-tidy
npm install
npm start
Choose a folder, read the plan, apply it. QVAC is open source (Apache 2.0) and free. Docs: docs.qvac.tether.io. If you build something with it, star the repo and show us.
A note on what this is
This is not a QVAC product. It is an illustrative example, provided “as is”, to show what a local AI app can do with the QVAC SDK. It moves your files, so read the plan before you apply it and keep a backup of anything you cannot afford to have reorganised. You alone are responsible for how you use it.