A single averaged face works until it doesn't. Kion at one is not Kion turned away under a hat, and a hard shot like that scores low no matter how good the reference photos are. The fix in the second cycle was to let the tool learn from me without ever re-running the model. The trick is that scan now caches each photo's face embedding directly in the manifest. So when I confirm a real match or reject a look-alike, that decision is just an append to the profile, never a recompute.
The profile grew from one averaged vector into an exemplar bundle: the stable enrolled core, plus confirmed positives and rejected negatives that I add over time. A face now scores as its best match across all of those, so the moment I confirm one hard low-scoring shot, every similar shot in future albums gets lifted with it. Two new commands do the work. feedback folds a manifest's confirms and rejects into the profile, quality-gated so a tiny blurry crop can't poison it and idempotent so I can't double-count. rescore re-buckets an old scan against the improved profile with no image loading and no model calls at all, which makes re-running last month after a few corrections nearly instant. The references I enrolled stay untouched as the trusted core; everything I teach it lives alongside them.