Inspiration
I moved to Singapore for a master's in 2026. Between the student pass, the tenancy agreement, the insurance policy and a reimbursement, I have assembled the same kind of packet four times: a list of what someone else requires, and a folder of files that may or may not satisfy it. The hard part is not finding the files. Uliya already finds them. The hard part is deciding, item by item, whether the thing in front of me is the right document, for the right person, inside the right date window, and then being able to prove that decision to a clerk who has never seen my folder.
What it does
You give it two things: a checklist someone else wrote (a visa office, a finance team, an insurer, a landlord) and the folder where your files live. It returns a packet you can hand over: a directory, a manifest, a cover sheet and a run record. Every required item ends with exactly one state, out of six: ready, expired, noncompliant, conflict, missing, or unreadable. Each state carries a cited document and, where the file has a text layer, a page. Copies move one item at a time, and each move is confirmed before it happens.
How we built it
I wrote the vocabulary first, then the short-circuit order, then ten invariants, then nineteen conformance cases, then four checklists, and the ten written answers last. Every claim in the Skill has a case that can fail it. The Skill itself only orchestrates. Listing, album recall, page counting and extraction are delegated to file-agent, photo-agent, document-agent and knowledge-agent over ug-filesystem, ug-photo, ug-document and ug-knowledge. The on-device model extracts; a local rule table decides; nothing is inferred from a filename.
Challenges we ran into
The same wrong-family situation was answered six different ways across six files. I fixed the rule instead of the wording, which meant touching all six, and settled on two mutually exclusive rules: no candidate of the matching family means missing, with the near miss named; a matching-family document that fails a field or a specification means noncompliant. Choosing a representative file by newest path quietly used the modification date and broke the promise that a rerun produces the same manifest. It now sorts by full path. Promoting readability ahead of family checks fixed one encrypted-file case and broke the empty folder: with nothing in scope, the readability question answers no and every missing item becomes unreadable. It needed an explicit empty-set exception. The vendor's static validator checks structure, not meaning, so I wrote a second audit with twenty cross-document checks; a deliberate one-line edit made it exit non-zero, which is the only reason I trust it. The last challenge is arithmetic I did not enjoy: ten answers in 447 words without dropping a citation.
Accomplishments that we're proud of
The package is fifteen Markdown files, no scripts, no personal data, and it passes the vendor's static checker with zero errors and zero warnings. Behind it sit six states, nine short-circuit steps, fifteen basis codes, nine run-level reason codes, ten invariants, nineteen conformance cases and forty-two checklist rows. Coverage never prints a bare proportion. A run reads ready 8/12 - expired 1 - noncompliant 1 - conflict 1 - missing 1, and an unreadable item is counted outside the denominator rather than folded into a number that looks complete.
What we learned
Numbers have to close. If one item cannot be read and the table still prints five counts summing to twelve while that item sits outside, the table is lying; the denominator has to drop to eleven and the line has to say so. A near miss is not an absence, and a state word is not a note. TYPE_MISMATCH is useful next to a missing item and must never be the reason for a state. Honesty is cheaper to design in than to add later. The invariant that every item has exactly one state is what made the rest of the contradictions visible.
What's next for Evidence Packet Builder
I do not have the iDX6011 Pro in hand, so the package is checked statically, not on hardware. Round 1 rules allow that, and the five checks I owe the device are written down: cross-year recall, album-only recall, page counting and extraction, copy fidelity, and a manifest hash with one refused copy. They go into the Round 2 video, one run that passes and one copy that gets refused. After that: more families through the same intake steps (employment proof, school enrolment, medical claim), each with its own checklist and cases, and a revision log so the package keeps working when the NAS moves to a new model.
Built With
- ai
- document-agent
- file-agent
- idx6011
- knowledge-agent
- markdown
- open
- photo-agent
- ug-document
- ug-filesystem
- ug-knowledge
- ug-photo
- ugreen
- uliya