Courses tell stories, and stories want a character who stays the same person from one picture to the next. A guide who appears in the first lesson and again in the eighth. Our authoring tools generate their own illustrations through the Alt Shift Gateway, so the question is whether a single reference image can hold a character steady across a whole set.
Image models have a known weakness here. They are good at making one striking picture and unreliable at making the tenth picture match the first. Faces loosen. Clothes change. The person you started with quietly becomes someone else.
This experiment tests that directly. One reference face, ten scenes built to make drift show, four image models, and two different ways of feeding the reference in. Eighty images, 104 provider calls, about four dollars.
The experiment
We generated a synthetic reference portrait rather than using a photograph of a real person. A likeness feature raises consent questions we did not want to answer with someone's face, and the reference is its own ground truth: the only question is whether image ten still matches image zero.
The character was given features that can be checked rather than felt — short silver-grey curls, round tortoiseshell glasses, gold hoop earrings, a mustard-yellow collared shirt. When drift happens, we wanted to be able to name what drifted.
Ten scenes varied distance, angle, lighting and setting: a whiteboard, a park path, a stage spotlight, a lab bench, a garden, a café, a bicycle, an extreme close-up behind a mug, and rain at night. Every image used the same prompt and the same watercolour style, which is the harder test — painterly abstraction fights likeness in a way a photographic style does not.

Iteration 1 — Which models can do this at all
Method.Seven reference-conditioned paths, one scene each, identical prompt and reference: Flux Kontext Pro, Nano Banana 2, Seedream v4 and v5-lite, FLUX.2 Pro and Flash, and Ideogram's Character model.
Result. Two eliminations, both instructive. Flux Kontext Pro produced the best facial likeness of anything we tested and refused to restyle — it returned a photograph with a torn-paper edge instead of a watercolour, every time. It is an editing model, and it preserves the medium of whatever you give it. Ideogram Character, the one model in the set built specifically for character consistency, produced the worst likeness and dropped the wardrobe entirely, at ten times the price of the cheapest alternative.

A model marketed for the task is not evidence that it does the task.
Iteration 2 — How the reference is fed in
Method. Two ways of running a ten-image set. Anchored: every image generated from the original reference. Rolling: each image generated from the previous output, which is what a pipeline does by default if nobody decides otherwise.
Result. Anchored sets hold. Rolling sets fail — in all four models, without an error and without a single obviously broken frame.

Failures that announce themselves are cheap. This one does not.
Iteration 3 — What rolling actually does
Method. Ten scenes in sequence, both modes, four models, each set scored image by image by a judge that was not told the model or the mode.
Result. Rolling drift accumulates and never corrects. In Seedream v4 the character ages roughly fifteen years across ten images, and the mustard shirt fades to white at image six and never comes back. Anchored sets behave differently in kind: each image is an independent draw from the same source, so a weak frame is followed by a good one instead of poisoning everything after it.
None of that is a surprise in itself. A chain that re-encodes its own output accumulates error, and anyone who has worked with these models could have predicted it. Quantifying it was still worth the images, because “it degrades” does not tell a builder when to worry — wardrobe goes first, at image two; identity follows around image six or seven.


The part we could not have predicted was not that it drifts, but where it drifts to.
The drift has a direction
A rolling chain does not wander randomly. Each generation is the model's reading of its own previous output, so the sequence pulls toward what the model considers average — and an average has demographics.
In FLUX.2 Flash, our character's skin tone lightened steadily across the set. By image nine she reads as a noticeably paler person than the reference. Nothing in the prompt asked for that, no single step looks wrong, and no error was raised at any point.
This is the finding we would keep if we kept only one. Knowing that iterative conditioning degrades does not tell you which direction it degrades in, and a system that quietly lightens people is not a quality problem to be tuned later. It is the reason the pipeline forbids rolling by construction rather than defaulting away from it.

Two answers, not one
Method. Rank the finalists for a ten-image character set, by blind scoring and by eye.
Result. The two disagreed. Scoring put Seedream v4 first: the closest likeness to the reference, and the only model that kept the yellow shirt in all ten scenes — including under a lab coat and on a bicycle. Nano Banana kept it in one scene out of ten, because it treats a reference as a face rather than as a person. Looking at the same sheets, the eye goes to FLUX.2 Flash: cleaner line work, brighter, more finished, and the most even skin tone of the four, at a third of the price.
Both readings are right about different things, and the disagreement is more useful than either answer. FLUX.2 Flash renders more attractively and is measurably further from the reference face — its people read about ten years younger and somewhat more generic. Rendering quality and reference fidelity are separate properties, and only one of them is what a likeness feature sells.
So the choice splits by what the character is. For a character invented from scratch, where nobody can check the result against a real face, the better renderer wins. For a character who is supposed to be a particular person, fidelity is the whole requirement. The system decides between them from where the reference image came from: a photograph somebody uploaded is treated as a real person; an image our own pipeline generated is not.

Found along the way
Method. While probing endpoints, we tested a routing path in our own Gateway that advertises reference-conditioned editing.
Result. It had been pointed at a text-to-image endpoint, which does not accept reference images at all. The call returns a clean success and a plausible picture of an entirely different woman. It looks almost right, because the prompt described her hair and glasses in words, so those came out correct. Skin tone, face and clothing, which the prompt never mentioned, came out wrong.
Nothing was calling that path, so nothing was broken for anyone. We are recording it because it is this entry's whole subject in miniature: the system reports success, the picture looks fine, and the answer is wrong.

Conclusion
A reference image holds a character across ten scenes, at about thirty cents a set, provided every image is generated from the original reference rather than from the one before it. That constraint belongs in the structure of the pipeline, not in its defaults.
The open question is real photographs. Everything here rests on one synthetic face under even studio lighting, which is the easiest input a generative model can be given — and a machine-made face is unusually easy for a machine to reproduce. Phone photos, mixed light and off angles are a different test.
Next: the same comparison across three real reference faces spanning skin tone, age and gender, with the scene order shuffled. About four dollars, and it decides whether this becomes a feature.
Alt Shift Lab · Gateway pilot GW-CHAR-1 · 7 September 2026 · 80 evaluation images, 104 provider calls, $4.15. The reference face is synthetic; no personal likeness was used.