Turn a messy pile of invoices and receipts into a tax-ready archive: extract vendor, invoice number, date, and amount from PDFs and receipt photos into a reviewed manifest, then file everything into a Year/Quarter/Category tree with safe renaming, dry-run-first copying, and an audit-friendly summary. Use when someone needs to organize financial documents for tax time, prepare a receipts packet for an accountant, or tame a folder of unsorted invoices and receipts.
./install.sh tax-ready-document-filingname: "tax_ready_document_filing" description: "Turn a messy pile of invoices and receipts into a tax-ready archive: extract vendor, invoice number, date, and amount from PDFs and receipt photos into a reviewed manifest, then file everything into a Year/Quarter/Category tree with safe renaming, dry-run-first copying, and an audit-friendly summary. Use when someone needs to organize financial documents for tax time, prepare a receipts packet for an accountant, or tame a folder of unsorted invoices and receipts."
Take unsorted invoices, receipts, and receipt photos and produce an archive a tax preparer can actually use: every document extracted to a manifest, renamed consistently, filed into a predictable tree, and summarized by quarter and category. Originals are never touched. The filing script copies, never moves or deletes, and dry-run is the default. Anything the extractor cannot read confidently goes to a human review queue, never into the archive under a guessed name.
inbox/ folder. Separate personal and business expenses at the door; mixed documents get flagged, not silently assigned. Photos of receipts are fine. If a document is missing (replacement needed), add it to the missing-documents list in the summary instead of pretending it exists. See references/retention.md for what must be kept and for how long.bin/taxfile_extract.py inbox/ --out manifest.csv. It reads native-text PDFs (pdfplumber, pypdf fallback), OCRs images when tesseract is installed, and pulls vendor, invoice number, date, and amount with regex patterns from references/extraction-patterns.md. Output rows carry a confidence level; anything below threshold is marked REVIEW with the reason.manifest.csv and fix every REVIEW row by hand: vendor aliases (see references/extraction-patterns.md for the alias table pattern), missing dates, ambiguous amounts. Assign the business category on each row (see references/naming-and-folders.md for the category list). If a field is genuinely unreadable, leave it blank with a note; never guess it.bin/taxfile_file.py manifest.csv --dest Tax2026 --dry-run and read the planned actions. When the plan looks right, run again with --apply. The script copies files into Tax2026/<YYYY>/<Qn>/<Category>/, renames them to YYYY-MM-DD_Vendor_INV-ID_$Amount.ext, appends -02, -03 on collisions, and never overwrites. Rows missing a date or amount file into _Review/ instead of the tree. See references/naming-and-folders.md for the convention.taxfile_file.py writes summary.md: document counts, totals by quarter and category, the _Review list with reasons, and the missing-documents log. Hand this, plus the manifest, to the accountant. This skill prepares documents; it is not tax advice.manifest.csv: one row per document with columns source_path, vendor, invoice_id, doc_date, amount, currency, category, confidence, needs_review, notes. The invoice date comes from the document, never the file system date.Tax<YYYY>/ tree: Year/Quarter/Category/ folders with consistently renamed copies.review/ (inside the tree): review.csv of everything that failed extraction or was missing fields, with reasons; originals untouched.summary.md: totals by quarter and category, review queue, missing documents, retention reminder.undo-log.csv: every applied copy with source and destination, so a botched run can be reversed by deleting the dest files.manifest.csv and summary.md stay with the archive so the numbers trace back to the documents.publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e
No ratings yet — be the first to rate it.