File Lifecycle

📥 intake/ Drop zone
⚙️ processing/ AI tagging
processed/ Tagged & ready
also →
📦 archive/ Originals kept
🚫 dupes/ Near-matches

Folder Reference

📂 HandiRamp Photo Tagger /Volumes/Crucial External 1TB/Dropbox/HandiRamp Photo Tagger/
📥
intake/
The starting point. Drop any photo or video here and the pipeline picks it up automatically within seconds.
Drop zone Auto-watched by watcher.py wc_import.py deposits here too
⚙️
processing/
Working set. Files are moved here the moment the tagger starts on them. They stay here until reviewed and approved in the review UI — then move to processed/.
Active batch Hash-renamed on arrival XMP tags written here
processed/
The canonical asset library. Every file here has a hash-based filename, full XMP tags embedded, and is synced to Dropbox so the whole team can browse and download.
Canonical output Fully tagged Synced to Dropbox Searchable via review UI
📦
archive/
Safety net. A copy of every original file (unmodified) is stored here before any renaming or tagging happens. Also holds superseded files when a higher-res original later replaces a placeholder.
Unmodified originals _original suffix _superseded suffix for replaced files
🚫
dupes/
Detected near-duplicates. When a new file matches an existing processed file within 8 perceptual hash bits, it's quarantined here instead of being tagged again. Logged in dupes-log.json.
pHash near-match (≤8 bits) Never tagged Safe to delete after review
⚙️
config/
Configuration files that control how the AI tags photos. This folder is symlinked from Mini 3 — edits here sync automatically to the live pipeline with no restart needed. 🔗 Symlinked → ~/dam/config on Mini 3
  • product-tags.csv — master tag list; auto-synced from the live worksheet
  • tagging-rules.md — AI rules extracted from Holly's corrections by distill.py
  • training-set.json — verified examples for future model fine-tuning
Symlinked to Mini 3 Auto-syncs from worksheet Edit here = live immediately
📋
review/
Review batch files and logs. The HTML review batches live here and are served by the review portal. Corrections and approvals are recorded in the JSON logs.
  • review-batch-N.html — batch files generated by review_gen.py
  • notes-log.json — all reviewer corrections and approvals
  • batches.json — tracks which processed files have been batched
  • dupes-log.json — log of duplicate detections
Review portal source Corrections feed distill.py
About the hash-based filenames. Every file in processed/ is renamed to YYYYMMDD_HHMMSS_<phash>_slug.jpg — a timestamp, a perceptual hash fingerprint, and a human-readable slug. This is what makes duplicate detection, upgrade detection, and searchability all work without a database.
Adding files is simple. Drop any photo or video into intake/ via Dropbox and the pipeline handles everything automatically — dedup check, AI tagging, archive copy, and review queue — usually within 10–30 seconds.