Inspiration
I work as a florist and study Python independently because my dream is to work at OpenAI one day. I do not currently have the opportunity to study at a university or another educational institution, so I learn Python with ChatGPT as my mentor.
One day, I faced a simple problem: I had too many photos. I decided to write a program called SnapSort to organize them. When Codex became available, I had the opportunity to improve the program significantly. That is how SnapSort 2.0 was born.
What it does
SnapSort 2.0 analyzes photos and videos before making any changes. Users can review every planned action, duplicate, skipped file, and error.
Copying is the default mode. Moving files requires explicit confirmation. Existing files are never overwritten, identical content is detected with SHA-256, and successful operations are recorded in an authenticated JSON undo journal.
Before undo begins, SnapSort validates the complete journal and every referenced path. It also refuses to modify files that have changed since the original sorting operation.
How I built it
I used Python, Tkinter, Pillow, pytest, Git, GitHub, and Codex with GPT-5.6.
During Build Week, Codex helped me audit the original project, identify data-loss risks, redesign the architecture, separate analysis from execution, improve error handling, and create automated safety tests.
The final version includes:
- a reusable core
- a responsive Tkinter GUI
- a preview-first command-line interface
- cancellation support
- per-file error isolation
- SHA-256 duplicate detection
- HMAC-authenticated and checksummed undo journals
- 32 automated tests
Challenges
The most difficult part was making undo safe. A forged or modified journal must never be able to delete an unrelated file. SnapSort therefore validates the journal structure, session identity, allowed roots, and every path before making its first change.
Another challenge was ensuring that damaged images, malformed EXIF data, decompression bombs, filename collisions, and other individual file errors do not stop the entire analysis.
What I learned
I learned that safety is not a single feature. It must be designed into every layer of the application: preview, validation, execution, logging, error handling, and undo.
I also learned how useful Codex can be for systematic auditing, test design, and improving an existing codebase while preserving the original project history.
What's next
I would like to improve the user interface, add more metadata support, create signed desktop builds, and continue testing SnapSort with larger real-world media collections.
Built With
- python
- tkinter
Log in or sign up for Devpost to join the conversation.