Getting an LLM to Make Me a Tool for Enriching the Color Metadata in My Icon Collection

On my icon gallery sites, I have metadata I’ve manually added over the years to tag certain icons as being predominantly ā€œblueā€ or ā€œorangeā€ or some other color.

Then I use this metadata to present icons of (roughly) the same color. It’s kinda neat to be able to browse a wall of icons that are all the same color.

Screenshot of a wall of icons tagged as ā€œpurpleā€ on iosicongallery.com

The thing is: I know there are a lot of icons I’ve missed tagging over the years. But I have no idea how many, and figuring that out seems like a really arduous task. How do I go through 2,000+ icons and find all the ones that look predominantly ā€œorangeā€ but haven’t been tagged as such yet?

Seems like a good task to throw at an LLM. But I don’t want to just say, ā€œGo tag everything that’s missingā€ and blindly trust the output. I need to be able to make a decisions as to whether I think a particular color is ā€œorangeā€ or not.

What I need is a tool for the job. I’m a very visual thinker, so to continue curating these color categorizations, I need some way for the computer to do its thing really, really fast, and then pull me into the loop to visually make decisions.

Here’s how I am thinking about about accomplishing this task:

That seems like it would be a good tool to put me in control of visual decision making around color categorization. So I tell the LLM to run with it.

We chat back and forth. I think, ā€œYou probably need to run all the icons through some model to make the correlation?ā€ But it’s like, ā€œNah bro, just make a ā€˜hue histogram’.ā€ It tells me how. For a color like ā€œorangeā€, I can:

[process] each PNG, skip transparent pixels, skip low-saturation gray, convert the rest to HSV, and score how much of the remaining mass sits in the orange hue band (roughly 15–45°). Rank icons that don’t already have colorId: orange.

Ok, sure. That sounds reasonable.

[This] scores each icon PNG by share of opaque pixels per color bucket, then writes a standalone HTML page: tagged vs maybe-missing, per color.

Let’s just make it, and then I’ll decide whether it’s good enough.

After a few iterations, the computer going ā€œbrrā€¦ā€, and me saying ā€œexplain that like I’m dumbā€, I have a really effective little tool!

Screenshot of a tool showing a collection of orange icons side-by-side, representing icons that have been tagged orange in my collection vs. ones that haven’t.

The little threshold slider is a nice touch. It lets me fiddle around with the fidelity of the matches. In some cases, sliding it down reveals more icons I would’ve otherwise missed. In other cases, I’m like ā€œWhat are you thinking? I don’t see that as ā€˜yellow’ at all!ā€

Supper effective little tool. I go through each color, select the ones I think are missing, paste the IDs back into the LLM, and then have it update each icon's metadata.

Boom, done! That all would’ve taken so long before. I would’ve never done it.

Takeaways: