Inspiration

Every month ends the same way for anyone running a small business or freelancing. Paper receipts are photos on a phone. Invoices are PDFs in a downloads folder. The card statement is somewhere else again. Storing all of that is easy. What is hard is answering one question: which charges still have no receipt? Most people find out weeks later, when the bookkeeper or the tax return asks for it, and by then the receipt is gone.

A NAS already holds all three pieces, the photo backup, the documents and the statement, on hardware the owner controls. That made it the right place to close the month, without uploading financial records to yet another subscription app.

What it does

Shoebox Close is a Uliya Skill for UGREEN AI NAS that runs a month-end receipt close from one sentence.

  • Finds the month's card or bank statement and every receipt in a receipts inbox folder.
  • Searches the photo library for photographed receipts using on-device OCR, and confirms each one with the vision model.
  • Extracts vendor, date, total, tax and currency from every receipt, and removes duplicates when the same receipt exists as both a photo and a PDF.
  • Reconciles receipts against the statement and shows three lists: matched charges, charges with no receipt, and receipts with no charge, plus tax totals and recurring charges worth reviewing.
  • Shows a full filing plan, and only after the user approves does it copy the receipts into a dated archive, name them consistently, tag them, and save a close report beside them.
  • Next month, it reads the last close report first and tells you which missing receipts turned up and which are still open. It never deletes files, never moves photos out of the library, never overwrites, and never guesses an amount it cannot read.

How we built it

The Skill is built with the official UGOS Skill Creation Tool (uliya-skill-kit 0.7.3) and follows the Uliya Skill Development Standard: one SKILL.md entry point plus four linked Markdown references (report format, user guide, validation plan, disclosures). There are no scripts or binaries. The workflow is pure orchestration. The parent Skill delegates nine steps to four registered experts, each with a self-contained instruction that uses only the real result of the step before it:

  • file-agent: locate the statement and inbox receipts (get-user-dir, find), then after approval create folders, copy and tag (mkdir, cpmv, tag-add, tag-add-file).
  • photo-agent: find receipt photos by OCR text and date (search-picture), read them (vision-ocr), and classify and extract fields (vision-vlm).
  • document-agent: extract receipt and invoice fields (extract with the receipt and invoice schemas) and match them to statement lines (reconcile).
  • knowledge-agent: read last month's open items (collect-evidence) and save the close report (save-text). Steps 1 to 4 are read-only. Every write sits behind an explicit approval, and every delegation handles completed, failed, cancelled, waiting_user and waiting_approval. The package passes the kit's static checker with zero errors and zero warnings.

Challenges we ran into

  • The matching rule. Exact amount plus a three-day date window turned out to be more reliable than vendor names, which differ between receipts and statements. Vendor similarity is only used to break ties, and foreign-currency charges are flagged for review instead of being force-matched.
  • Duplicates. The same receipt often exists as a phone photo and an emailed PDF, so the Skill merges them and keeps the PDF.
  • No reminder capability. The NAS capability set has no alerts or calendar, so instead of promising reminders, open items are carried forward in the close report and re-checked at the next run.
  • Writing for a runtime we could not touch yet. Round 1 has no NAS access, so the Skill is written defensively: empty results are reported as empty, unreadable fields are marked unreadable, and partial filing is reported item by item.

Accomplishments that we're proud of

A complete, approval-gated workflow that answers the question people actually have at month-end, built only from capabilities that exist on the NAS, with a clean pass on the official checker.

What we learned

The value is not in storing receipts but in reconciliation. Once the statement is the checklist, the missing-receipt list becomes the product.

What's next

  • Validate OCR and reconciliation on the assigned UGREEN AI NAS testing day with a synthetic month of receipts, photos and a statement.
  • Add a quarterly view that rolls three monthly close reports into one sales-tax summary.
  • Extend the same pattern to contracts: extract renewal and notice dates into the archive so they are reviewed at each close.

Disclosures

  • Entrant: Zavosh Zaboliyan, individual, Toronto, Canada.
  • Third-party components: none. Markdown only; UGOS capabilities via registered UGREEN experts; no external services.
  • AI tools used: an AI assistant helped draft and format the Skill files, proposal and this page from the entrant's design; uliya-skill-kit 0.7.3 was used for its capability catalog and static checker.
  • Status: not yet run on a NAS.

Built With

  • document-ai
  • markdown
  • ocr
  • skill
  • ugos
  • ugreen-ai-nas
  • uliya
Share this project:

Updates

Submission history