1. What it does
Before party photos go out, it names the frame in each near-identical series where nothing is blurred and everyone UGREEN Photos found in the series is present.
2. User and problem
Families with phone photos on a NAS. After a party, nine near-identical shots wait to go to the family. Checking each takes time, so all nine stay, or the first goes out: the one where Grandma turned away.
3. Solution
Series: same camera, ≤5 s apart, ≤30 s long. UGREEN Photos knows the family's named faces and says who is in each frame. The on-device vision model answers closed questions per frame: blur, exposure, head cut off, closed eyes.
4. User flow
Name a folder. Read verdict and reason per series: "IMG_0412: Leo not found by UGREEN Photos. IMG_0414: blurred." Approve saving the report; optionally, albums "Keepers" and "You choose" and moving defective frames to "Set aside". Nothing is deleted.
5. Difference
(a) Culling tools judge focus, blinks and exposure; only the NAS knows who is missing: a vision model sees a face, not whose. (b) Each reason is a visible named defect, not a score. (c) No forced pick: ties go to "You choose".
6. Capabilities by step
| Step | Expert | Capability | Approval |
|---|---|---|---|
| List images | file-agent | ug-filesystem find |
none |
| Capture data | photo-agent | ug-photo meta |
none |
| People | photo-agent | ug-photo figure-albums, search-picture |
none |
| Judge frames | photo-agent | ug-photo vision-vlm |
none |
| Save report | knowledge-agent | ug-knowledge save-text |
workflow |
| Albums | photo-agent | ug-photo albums, create-album |
workflow |
| Set aside | file-agent | ug-filesystem mkdir, file-workflow batch-move |
gateway, workflow |
7. Technical approach
One frame per vision call, temperature 0 requested. It recognises no new face and writes no people data. Rule: one clean frame, Clear; several, Equal; none, No clean frame.
8. Status
Built: SKILL.md and six references passing the Starter Kit checker; the answer key for 40 photos still to shoot. Stand-in off the NAS: open 8B vision model, 70 keyed open-licence frames, keys frozen first, wording revised once on set 1, run once on fresh set 2. Verdict right in 11/12 series per set; defective frames flagged 36/38; clean passed 31/32; one keeper defective. Not done: NAS test photos, any NAS run.
9. Validation plan
Set "Party": 40 photos, 12 series, staged defects, two consenting named people.
- Core 1: series 12/12; verdict and keeper ≥10/12; zero reasons citing unkeyed defects; blur and exposure ≥90%, head cut-off ≥80%, eyes ≥90%, people ≥14/15.
- Core 2, approved: albums hold exactly the keyed photos; 19 keyed frames move to "Set aside"; all 40 files remain. Refused: no album, zero moved.
- Edge: no labelled difference: Equal. All defective: No clean frame. Unindexed folder: finishes without the people check.
- Real use: an unstaged family folder, 100+ photos; frames to review before and after.
Fallback: checks below mark dropped; people under 14/15, notes only.
10. Limits and risks
One folder, ≤200 judged frames per run. Not judged: smiles, expressions, gaze. Main risk: the index can miss small or turned faces. Weakest measured check: head cut off, 8 of 12.
Entrant
Erik Sindonen, individual entrant.
Third-party components and licences
None in the package: only Markdown written for this hackathon. Used only for the stand-in test, not included: Wikimedia Commons photos and videos (CC0, public domain, CC BY, CC BY-SA; each listed in stand-in-run.md), qwen3-vl 8b/4b (Apache-2.0), Ollama (MIT), Pillow, NumPy, OpenCV, FFmpeg. The NAS test set "Party" will use the entrant's own photos.
AI tools used
Claude by Anthropic: drafting and editing of the Skill text, references and this proposal, and checking them against the capability catalog; also picking the open-licence photos, building the stand-in frames and writing the scoring script. qwen3-vl: the model under test. The Starter Kit's static checker: validation.
Built With
- markdown
- ugreen-ai-nas
- uliya