Every month my daughter Kion's preschool sends home a photo album. In practice that means several zip files, each with hundreds of pictures of the whole class, and somewhere in there are the dozen or so of Kion. The job was always the same: unzip everything, scroll through hundreds of photos of other people's children, pick out mine, and add those to the Photos app. It is a sweet problem to have and a tedious one to do, every single month.
So I built KiFinder, a small Mac app to do the picking. You enroll a person by dropping in a handful of reference photos, point it at an album (a folder, loose images, or the preschool's zip files as they arrive), and it sorts every photo into three piles: the matches it is confident about, the ones worth a second look, and the rest. You skim the confident ones, glance at the maybes, keep what is right, and export the keepers straight to Photos. Group shots get their own handling, since a class photo has a dozen faces in it, so it shows every detected face and you tap the one you mean. Under the hood it scores each face with on-device embeddings from InsightFace's ArcFace model, by how close it is to the person you enrolled, and tunes its own threshold so it catches the real photos without burying you in false ones.
Reviewing a scan. KiFinder auto-selects the matches it is confident about, sets the borderline ones aside as worth a look, and drops the rest. For a group shot it shows every detected face so I can tap the right one. For the demo I enrolled myself rather than my daughter, with synthetic faces standing in for everyone else.
On-device is the whole point, not a nice-to-have. These albums are full of other families' children. Uploading hundreds of photos of someone else's kids to a cloud service to find my own would be exactly the wrong trade. KiFinder never sends a photo anywhere. The model runs locally, the originals are never modified, and the only thing that leaves the machine is the handful of photos I choose to keep.
Enrolling a person is just dropping in five to a dozen reference photos. The faces are cropped on the Mac and never leave it, which is the whole posture of the app.
It also learns from me. After a scan I can keep the real matches and skip the look-alikes, and those corrections fold back into the person's profile so next month's albums rank better, all without re-running the model on a single pixel. The keepers collect in a library grouped by person and month, ready to hand to Photos.
The keepers, gathered in a library grouped by person and month, ready to export to Photos.
I built the whole thing by driving Sparra, my adversarial build harness, which made KiFinder one of its first real test subjects. The updates below are the build log: the matching engine, teaching it to learn from my corrections, and the Mac app that grew up around them.