watfile
CLI that classifies documents with a Jev Choice and moves them into category folders, with a pluggable backend for local models.
Overview
watfile sorts files into folders by classifying them with a decision model. It extracts a title- or abstract-grade portion of each document's text, sends it to Jev as a Choice question over your categories, and receives the chosen category, per-category probabilities and confidence before moving the file. Categories can be given as a comma-separated list with optional descriptions or taken from the subfolders of a target directory.
It supports recursive folder input and a dry-run preview. A Classifier abstraction keeps the backend pluggable, with local MLX (LAYA) and other backends planned. It is published on PyPI, runnable with uvx, and resolves the API key from the environment, a .env file or a config file.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which category does this document belong to? | e.g. invoice · donation · apartment |
How it works
- Point watfile at files or folders.
- Extract a short text summary from each file.
- Jev chooses a category with probabilities.
- Move the file into the category folder (or preview with -n).
Strengths
- Dry-run preview before moving files.
- Categories from folder structure.
- Pluggable backend design.
Caveats
- Local backends are planned, not yet available.
- Document text is sent to TypeSafe.
Getting started
uvx watfile ~/Downloads -r -d ~/docs -nAt a glance
- Type
- Project
- Status
- beta
- Language
- Python
- Runtime
- CLI
- Has code
- yes
Use cases and integrations
How curated lists describe it
Text/PDF - File categorization and sorting with Typesafe AI Jev or local calibrated decision model.
hellogumbo/awesome-jev
Frequently asked questions
How are categories defined?
With -c (comma-separated, optional descriptions) or -d (subfolders of a target directory).
Can I preview first?
Yes, -n shows what would happen without moving files.
Does it work offline?
Not yet; local backends are planned.
Related projects
Privacy-first personal knowledge management system, listed as integrating Jev for document classification and tag routing.
PluginproductionTypeScriptGo terminal app that files documents using five Jev questions: category, sensitivity, urgency, whether action is needed and action state.
ProjectbetaGoObsidian plugin that ranks existing vault folders and tags for the active note with Jev and only moves or tags after you confirm.
ProjectbetaTypeScriptLLM-maintained Markdown wiki where a System One classifier decides where documents and questions go, keeping it fast as it grows.
ServicebetaPythonDocker service that classifies the Paperless-ngx inbox with Jev (or local Clef via Ollama), setting confident fields and queueing the rest.
ProjectbetamacOS menu-bar link router that opens each link in the right browser profile, asking Jev when no local rule matches and learning rules.
ProjectbetaSwift