an internal tool for sorting, labeling and qa-checking the product photos that train an ai image model.
an internal tool for sorting, labeling and qa-checking the product photos that train an ai image model.
conceived it after doing the job by hand, then designed and built it: filename rules first, a cheap vision model second, a human always last.
about 60% of files never touch the ai; reviewers see only low-confidence results. in use by the team. metrics under nda.
the team keeps curated sets of product photos to fine-tune an internal image model. each product line needs coverage of specific angles, finishes and environments; where photos are missing, the model gets worse for those cases.
photos arrive as unsorted bulk folders. when i was asked to assemble a test set myself i felt it firsthand: hundreds of images sorted by hand, coverage checked by eye, no way to see what was missing. so i built the tool. the first version used ai vision for everything and was slow, expensive and inconsistent. i iterated from there.
INCOMING FILES
│
▼
[ filename extractor ] finish in name?
│ no └─ yes → DONE (~60%)
▼
[ vision model ] confidence ≥ 0.7?
small · low-res
│ low └─ yes → DONE (badge)
▼
[ FLAGGED "?" ] → human review01 upload ─────── 02 sort + review ─────── 03 export
drop a zip categories coverage
of product black 24 black 23/25 92%
photos white 18 white 18/23 78%
glow 12 glow 9/14 64%
matte 9 matte 5/10 51%
silver 6 silver 3/9 35%
unsorted 3
72 sorted · 3 unsorted
each image: ok / copy csv · export zip
fixed / unsortedlimit what the ai decides. a human makes the final call.
the ai labels, deterministic rules dedupe, the matrix highlights gaps, and a person always approves the result.
roastmyrepo ↗ — the same pattern of automated analysis with human oversight, applied to code review.
this work was done at block, inc. (square). the case study covers process and design thinking only; metrics, screenshots and proprietary details are omitted per nda. more available on request, under the right agreement.