Cataloging Painting References with AI

August 31, 2026

One thing that comes with miniature painting is hunting for inspiration. I’d been saving reference images — Instagram screenshots, Pinterest saves, YouTube frames — and after a while I had a folder with hundreds of files named things like IMG_3182.jpg. A completely unsearchable mess. When I wanted to find “how someone painted golden armor in a grimdark style,” I had no chance.

So I decided to fix it. The result: every image lands in Obsidian as a note with a description, colors, and tags — and the whole description is generated for me by an AI model.

The idea: Obsidian as an inspiration catalog

Instead of keeping images in a plain folder, I keep them in my vault. Each image gets a small note with:

  • subject — is it a miniature, an illustration, or a color palette
  • category — e.g. warhammer > space_marines, fantasy > knights, terrain > ruins
  • colors — the 2–4 dominant colors on the model
  • tags — and not just any tags: specific painting techniques and moods, like nmm, osl, drybrush, grimdark, weathering

This lets Obsidian do what it’s best at — searching and connecting. I can click the nmm tag and see every reference for painting metal without metallic paints. I can filter by color. I can pull up everything in the chaos category. A dead folder turned into a living knowledge base.

How it works

I wrote myself a small script. It does three things:

  1. Takes an image and sends it to an AI model that can actually look at pictures (a so-called vision model).
  2. The model sends back a clean, structured description — category, colors, tags — in a fixed format.
  3. The script copies the image to the right place in the vault and creates its Obsidian note.

A few things I tuned so the catalog would actually be useful:

  • The model gets clear instructions to describe painting techniques and mood, not obvious stuff like “miniature,” “photo,” or “detail.” Five sharp tags beat fifteen watered-down ones.
  • Colors are normalized to a fixed list of 17 base colors (red, gold, silver, brown…), so “maroon,” “dark red,” and “cherry” don’t spawn three separate categories.
  • Duplicate detection — if the same image already exists somewhere, the script skips it (it compares file contents, not names).
  • A local cache — an image that’s already been described isn’t sent to the AI a second time, so I don’t pay twice for the same work.

Testing models — what I learned

This was the most fun part. I started out on OpenAI models, but quickly switched to OpenRouter — a single gateway to many models at once, so I could test different options just by changing one line of config. My shortlist was shaped by three needs: it had to see the image well, follow my tagging rules, and reliably return the structured format I ask for. Cheap was a big plus — this is bulk classification, and I’d rather not pay premium rates to sort screenshots. I also insisted on routing only to providers that don’t train on my data.

What I actually tried:

  • qwen/qwen3-vl-30b-a3b-instruct — my first pick, because it’s open, cheap, and privacy-friendly. In practice it turned out too weak: it kept dumping color names into the tags and made small typos, once even inventing a color that doesn’t exist. My code cleans a lot of that up after the fact, but a weak model means you’re constantly patching it at the source.
  • qwen3-vl-235b — the bigger sibling. A real quality jump over the 30B if I’d wanted to stay on cheap, open Qwen.
  • claude-sonnet-5 — the premium option. Best at following instructions, so the cleanest tags with basically no junk — the one to reach for if tag purity mattered more than cost.
  • google/gemini-2.5-flash — very cheap, fast, strong vision, solid structured output.

I settled on google/gemini-2.5-flash, and that’s what I use now. The quality jump over Qwen was obvious the moment I ran it on a real folder: concrete, genuinely useful tags (things like crossbowman, morning-star, chainmail, wizard), clean colors straight from the palette, and no color names leaking into the tags. For mass-cataloging inspiration on the cheap, it hits the sweet spot — I don’t need the world’s most expensive model to recognize “space marines, gold and red, weathering technique.”

How I add new images (the best part)

The whole job now comes down to: drop in an image and run a single command. I can point it at one file or a whole folder — the script chews through everything, sorts it into categories, and writes the notes.

I can also attach my own label to a batch of images — for example, when I grab a series of screenshots from one tutorial, I mark them with a shared tag so they stay together.

The payoff: finding inspiration takes seconds, and adding new inspiration takes practically no effort. Collecting references stopped being a chore, because the tidying happens on its own.

What’s next

A few ideas for later: auto-generated gallery notes that collect every model in a given color scheme, and wiring this up to a quick shortcut so I can add an image with a single keypress.

For now, though, it works — and, most importantly, I actually use this catalog while painting. Which was the whole point.