Demo
AI makes the scene, code makes it exact
Three scenes stand in for backgrounds an image model made from one brief. Code lays the same headline, claim and required line over each, and a copy scanner reads every claim before it can reach an ad.
This is a simulation. The sauce, its brand and logo, the claims lists and the draft copy are invented. The three scenes were drawn in advance for this page, and no AI model runs here: the lettering shown for “the image model” is drawn by this page too, to show a common failure. Nothing leaves your browser or is kept, and reloading the page starts again.
1. One layer spec, three scenes
An image model makes a good scene, but its lettering is not guaranteed word for word: it can misspell, reword or drop a required line, and it can look right while doing so. Here the scene is the model’s job and the words are code’s: the brand, the headline, a claim from the approved list and the required line go on from one layer spec, in the same place and size on every frame.
Only claims on the approved list can be chosen.
Scene 1: a sunlit kitchen tableScene 3cbdddText layerf9642f- It looks right, but the headline says “pepper sauce”, not “hot sauce”.
- The logo is missing.
- The claim is reworded, so it is not on the approved list.
- The required line has lost “Use a few drops at a time.”
Scene 2: a desert at duskScene 3f2e2cText layerf9642f- The headline is unreadable and has drifted up.
- The brand name is missing.
- The claim is missing.
- The required line is cut short.
Scene 3: a market stallScene e4e782Text layerf9642f- The headline is unreadable and larger.
- The brand name is unreadable.
- The claim is missing.
- The required line is unreadable and in the wrong place.
The required line the spec puts on every frame, word for word: Very hot. Use a few drops at a time. Refrigerate after opening.
All 3 frames carry the same text layer, fingerprint f9642f, over 3 different scenes. The claim came from the approved list.
The layer spec code applies
| Layer | What and where |
|---|---|
| Brand mark and name | “Kestrel” at 172, 130, size 50, on a dark plate |
| Headline | “Smoky chipotle / hot sauce” at 96, 752, size 78 |
| Claim | “Made with real chipotle.” at 96, 902, size 40, from the approved list only |
| Required line | “Very hot. Use a few drops at a time. / Refrigerate after opening.” centred at 540, 1002, size 38, on its own band |
| Frame | 1080 by 1080, the same for every scene |
A fingerprint is a short hash of every shape, word, place and size in a layer, read back from the frame as it is drawn on this page, not from the spec. Equal fingerprints mean identical layers; the scene fingerprints differ because the scenes do. Change anything in one frame and its fingerprint changes.
2. Scan the copy
A copy model proposed six claims for the ad (scripted here). Before any claim can reach a frame, the scanner reads it the way a person would see it: hidden characters removed, letters from other alphabets that look like ours read as the letter they imitate, styled letters and accents folded. Then only a claim on the approved list goes through; a banned one is blocked, and anything else waits for a person.
Approved list
- Made with real chipotle.
- Slow cooked into a smoky puree.
- Bottled in small batches.
Banned list
- “world's hottest sauce” Nobody has measured every sauce in the world.Phrase: matched with spaces, hyphens and punctuation taken out, so splitting it up does not hide it.
- “award winning” This sauce has won no award.Phrase: matched with spaces, hyphens and punctuation taken out, so splitting it up does not hide it.
- “pure” No standard says what a pure sauce is.Word: matched only as a whole word, so a longer word that contains it still passes.
Not scanned yet. Beside each result is what a plain text search of the banned list would have done.
Draft claim 1: Made with real chipotle.
- This scanner
- Not scanned
- A plain search
- Not scanned
What the scanner read:
Draft claim 2: The world's hottest sauce.
- This scanner
- Not scanned
- A plain search
- Not scanned
What the scanner read:
Draft claim 3: Slow cooked into a smoky puree.
- This scanner
- Not scanned
- A plain search
- Not scanned
What the scanner read:
Draft claim 4: Award-winning heat.
- This scanner
- Not scanned
- A plain search
- Not scanned
What the scanner read:
Draft claim 5: Pure chipotle flavour.
- This scanner
- Not scanned
- A plain search
- Not scanned
What the scanner read:
Draft claim 6: Aged in oak barrels.
- This scanner
- Not scanned
- A plain search
- Not scanned
What the scanner read:
Try your own line
Type a claim, or add a disguise to one: the look-alike o and the hidden character go in where the cursor is and look like nothing has changed.
Your line:
- This scanner
- A plain search
What the scanner read:
What the demo shows
- The scene and the words are separate jobs. A model can make the background; code applies everything that must be exact, from one layer spec, so every frame carries the same words in the same place.
- Checked, not assumed. A fingerprint read back from each drawn frame’s text layer shows the three are identical while their scenes differ, and changes if anything in one frame does.
- Claims from a closed list. The frames can only carry an approved claim, and the scanner holds any claim that is not on the list for a person: it fails closed.
- Disguises do not work. Hidden characters, look-alike letters, styled letters, accents, hyphens and spacing are all normalised before matching.
- No false alarms from longer words. Banned single words match only as whole words, so “puree” passes while “pure” is blocked.