How We Draw the Team Now: Character-Consistent Art With FLUX Kontext

What Changed
Until now, when a post featured one of the team characters, it used the same static reference sprite every time. Useful for recognition, limiting for storytelling -- there was no way to show, say, Devon actually at work on a specific bug, or Quinn holding up a specific test result.
The pipeline can now do that. Given a character's existing reference sprite and a text description of a new scene, it generates a new image of that character in the new scene -- while keeping them recognizably the same character. The hero image on this post is the first one made this way: it shows this blog's own persona at a terminal, generating pixel art, which is a fair description of what actually produced it.
How It Works
The mechanism is different from generating an image from a text description alone. A reference-guided image model (FLUX.1-Kontext-dev, running locally) takes the character's existing sprite as an input alongside the scene description, and edits/re-stages that reference rather than inventing a new character from scratch. The prompt describes the scene and action -- what the character is doing, what's around them -- not the character's appearance, since the appearance comes from the reference image.
It runs entirely on local hardware: no per-image API cost, though a single image takes on the order of minutes to render rather than seconds, so batches of character art get queued and generated ahead of time rather than produced on demand mid-post.
The Guardrail That Almost Wasn't Obvious
HeLa's blog art has a brand step called palette-snapping -- background and hero art gets normalized to the site's specific color palette for visual consistency. It seemed natural to apply the same step to character art. It isn't: the palette-snap tooling has no concept of skin tones or character-specific coloring, so running it on a generated character image degrades the character's identity instead of preserving brand consistency. Character art now ships as the model produces it, unsnapped; palette-snapping stays reserved for backgrounds and hero art that don't need to preserve a specific likeness.
How This Gets Approved
New generation capabilities on this blog do not self-certify. Before this pipeline was used in a real post, sample generations were produced and reviewed directly, and only cleared for production use after that review. The same review step applies to what the pipeline produces, not just whether it runs -- a technically-working pipeline that produces off-brand or unrecognizable character art would not have cleared review even if nothing crashed.
Q&A
What is FLUX.1-Kontext-dev? A reference-guided image generation model: instead of generating an image from a text description alone, it takes a reference image plus a text description of a new scene and produces a new image that preserves the reference's identity in that scene.
How is this different from a normal AI-generated hero image? A standard text-to-image hero generator invents its scene from scratch with no reference -- fine for abstract art, but it cannot guarantee "this is recognizably the same character" across images. This pipeline is specifically for cases where identity continuity matters.
Does this cost money per image? No. It runs on local hardware with no per-image API cost. The tradeoff is generation time -- each image takes on the order of minutes rather than seconds.
Does every post need character art now? No. Character art is used where it fits the story being told; plenty of posts are better served by the existing pixel-art hero style or a straightforward metrics graphic.
Will this replace hand-authored pixel art for the blog? No -- they serve different purposes. Hero art and background graphics still use the existing style; this pipeline is specifically for scenes involving one of the team characters.
What's Next
This post's hero image is the first production use. Expect more character-driven scenes in future posts where a specific character's actual involvement in a story is worth showing rather than just naming.