Skip to content

Under the hood

Avatar consistency mechanisms

The hard part of a generated avatar isn't producing one good image — it's producing dozens of them that all look like the same person. An avatar is around nine expressions, each potentially in several wardrobes, several of those animated across multiple frames. Every one is a separate image-model call, and an image model has no memory of the last one. Left alone, that produces exactly the failure 1.1 set out to fix: you ask for braided hair, and on three frames out of nine the braid quietly comes out as loose hair. Worse, nothing tells you — and a visitor meets an avatar whose hair changes when it smiles.

Three mechanisms keep the face one person. They stack: the first prevents most drift, the second catches what slips through, the third handles the case where you change the foundation itself.

1. Consistency by construction

The original failure had a specific cause. "Generate all" produced each expression frame as an independent call, and every one used the bare baseline neutral as its reference image — an image still showing the old hair. The new hairstyle was supplied only as words in the prompt. So each frame was independently asked to override what the reference plainly showed, from text alone, at full creative temperature — and the image usually won, differently each time. Nine stateless calls, nine slightly different opinions about your hair.

The fix is to stop fighting that. Before any expression frame is generated, ASMI generates one corrected reference: the avatar wearing the set's actual wardrobe — hair, clothing, accessories — in a neutral pose. Every expression frame is then generated image-to-image from that approved reference, not from the stale baseline. The frames inherit the wardrobe because the thing they're built from already shows it; there's no text instruction left fighting a contradictory picture. One source of truth, established once, then reused.

This is the floor, and it's universal — every plan gets it, on the default Nano Banana model. It isn't a paid feature; it's just how generation works now.

(The same idea is why, in a styled set, the neutral frame is the wardrobe's corrected reference — you edit it in the Wardrobe and the set mirrors it, rather than letting the set regenerate its own neutral that could drift from the wardrobe it's meant to represent.)

2. QA-gated generation, with targeted auto-retry

Construction makes drift rare. It doesn't make it impossible — a model can still miss. So instead of hoping, ASMI looks.

After a set generates, one batched vision call (gemini-2.5-flash) is handed the corrected reference, every generated frame, and the wardrobe attributes the frames are supposed to show. It returns a verdict for each frame on five axes — is the hair right, the clothing, the accessories, is it still the same face, and does it render its intended expression — plus a cross-frame check: do all the frames agree with each other and the reference?

Only the frames that fail are regenerated, and the retry escalates the image model as needed: Nano Banana → Nano Banana 2 → Nano Banana Pro, that last one a deliberate last resort. The regenerated frames are then re-checked. The whole loop is bounded — by a hard cap on retries and by your credit balance: before each higher-grade attempt it checks you can afford it, and if you can't, it stops cleanly and says so rather than overspending.

Two things this is careful about:

  • It's advisory, never blocking. A flagged frame gets a badge and the specific reason — "braided hair missing," "face drifted" — and a banner offers to regenerate just the flagged ones. Nothing is hidden, and nothing stops you shipping a frame you're happy with.
  • It doesn't trust a confused judge. If the QA call comes back unparseable or fails, the frames are marked unverified, not flagged, and generation is not retried off that result — burning credits to "fix" frames a confused judge misread helps no one. A frame the judge skips entirely is treated as needing attention, never silently passed.

The automatic check and the premium-model auto-healing are a Pro/Business feature, because they spend real credits on higher-grade models (a Nano Banana frame is 2 credits; Nano Banana 2 is 4; Nano Banana Pro is 7). Lower tiers keep mechanism 1 — consistency by construction — and get a non-spending nudge rather than a silent downgrade.

3. The baseline-replacement cascade

The first two mechanisms work within a single set. The cascade is for when you change the foundation everything is built on.

Edit the baseline identity — the locked face — and every dependent piece regenerates from the corrected reference rather than being patched: the baseline expressions, each wardrobe set, and the animation frames. A before→after grid shows you exactly what moved, frame by frame, and a QA post-pass checks the regenerated work so the cascade can't quietly introduce a new round of drift while fixing the old one. Change the truth once; everything downstream rebuilds from it.

The principle, and the trade-off

The thread through all three is one decision: don't ask a stateless image model to hold an identity across dozens of independent calls. Anchor everything to a single approved reference (construction), verify the result instead of assuming it (QA), and when the foundation changes, regenerate from the corrected truth instead of editing around the old one (cascade).

The honest limit: the QA step is itself a model, and a model can be wrong. That is exactly why it's advisory and errs toward flagging — it's a safety net, not a guarantee, and it never overrides your judgement or blocks your work. Consistency by construction is the free floor everyone gets; the automatic verification and premium auto-healing cost credits, which is why they sit on the paid tiers. You're never worse off than the floor, and you can pay for the net when the stakes are worth it.

A product by Broentech Sentinel.

Broentech Sentinel