scan-organizer
OCR, classify, and organize scanned PDFs into category subfolders using AI vision and language models. Processes medical, financial, insurance, tax, legal, personal, and household documents.
Install
mkdir -p .claude/skills/scan-organizer && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/15982" && unzip -o skill.zip -d .claude/skills/scan-organizer && rm skill.zipInstalls to .claude/skills/scan-organizer
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
OCR, classify, and organize scanned PDFs into category subfolders using AI vision and language models. Processes medical, financial, insurance, tax, legal, personal, and household documents.About this skill
Scan Organizer
Processes scanned PDFs — extracts text (Docling + vision OCR), classifies by category using an LLM, and organizes into subfolders with markdown and metadata sidecars. Works with any OpenAI-compatible API (Ollama, OpenAI, OpenRouter, etc.).
Categories
medical, financial, insurance, tax, legal, personal, household, other
Commands
Run from the scan-organizer project directory.
Process new scans
uv run scan-organizer process
Dry run (classify without moving)
uv run scan-organizer process --dry-run
Process a single file
uv run scan-organizer process --file /path/to/scan.pdf
Force re-process all (including already processed)
uv run scan-organizer process --force
Check inbox status
uv run scan-organizer status
Undo a processed file (move back to inbox)
uv run scan-organizer undo <filename>
Reclassify a file
uv run scan-organizer reclass <filename>
Output Format
All commands output JSON to stdout. Progress messages go to stderr.
Process output
{"processed": 3, "skipped": 7, "errors": 0, "results": [{"file": "...", "category": "medical", "title": "...", "destination": "..."}]}
Status output
{"inbox_count": 10, "unprocessed": 3, "already_processed": 7, "categories": {"medical": 2, "financial": 3}}
Architecture
- Extract — Docling parses PDF structure and native text
- OCR — Pages with sparse text are rendered to PNG and sent to a vision model
- Classify — Merged text sent to a language model for categorization
- Organize — PDF moved to
<scans_dir>/<category>/,.md+.meta.jsonsidecars written
File Organization
<scans_dir>/
medical/
2025-12-20_lab-results_0003.pdf
2025-12-20_lab-results_0003.md
2025-12-20_lab-results_0003.meta.json
financial/
...
.manifest.json <- tracks all moves for undo
Tips
- Run
statusfirst to see how many unprocessed scans are in the inbox - Use
--dry-runto preview classifications before moving files - The manifest tracks all moves for auditability
- If a classification is wrong, use
reclassto undo and re-process