Smart Move (smv) - AI-powered file organization tool
Project description
smart-mv
smart-mv helps you clean up messy folders by looking at what a file actually is, then suggesting the right place, the right name, or when it should just go to Trash.
Instead of sorting by filename alone, it uses file content, folder context, and your existing naming patterns so your files end up where they already make sense.
Why People Use It
- Turn a chaotic
Downloadsfolder into an organized system - Rename vague files like
Document_20250419_0001.pdfinto something useful - Match the naming style already used in your folders
- Catch old installers and obvious clutter before they pile up
- Keep you in control when the choice is not obvious
Quick Start
pip install smart-mv
smv ai setup
smv /path/to/file.pdf
If you use local models, Ollama is supported. OpenAI, Anthropic, and Gemini are also available.
What It Handles
- PDFs
- DOCX files
- Text files
- Images
- Common clutter like old installers and temporary downloads
Demo 1: Homework PDF sorted and renamed
Before
~/Downloads/
└── HWSolutions10.2025.pdf
~/Documents/School/2025 Spring/PHYS 311/HW/Homework_Solutions/
└── SolnsHmwk9_2025.pdf
After
~/Documents/School/2025 Spring/PHYS 311/HW/Homework_Solutions/
├── SolnsHmwk9_2025.pdf
└── SolnsHmwk10_2025.pdf
smart-mv reads the file, figures out it is a physics homework solution set, finds the matching course folder, and renames it to fit the pattern already used there.
Demo 2: Downloads folder cleanup
Before
~/Downloads/
├── label.pdf
├── Document_20250419_0001.pdf
└── HttpToolkit-1.19.3.dmg
After
~/Documents/
├── Legal Documents/
│ ├── Passport_Page_20250419.pdf
│ └── Receipts/
│ └── Nike_Return_Label_1ZXXXXXXXXXXXXXXX.pdf
~/.Trash/
└── HttpToolkit-1.19.3.dmg
The return label gets renamed clearly, the passport scan is archived somewhere sensible, and the old installer is treated like clutter instead of living in Downloads forever.
Basic Commands
# Organize a file
smv /path/to/file.pdf
# Same thing, explicit form
smv sort /path/to/file.pdf
# Set up or change your AI provider
smv ai setup
# See current AI settings
smv ai show
Install From Source
git clone https://github.com/kariszhuang/smart-mv.git
cd smart-mv
pip install -e .
smv --version
Python Version
Python 3.10+
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file smart_mv-0.2.1.tar.gz.
File metadata
- Download URL: smart_mv-0.2.1.tar.gz
- Upload date:
- Size: 53.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a96449d687aef97c08dc2102c2f583e6478cd9f008af32ab8ba1f8b726508ffe
|
|
| MD5 |
61e6fb6673c4e868601c4eb4d4f81c4d
|
|
| BLAKE2b-256 |
875f72bd425128943b2136c0d225cddc45fbf12eca54baae22c1085844fb3278
|
Provenance
The following attestation bundles were made for smart_mv-0.2.1.tar.gz:
Publisher:
release-pypi.yml on kariszhuang/smart-mv
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smart_mv-0.2.1.tar.gz -
Subject digest:
a96449d687aef97c08dc2102c2f583e6478cd9f008af32ab8ba1f8b726508ffe - Sigstore transparency entry: 1396320400
- Sigstore integration time:
-
Permalink:
kariszhuang/smart-mv@fd1ac877738dfbe7162fa3121452cae206dd38c7 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/kariszhuang
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-pypi.yml@fd1ac877738dfbe7162fa3121452cae206dd38c7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file smart_mv-0.2.1-py3-none-any.whl.
File metadata
- Download URL: smart_mv-0.2.1-py3-none-any.whl
- Upload date:
- Size: 55.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9def3bf1e3045ea7fcff7af947077bd00608dabe63904c2d9536edcaefab537a
|
|
| MD5 |
5b50701fe71e95bbce5dd4d96852cfe1
|
|
| BLAKE2b-256 |
76d047b1665130fa84b2a180997db05d5500f51d122df2f61f7e465c66a25eb8
|
Provenance
The following attestation bundles were made for smart_mv-0.2.1-py3-none-any.whl:
Publisher:
release-pypi.yml on kariszhuang/smart-mv
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
smart_mv-0.2.1-py3-none-any.whl -
Subject digest:
9def3bf1e3045ea7fcff7af947077bd00608dabe63904c2d9536edcaefab537a - Sigstore transparency entry: 1396320410
- Sigstore integration time:
-
Permalink:
kariszhuang/smart-mv@fd1ac877738dfbe7162fa3121452cae206dd38c7 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/kariszhuang
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-pypi.yml@fd1ac877738dfbe7162fa3121452cae206dd38c7 -
Trigger Event:
push
-
Statement type: