AI-retouched listing photos: our notebook of mistakes
What generative models really do to photos of a home, the mistakes we paid for, and the transparency rules that came out of them: labels, originals, no simulations in disguise.
We use generative models, mostly through Higgsfield, to retouch listing photos. We brighten interiors, remove cables and clutter, empty rooms, and now and then make a video. Alongside the work we keep a workshop notebook. It isn't the tool's documentation. It's a record of what you learn by doing, and would otherwise relearn, and pay for, every time. It has one rule: if a line turns out to be wrong, it isn't deleted. It's struck through, with a note on why it was wrong.
Here are its most useful pages.
What the models actually do
A long prompt makes the model regenerate, not retouch. This discovery changed everything else. With instructions over three thousand characters long, the model stops correcting the photo and redraws it. In one double-height living room, a closed grey cupboard became an open white bookcase. Steel turned beige, an oven appeared that wasn't there, and the radiators doubled.
Forbidding things by name doesn't help. We tried adding "the grey cupboard must stay a closed grey cupboard". The errors came back identical. Missing instructions weren't the problem. Their length was.
Emptying a room has a ceiling. If what has to go fills about half the frame, the model loses its bearings and rebuilds the room instead of clearing it. Tiled bathrooms, stone walls, terraces and almost-empty rooms hold up well. They all offer large, simple surfaces to anchor to.
Blown-out windows become sky. Where the original was white from overexposure, the model painted a blue sky with clouds. A view that doesn't exist.
Tile joints come back different. The room's geometry holds, but repeating patterns don't.
Photo orientation matters more than it looks. Portrait phone shots are often stored as landscape, with the rotation recorded separately. Give the model the wrong format and it doesn't crop: it extends the sides by inventing content. On a listing photo, that means bits of rooms that don't exist. It happened to us on eight photos in a set of forty-nine.
The paradox of learning too much
The system we built learns from mistakes: every recorded lesson is used to build the next prompt. But if prompt length is what makes the model fail, a system that adds a sentence for every lesson gets worse as it learns.
Our countermeasures:
- an explicit cap on how many lessons go into the prompt;
- only the lessons relevant to the case at hand;
- lessons that lose confidence when contradicted and are eventually switched off. They are never deleted, otherwise they'd come back as new and the system would relearn the same wrong thing forever.
And one question before writing any lesson down: could this be a rule in the code rather than advice to the model?
Our own mistakes of method
Change one thing at a time. The first three attempts on one set failed, and twice we drew the wrong conclusion: first "full emptying can't be done", then "this framing is impossible". Each time we had changed the request instead of isolating a variable. The real cause, prompt length, only surfaced on the fifth attempt.
Compare the whole frame. A crop at the same coordinates hides re-framing, which is the most serious defect of all.
Check straightening by eye. An automatic detector proposed rotating 35 photos out of 46. Ten of those corrections were right. With a wide-angle lens almost all the apparent tilt is perspective. Rotating makes it worse and loses part of the frame.
"It compiles" doesn't mean "it works". The first version of the retouching section in our CRM compiled and was declared ready, but five independent faults meant it couldn't produce a single photo. The publish button returned an error on every click. With a feature that has never been tried for real, the first job is to walk through it end to end.
Start with one photo. Every job starts with a single pilot photo, and the rest of the batch waits until a person has seen it. That's our brake on spending and on errors repeated in bulk.
Saying what we did: the transparency rules
The notebook covers how we retouch. The other half of the work is telling the public what we retouched. Every published photo has a record of its treatment, and the label on the photo follows it:
| Treatment | Label |
|---|---|
| light and colour only, non-generative | none |
| generative model, light only | AI · light |
| objects removed | AI · edited |
| something added that wasn't there | AI · simulated |
| image generated entirely | AI · rendering |
Then the fixed rules. A simulation or rendering is never the cover or the first photo in a gallery. Each photo has a caption saying what changed. A summary at the end of the listing always closes with the same sentence: the viewing remains the only reference. For homes where it's possible, we're preparing a "see the original" button. Originals go out only after the seller has been told, with faces, documents and number plates blurred and checked one by one.
What we found when we looked at ourselves
Applying these rules to our archive was instructive, and not always flattering.
Hundreds of undeclared photos. A census of photos already online found several hundred with a generator's name in the file name and no disclosure on the photo. We decided to label everything first, erring on the side of labelling, and then write precise captions listing by listing. Simulations already published stay up, but declared as such.
The prompt doesn't tell you what the model did. Jobs requested as "light only" had replaced skies. In one case a light-only job turned an asphalt street into a paved pedestrian lane, with people added. Jobs that said "don't move the openings" had moved a doorway and made a wall disappear. Since then, a caption is written only by looking at the starting photo and the published one side by side.
A face in the mirror. In one photo the photographer's reflection in a mirror had been redrawn by the model, sharper than before, and it was online. We blurred it and replaced it. We also purged the website cache, which was still serving the old versions.
The phone's own retouching. Some photos had been cleaned up with the AI eraser built into a phone, and nobody had thought of that as "AI". We found out by reading the metadata of the published files.
The opposite mistake, too. An automatic loader was classifying photos as "simulations" when they had only been cleaned up. Over-labelling isn't caution. It's just a different piece of wrong information.
Two warnings for anyone in the same trade. Property portals don't display these labels, and provenance metadata doesn't survive recompression, so the disclosure must also be written into the listing text. And every night an automated check flags in red any new photo that carries a generator's name without its transparency record.


