Inspiration
My NAS had turned into a dumping ground. Screenshots with a wallet seed phrase, a passport scan sitting in Downloads, a lease that would quietly auto-renew, an invoice that charged more than the contract said. None of it was hidden. I just never looked. Dedupe tools find copies and AI chat answers questions, but nothing actually audits your files.
I come from building on-chain projects, where every serious contract gets a security audit: attack vectors, a severity rubric, and every finding checked twice before it goes in the report. Blindspot brings that method to personal files.
What it does
Say "Check my Documents folder for blind spots" and Blindspot runs a private, on-device audit of the NAS. It checks five risk vectors:
- V1 Secrets in images: seed phrases, passwords and Wi-Fi keys in screenshots and photos
- V2 Identity and financial documents: passports, ID cards and bank records in open folders
- V3 Contract deadlines: leases and subscriptions about to auto-renew or expire
- V4 Money leaks: invoices that don't match their contract, plus duplicate invoices
- V5 Duplicate bloat: copies wasting space
You get one report ranked Critical to Info, with the real file path, a masked excerpt and a plain-language impact for each finding. Every Critical and High finding is re-checked with a second read; anything that can't be confirmed is dropped instead of guessed. You can set "house rules" like "ID scans live only in Vault" and Blindspot checks them every run. Running it again shows what's new, resolved, downgraded and still open.
Fixes (move to Vault, add a tag) run only after you approve them. Blindspot never deletes files and no file content ever leaves the NAS.
How I built it
Blindspot is a pure orchestration Skill for Uliya: a SKILL.md plus reference files for the audit vectors, severity rubric, report format, remediation and a user guide. It delegates each pass to the NAS's own agents (file-agent, document-agent, photo-agent, knowledge-agent) using UGOS capabilities like ug-photo search-screen and vision-ocr, ug-document extract, ug-filemgr scan-dedupe and ug-knowledge save-text.
Passes are independent, so they can run in parallel, and each returns a fixed evidence format. Downstream steps use only real upstream results. All five delegation states are handled, and an empty or inaccessible scope stops cleanly with nothing changed.
To test it without hardware, I built a seeded fixture NAS with 8 planted risks and 4 decoys (a meme, meeting notes, a legit internet contract, an unrelated invoice), plus a Python harness that stands in for the NAS experts using tesseract, pdftotext and sha256. The dry run caught all 8 risks with 0 false positives, and covered a failed expert, a finding dropped by verification, and a re-run after fixes.
Challenges
- The checker is strict. Apostrophes or placeholders in delegate lines, backticks, or even words like "cat " in prose trip security rules. A root README is rejected even though the starter kit suggests one, so the user guide lives in references.
- Masking without leaking. My first mask kept the secret's length, which leaks information. Now masks show only the first and last characters.
- Double counting. A duplicate invoice showed up in both V4 and V5. Now each file is reported once, under the vector that matters most.
- Context changes severity. A passport in Downloads is High; the same scan in the Vault is Info. The rubric now downgrades findings inside the vault, and re-runs report them as Downgraded rather than Resolved.
Accomplishments I'm proud of
- Passes the official Uliya checker with 0 errors and 0 warnings
- 8/8 planted risks caught, 0 false positives
- Fully private: local AI only, approval-gated writes, never deletes
What I learned
The hard part of an audit isn't finding things, it's not crying wolf. Re-verification and a fixed rubric did more for trust than any extra detection.
What's next
- Validate OCR and extraction accuracy on real UGREEN hardware
- Test non-Latin documents
- More vectors, such as shared links that expose private folders
- Scheduled re-runs that only report changes
Log in or sign up for Devpost to join the conversation.