How to build a dog who stays himself
The method we build Charlie to, written out in full. This is how you keep an animal character recognisably himself across hundreds of images.
Charlie is not a real dog. He is a character, and the hard problem with any character like him is never making him look good. It is making him look like himself, twice.
Most people who try this hit the same wall. They generate a beautiful golden retriever, fall in love with it, and then discover they can never produce that dog again. The next image is a golden retriever. It is a different one. Do that fifty times and you do not have a character, you have a breed.
What follows is the method that actually works, in the order it has to happen.
The short version
- Pick three to five identity anchors you can describe in words.
- Generate a large pool, then cull hard to 30 to 60 images that agree with each other.
- Caption what varies. Never caption what must stay fixed.
- Train a LoRA on a rare trigger token, and stop before it memorises the backgrounds.
- Run the same evaluation sheet after every pass, then freeze the version that wins.
- Write the rules down, because the model will not remember them for you.
Why dogs are harder than people
A human face has enormous variation to work with. Bone structure, spacing, asymmetry, a hundred small tells the model can latch onto. Breed dogs have far less. A golden retriever is a golden retriever, and every image model has seen tens of thousands of them. Ask for one and the model will hand you the average of all of them, smoothed toward the breed standard.
That averaging is the enemy. Your dog's identity has to be strong enough to survive it, which means you cannot rely on "golden retriever, friendly face" and hope. You have to give the model something specific to hold onto, and you have to give it the same specific thing every single time.
Step one: choose the anchors before you generate anything
Decide, in writing, the three to five features that make this dog this dog. They need two properties: describable in plain words, and visible at a normal distance. A marking on the inside of a back leg is useless because it will be hidden in most shots.
Five things that are never allowed to change
- Coat: medium blonde. Never red, never pale cream, and slightly darker at the ears and along the spine.
- Eyes: dark brown, no light filter, set a touch wide, soft rather than alert.
- Build: working-line proportions, slimmer than show-line.
- One ear that sits slightly lower and turns out at the tip.
- A pale blaze on the chest, roughly a hand's width, off-centre.
Everything else is allowed to move. Light, weather, angle, distance, wet or dry, sitting or running. Those are the variables. The five above are constants, and the whole method exists to protect them.
Step two: the reference set is the actual product
This is where most character builds fail, and it fails quietly. People assemble 30 images they like. Liking them is the wrong test. The right test is whether they agree with each other.
Generate a large pool first, several hundred, using a detailed text prompt built around your anchors. Then cull without mercy. You are looking for a set where any two images could plausibly be the same animal on the same day. If image 12 has a paler coat than image 30, one of them has to go, however good it is on its own.
Aim for 30 to 60 survivors. Below about 30 the identity struggles to bind, and above 60 you are usually adding inconsistency back in faster than you are adding information.
The mistake that costs a week. A reference set that is mostly head-and-shoulders portraits will train a model that cannot draw the rest of the dog. You get a perfect face on a body with the wrong proportions, or legs that do not resolve. Keep the set balanced across framing: roughly a third close, a third mid, a third full body including movement.
Step three: caption discipline
This is the least intuitive part and the highest leverage. When you caption a training image, you are telling the model "this described thing is a variable". Anything you name becomes something it can change later.
So the rule inverts what people expect:
- Caption what varies. The setting, the light, the pose, the camera distance, the weather.
- Never caption the constants. Do not write "golden coat" or "dark amber eyes". If you name them, you teach the model they are adjustable.
- Use one rare trigger token. Something the model has no prior associations with. The constants bind to that token instead of to words it already understands.
Caption a hundred images with "golden retriever" and you have trained a slightly opinionated golden retriever generator. Caption them with a rare token and no coat description, and you have trained Charlie.
Step four: train, then stop early
A Flux LoRA called through a ComfyUI workflow is the setup this method is written for, and it is the one we build toward. Most of what follows applies to any character-training approach.
Modest settings beat aggressive ones here. A low learning rate and a moderate rank will bind identity perfectly well, and the failure mode of overtraining is worse than the failure mode of undertraining.
You can see overfitting without measuring anything. The signs:
- Every output arrives in a similar pose, no matter what you ask for.
- Backgrounds from the training set start appearing in unrelated prompts.
- The dog stops responding to environment instructions. You ask for snow and get the beach.
The moment any of those appear, the previous checkpoint was the good one. Save checkpoints often for exactly this reason.
Step five: the evaluation sheet
Build a fixed set of eight to ten prompts and run it after every training pass, on the same seeds every time. Same prompts, same seeds, different model version. It is the only way to tell whether a change helped or only changed things.
What to test, every pass
- Neutral portrait, soft light. The baseline.
- Full body, standing, side on. Catches proportion drift.
- Running toward camera. The hardest case, and where anatomy breaks first.
- Lying down, seen from above.
- Wet, on sand. Coat colour is unstable when wet, so this is a real stress test.
- Low light, indoors. Checks that the coat does not shift toward grey.
- Small in frame, in a wide landscape. Identity usually collapses here first.
- Beside another dog. Tests whether the token bleeds onto the second animal.
Score each one against the five anchors. Anything below four out of five is a fail, and a version that fails the same prompt twice needs the reference set fixed, not the training settings.
Step six: write the rules down
The model holds the likeness. It does not hold the character. Everything about who Charlie is has to live in a document, because that is the part that keeps him consistent across months, across tools, and across anyone else who works on the brand.
Charlie's rules are short and mostly negative, which is usually the sign of a well-defined character:
- He is never shown mid-bark, mid-jump, or straining on a lead. It reads as a different temperament.
- He does not wear clothing, costumes or bandanas.
- He is never the only thing in frame doing something impressive. He is usually resting, sniffing, or waiting.
- He does not appear in a scene that would require him to be somewhere Maya is not.
- If a generated image is technically perfect but he looks eager rather than settled, it is discarded.
That last rule is the one that matters most. The likeness is a solved problem after step five. The temperament is what makes people believe him, and there is no model setting for it.
Where it still breaks
Honesty is part of this brand, so: no version of this is perfect. Extreme angles drift. Fast action with motion blur loses fine detail like an ear shape. Anything where the subject is very small in frame is a coin toss. A wet coat in bright sun reads paler than it should.
The answer to all of those is not a better model. It is generating more candidates for the hard prompts and culling them with the same discipline used to build the reference set in the first place. Consistency is a filtering problem at least as much as a training one.
A note on what this is. Charlie and Maya are both AI-generated. This page is the method we hold Charlie to and build toward, written as a guide rather than as a log of work already done. The difficulties described are real ones, and the behaviour Charlie models is drawn from research into how golden retrievers actually rest, move and settle.
If you are building your own character and want this as working files, the caption templates, the settings and the evaluation sheet, that is what the Charlie Series will be. It is not finished yet, and you can put your name down to hear when it is.