Reference ad breakdown: seven fields per frame
Some links on this site are affiliate links. If you sign up through them we may earn a commission at no extra cost to you.
A reference ad is only reusable if you can state what it does. We read every reference frame into the same seven fields: scene, subject, shot size, composition, light, camera move, and on-screen text.
The rule that makes the output composable is one frame per call, one fixed template. Put six frames in one prompt and the answers start describing the set instead of the frame, which is the one thing you cannot use to compare two ads.
Our tool notes record a valid structured answer on 44 of 44 frames. That is a reliability count, not an accuracy one. The rest of this piece is about the part that count does not cover.
What each field pins down
| Field | What it fixes | What breaks without it |
|---|---|---|
| Scene | where the shot happens | each remake drifts to a different room, and the edit stops matching |
| Subject | who or what carries the frame | the product and the hand swap roles between attempts |
| Shot size | close, medium, wide | the copy no longer fits the frame it was written for |
| Composition | where things sit: centred, split, thirds, bottom-heavy | the layout gets rebuilt by luck each time |
| Light | source, direction, hardness | the remake reads as a different hour of the day |
| Camera move | static, push, pan, handheld | pacing collapses, because movement is what the cut was timed to |
| On-screen text | the exact strings, their placement and weight | you cannot tell whether type was part of the design or added after |
none. Running stills through the same table is what lets them sit beside video frames in one comparison.The order matters less than the completeness. A missing field does not fail loudly; it reappears later as a remake that looks close and edits wrong.
Why one frame per call
Batching is the standard shortcut and it is the one that costs you the comparison. When several frames share a prompt, the model answers about the group. Scene words from frame two show up in the subject description of frame four. The seven fields stop being per-frame facts and become a summary of the set.
That is fine if you want a mood board. It is useless if you want to know which of two reference ads uses a tighter opening and which one holds the wide.
One frame, one call, one template. The cost is more calls. The return is that field values line up column to column, which is the only reason to fix the schema at all.
The extra calls are cheap at the scale of a reference pass. At the 25 seconds per image we measured on a current image endpoint, twenty frames is about eight minutes of wall clock, run one after another, with no queue to build.
The template
The version we use is deliberately dull. Every line has one value, and every field has an explicit escape.
Look at this single frame only. Answer with exactly seven lines. No preamble.
scene: where this is, in five words or fewer
subject: what the frame is about, in five words or fewer
shot size: close-up | medium | wide | establish
composition: centred | split | thirds | bottom-heavy | other
light: source + direction + hard or soft
camera move: static | push | pull | pan | handheld | none
on-screen text: the exact characters, or none
Two lines in that block do the most work. shot size and camera move are closed lists, because free text gives you “close-up”, “tight” and “MCU” for the same frame and then nothing matches. on-screen text asks for exact characters rather than a description, because a description of type is not the type.
Three ways it goes wrong
Batch calls. Covered above. The symptom is answers that read well and cannot be compared.
Free-form answers. A model asked to “describe the shot” will produce a paragraph, and the paragraph will be right and unusable. Closed lists are not bureaucracy; they are what makes two frames subtractable.
Reading the move from one frame. Camera move cannot be recovered from a still. A push and a static frame look identical at 1/25th of a second. We read this field from consecutive frames, which is what the move actually is, and the honest answer for a single frame is none.
That third one is the field we get wrong most often, and it is not a model failure. It is a schema that asks a question one image cannot answer.
How to check your own output
Run the same frame twice and diff the seven lines. Fields that change between runs are the fields where your template is still open. In our practice that is usually composition and light, which are the two fields people describe rather than classify.
For camera move, read consecutive frames rather than a sample. If you only have a still, record none rather than guessing a move.
What this does not say
It does not say the seven fields are the right seven. They come from shot-list practice, not from a study, and a different job (pacing tests, sound-led spots) would need different fields.
It does not say the count proves the reading is right. 44 of 44 means every call returned a parseable answer. It says nothing about whether the subject was labelled correctly, and we have not run an accuracy check against a human key.
It does not say batching is always worse. We have not measured it. The claim here is narrower: batching changes what the fields describe, and that change is what we avoid.
Method
- Schema: seven fields, fixed order, closed value lists for shot size and camera move.
- Procedure: one frame per call, one template, no batch prompts.
- The count: 44 of 44 frames returned a valid structured answer. It comes from our tool notes rather than a stored run log, and we could not re-verify it, so treat it as a reliability indication.
- Source material: reference frames from live ad projects. No client name, product, brand or commercial figure appears here.
- Not measured: accuracy of each field against a human key, and any comparison between tools.
What we are working on next
Build the human key. Twenty frames, read twice by a person, then scored field by field. Until that exists, the schema is a tool we trust rather than one we have tested.
Separate the fields that describe from the fields that judge. “Light” is observable. “Cinematic” is an opinion wearing the same clothes, and it does not survive being handed to a second reader.
Find how sparse the sampling can get. Reading camera move from consecutive frames is the reliable way and also the expensive one. We have not measured how many frames can be dropped before a slow push stops reading as a push.