Fifty assets that look like one hand made them
You're in the graphic design studio. What you're doing this lesson: make fifty campaign assets look like one brand made them — then check the batch before the client does. You do not need Midjourney flags to start. PromptDojo will not generate images here; the craft is the lock list and the QA filter.
Here is the tell that separates a designer's AI output from an intern's: put twelve of the assets in a grid. The intern's twelve are twelve good images. Yours are twelve panels of one brand — same palette temperature, same line weight, same mascot with the same face, same air. Any single image can be lucky. A grid can't.
The enemy is that generation is sampling. Every render starts from random noise, so every unlocked variable gets re-rolled per asset. Run "halfmoon coffee illustration" fifty times and you get fifty interpretations — fifty stroke weights, fifty teals. Brand drift isn't a model bug; it's what "unlocked" means.
So the craft is locking. Four locks, cheapest first, in English:
- The scaffold lock — every prompt in the batch is built from the same kit through the same five-section brief (subject, medium, style, palette, negatives). Only the subject slot varies. This alone kills most drift, and it's free.
- The style-reference lock — instead of describing the look, show it: pass an approved asset as the style the rest should match. The first hero image you approve becomes the style anchor for the other forty-nine. This is your style tile, operationalized.
- The character lock — for a mascot or recurring subject, a style match isn't enough; you need the same entity, not the same vibe. An approved mascot plus an instruction — "same barista, now waving" — is the job. Tool names for this rotate; check current vendor docs before you rely on a flag.
- The seed lock — the deepest lock: pin the random starting noise itself. Same seed + same prompt + same model = same image, which turns generation from a lottery into a controlled experiment. Next step, because it deserves its own.
Tool dialects (Midjourney --sref / --sw, an edit-model path, FLUX.2 multi-reference, Seedream) are how some products spell those locks today. They are not the lesson. The lesson is: lock what must not vary, then check anyway. Flag names rotate; the four locks do not.
When the deliverable is a screen
Deliverable #51 in that campaign kit is the launch landing page, and the same enemy lives there under a different name: component drift. A signup button that's 2px shorter on the pricing screen, three subtly different terracottas doing "primary" across five screens, body text that changes size between sections — that's the mascot's jaw changing shape, in interface clothes. And the locks map straight across:
- The scaffold lock is the token file from the design-kit lesson: every screen compiled from the same color roles, type scale, and spacing grid, so "primary" resolves to one hex everywhere.
- The style-reference lock is the approved hero screen — the first screen the client signs off becomes the reference the rest are held against.
- The character lock is the component itself: a button is a mascot with a job, one entity reused on every screen, never redrawn from memory.
- And the QA filter checks screens for off-token values — a rogue hex, an off-grid margin — exactly the way it measures off-palette pixels in a feed crop.
Different canvas, same craft: lock what must not vary, then check anyway.
Locks compound. A batch with scaffold + style reference + planned seeds doesn't ask the model to be consistent — it removes the model's opportunity to be inconsistent. Then the QA filter (later this lesson) catches whatever leaks through anyway, because something always leaks through, and the client review is not the place to find out what.