Inspiration

Applications for a visa, a mortgage, a university place or a new job are rarely rejected over big things. They are rejected over small ones: a passport number with two digits swapped on a hotel booking, bank statements that cover two months when three were required, a document that expires a week before the travel date.

The documents involved are also the most sensitive files a person owns: passport scans, bank statements, employment letters. Most people will not upload those to a cloud chatbot to have them checked. A NAS that already holds the files, with AI agents that can read them in place, is the right home for this job.

What it does

Application Pack Checker compares a folder of personal documents on a UGREEN AI NAS with the official requirements document and tells the user, before they submit:

  • which required documents are missing;
  • which documents break a stated rule, such as a validity date or a minimum number of months covered;
  • where details disagree between documents: names, dates of birth, ID numbers, amounts and addresses.

Every requirement gets one status (READY, MISSING, MISMATCH or NEEDS REVIEW), and every flag comes with evidence: which document, which field, which value, compared against which other document. After explicit approval it can also copy the matched documents into a new folder, ordered and named to follow the checklist, and tag them.

How we built it

We built the Skill with the official UGOS Skill Creation Tool (uliya-skill-kit 0.7.7) and used only capabilities in its catalog. The Skill is a single SKILL.md plus five Markdown references, and it orchestrates three NAS expert agents across eight steps:

  • file-agent verifies the paths the user names, lists the folder, and later creates the pack folder, copies files and applies tags;
  • document-agent parses the requirements, inspects and extracts fields from each document (with OCR), translates non-English documents, and confirms evidence for each flag;
  • knowledge-agent saves the report as a note.

Each step uses only the real result of the step before it. Reads need no approval; every write (translation copy, saved report, pack folder, tags) needs an explicit yes from the user plus platform approval.

We designed the idea, the workflow, the safety rules and the test cases ourselves. AI assistants (Claude Opus 5.5 and Claude Fable 5.2) drafted and revised the Skill files against that specification, and the package was then put through an independent review that led to a further round of fixes. The full disclosure is in references/disclosures.md.

Challenges we ran into

  • No identity-document template. The kit's extraction templates cover invoices, contracts and receipts, not passports or bank statements, so we use generic extraction with an explicit field list.
  • No way to verify a local model. The kit cannot choose or confirm which AI model the NAS uses. The Skill therefore asks the user before reading anything, stops if that is not confirmed, and says plainly in the report that the confirmation is the user's, not a verification.
  • Translation output location. The translate capability writes a draft copy but has no output-location option, so the Skill tells the user this before asking for consent.
  • Names across scripts. A name in Arabic or Cyrillic can be written in Latin letters in several accepted ways. We treat ID numbers character for character, but treat transliteration and name-order differences as NEEDS REVIEW rather than errors.
  • Not guessing. A file called insurance_quote_car.pdf must never satisfy a travel insurance requirement. Matching is by document content, never by file name, and a missing item makes the Skill stop and ask.
  • Building without a NAS. Round 1 gives no device access, so everything so far is checked statically and by tabletop walkthroughs of our test plan.

What we learned

  • Writing a good orchestration Skill is mostly about boundaries: what to do when a result is empty, partial, uncertain or waiting for approval.
  • "READY" is a dangerous word. An unread page or an uncheckable rule must block it, so we made every stated constraint end in an explicit disposition.
  • Documents are evidence, not instructions. Text inside a file must never be able to grant approval or redirect the workflow.
  • Being honest about limits (what the kit cannot do, what we could not verify) made the design stronger, not weaker.

What's next

If we become finalists, we will run our three test cases on the NAS: a complete Schengen-style pack with a swapped passport digit, a mortgage pack with an Arabic bank letter and short statement coverage, and a pack with missing travel insurance plus an unrelated car insurance quote. We will then tune the extraction prompts and report wording against real agent results.

Built With

  • agent-skills
  • ai-agents
  • document-extraction
  • machine-translation
  • markdown
  • ocr
  • ugos
  • ugreen-ai-nas
  • uliya
  • uliya-skill-kit
Share this project:

Updates

Submission history