// Image → prompt

An image-to-prompt engine built on prompts we actually wrote

Every image-to-prompt tool you have used is a general-purpose captioner with a prompt-shaped wrapper. It tells you what is in the picture and goes quiet about how the picture was made. We are building the other kind: an engine tuned against a library where the prompt, its five labelled components, the model that ran it and the resulting image are all stored together.

Opening sooncorpus state as of 2026-08-14 · still labelling
// Notify me

Leave an email and we'll write once, on the day it goes live. No newsletter, no drip sequence.

927

published prompts, each stored as five labelled components

1,321

generated images tied to the exact prompt that made them

121

prompts run through all three engines for direct comparison

Why a labelled corpus beats a general captioner

A captioner is optimised to be right about objects. A prompt has to be right about intent: light direction, lens behaviour, grade, finish, framing — the lines that decide whether your regeneration looks like the reference. Those lines are the ones generic tools omit, because nothing in their training pairs an image with the words that produced it.

Our data is that pairing, and it is already structured. Not a scrape of captions: 927 prompts written and published here, each one broken into subject, setting, lighting, camera and style before it was ever flattened into a sentence, each with a negative prompt, an aspect ratio, a recorded model, a dominant colour drawn from 22 families and one of 10 composition types measured off the finished image.

StepGeneric toolWhat we are building
MetadataUsually ignoredRead first — an embedded prompt is exact, and free
StructureOne undifferentiated paragraphFive labelled components, so you can edit one line at a time
Lighting & cameraVague or missingWritten from the vocabulary that measurably recurs in this corpus
Negative promptNot produced at allSuggested from what our own prompts suppress
Model fitModel-agnostic guessPhrased for the engine you name — the three we publish with behave differently
VerificationNoneNearest real prompts from the library, with their images, so you can compare

Why it is not live yet

Because the part that makes it worth using is the part that takes time. Component labels have to be consistent across the whole set before they can teach anything, colour and composition have to be measured off the rendered image rather than assumed from the wording, and the cross-model comparisons — currently 121 prompts run through all three engines — have to be wide enough to phrase a reconstruction differently per engine instead of pretending one wording fits all. Shipping before that is how you end up with another captioner.

Meanwhile the method is public and you can do it by hand today. It is written up in full, with worked examples from this library, in the pages below.

Do it by hand in the meantime