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

Share this project:

Updates

Submission history