Applied AI · Search and ranking

Artist Search

Describe the art you need the way a studio would brief it, and get back the artists who make that kind of work. I directed AI agents to build the pipeline, the database, and the site, and had separate reviewer agents judge each piece blind.

Why I built it

Studios hire people, so the search should return people.

A studio looking for concept art writes a brief: a style, a subject, a medium, and whether the artist is open for work. Most art search returns single images, and someone then has to work backwards from each image to the artist and their availability.

I wanted to type the brief as written and get back a short list of artists, each with a profile, their own tags, and a few works that show why they matched.

The search

A brief in, a list of artists out.

Each result is an artist card with a one-sentence profile, the artist’s own tags, and four of their works. Filters cover open for work, specialty (character, environment, creature, vehicle), and medium. From any artist, “More like this” finds others who work in a similar style and shows the works closest to that style. Every work links back to where the artist posted it.

The pipeline

The heavy work runs on my own GPU; the site only searches.

Local models tag and describe each work, check every claim against the image, rate the content, embed the style, and write a one-sentence profile for each artist. A full analysis run took several days on one RTX 5090, so I had the agent build a background worker I could pause, check, and resume whenever I needed the PC.

No paid AI service is used, no model is trained, and no image is generated. The database holds text, links, thumbnail addresses, and vectors. Its tables are locked, and only the site’s server functions can query them.

How I used AI

One agent built each piece, and a fresh one judged it.

I split the project into pieces with a written bar for each: discovery, collection, tagging, profiles, text ranking, style similarity, the pages, the database, and claim or remove. A builder agent worked on a piece, then a separate reviewer agent that had never seen the code got the goal, the bar, and the real output, and nothing else.

My part was the decisions an agent should not make alone. I read the source platform’s terms and chose how its content could be used, set what the site shows and what it holds back, decided when a quality level was good enough to ship, and chose which risks were acceptable for a portfolio project. Each decision is written down in the repository with its date and reason.

AUTOMATED900+ tests
TEXT QUERIES36, frozen first
STYLE SEEDS30, drawn at random
DECISIONS20, dated

Blind testing

I froze the test set before any search code existed.

The 36 test queries were written before the ranking code, so they could not be tuned to it. The style seeds were drawn at random from the collected artists. For each query or seed, a reviewer saw two result sets labeled A and B in random order, one from Artist Search and one from the source platform’s own search or “more like this”, and picked the better one.

28 to 8blind wins on text search across 36 queries. Style similarity also came out ahead, 14 to 12, confirmed by a second pair of reviewers.

The style result is close, and I report it that way. Searches that exclude something, such as “no anime”, are still on the list for later.

Respecting artists

The site links to the art and never copies it.

Images load from the source with credit and a link back, and cached previews stay on my machine. Only public, professional information is kept, and contact details are left out of everything shown. On artists’ own sites, the crawler obeys robots.txt and skips any page that opts out of AI use.

Any artist can take themselves out.An artist proves control of their profile or site with a short code, and they are removed at once and never collected again. A request without proof waits for me to answer it.

What shipped

A live search over nearly 3,000 game artists.

Artist Search runs on Cloudflare Pages with a removal checker running every 15 minutes. The code is public under the MIT License, which covers the code and not the artists’ work it links to.

Next: a live icebreaker for about 170 people

Read the case study