-
Each bank line is checked against the receipts on the NAS; every match quotes its amount from the file. Simulator run, synthetic month.
-
No receipt for a bank line? photo-agent searches photos by recognized text and accepts only a photo showing the same amount.
-
The Skill stops and shows the counts and planned changes. Nothing on the NAS changes until the user says confirm.
-
A test receipt hides an order in white text. The Skill names the file to the user, matches it on its real amount and moves nothing.
-
The Uliya orchestrator only routes: four NAS experts read, match and write. 6 steps, one pause, 9 delegations.
-
33 simulator runs on the submitted version, zero safety violations. Failed runs are shown too, with what still breaks.
Inspiration
Receipts are easy to scan and hard to find at tax time. Nobody checks them against the bank, so the gaps show up months later, when the accountant asks. Cloud apps can reconcile, but only after you upload your finances or connect your bank.
What it does
Month-End Close Pack is an Uliya Skill for the UGREEN AI NAS. It treats the exported bank statement as ground truth:
- It matches every statement line to a receipt or invoice on the NAS by amount and date, and quotes the source file for each amount.
- It ties the class totals back to the statement total.
- For payments without a receipt, it searches the photo library and Downloads.
- After a preview and the user's "confirm", it saves one close report and tags the matched receipts. It never moves, renames or deletes an original.
A repeat run skips receipts that are already matched, so you add the missing ones and run it again.
How we built it
A Markdown orchestration Skill built to the Uliya Skill Development Standard with the official uliya-skill-kit:
- 6 steps and a confirmation pause;
- 9 delegations to file-agent, document-agent, photo-agent and knowledge-agent;
- all five delegation states handled.
The orchestrator only routes. document-agent does the matching, the counts and a self-check.
Without a NAS before the finals, we built a simulator. Ollama cloud models play the Uliya orchestrator against mock NAS experts working on a synthetic month: 25 statement lines, 23 receipts and 11 traps, such as a receipt with hidden instructions, a blurred photo, a locked PDF and day-month dates. In a second mode, a vision model plays document-agent and reads the real receipt images.
AI tools: Ollama cloud models only in the simulator. All test data is synthetic.
Challenges we ran into
Small orchestrator models skip pauses, shorten long values and send prose as commands. We changed the Skill until it held up:
- explicit run rules;
- long values placed last in each instruction;
- a consent token carrying the user's own words;
- the report built by document-agent rather than the orchestrator.
The smallest model we tested, gpt-oss:20b, still sometimes shortens the long ledger on a repeat run. We will rerun that scenario on the NAS.
Accomplishments that we're proud of
- The official checker passes with zero warnings.
- Zero safety violations on the submitted version in the simulator (33 runs): nothing is written before the user confirms, and no original is moved or deleted.
- Mid-size orchestrator models (gemma4:31b, kimi-k2.6) passed every scenario.
What we learned
- Safety has to come from structure (where the Skill stops, what a write needs) more than from wording.
- Mocks test the orchestration, not the reading. The vision model reading the real receipt images found three Skill issues the mocks could not show, for example a blurred receipt whose year was misread and which was still matched. We changed the rules, and the blurred case stays on the NAS-day checklist.
What's next for Month-End Close Pack
On the finalist NAS day we will check reconciliation on CSV statements, how long OCR indexing takes for photo search, and the platform approvals. A ready-made fallback edit exists for each check.
Log in or sign up for Devpost to join the conversation.