Work · Property

An empty room photographed on a phone becomes a listing photograph, and the page says which parts are real.

A twenty four unit development, and the only photographs available were the ones the agencies had put on the portal. Every one of them was 591 pixels wide, taken on a phone, in a room with a bare floor, a half drawn curtain and a cable across the skirting. A buyer scrolling a listing at nine at night decides in about a second, and those photographs were losing the decision before anybody read the price.

Client
An estate agency in Harare
Our part in it
Built by the studio
When
2026
The size of the problem

Why a photograph carries more weight in this market than in most.

4,894Outstanding mortgages in the whole country
3.8mHouseholds
223Estate agents on the regulator's register
84.6%Internet penetration

Mortgage count from the Centre for Affordable Housing Finance in Africa's 2024 yearbook. Household count from the 2022 national census. The agent register was counted from the Estate Agents Council's own published list of approved agents, 26 August 2026. Internet penetration is the regulator's Q4 2025 figure. Roughly one mortgage per 780 households is what makes this a cash market, and a cash buyer decides on what they can see.

What we built

A pipeline that reads a listing, scores every photograph on it, enhances the ones worth enhancing, and labels every result as enhanced. Claude's vision scores each image out of ten on room type, lighting and composition, and names what is actually wrong with it: the toilet lid is open, there are wires around the television, the window is blown out. Those named faults become the instruction for the enhancement, so each photograph gets its own prompt rather than a filter.

The original photograph is passed to the model as a reference on every call, and every prompt carries the instruction that the result must be a photograph rather than a rendering. What comes back is the same room, the same walls, the same window and the same floor, lit properly, with the clutter gone.

Nothing publishes on its own. Each photograph carries an approval that starts as unset, and a person sets it. The productised version of this runs live with that gate built into the database rather than into the interface, so it cannot be skipped by a different screen.

A pair of lessons learned the hard way and written down so nobody relearns them. The word watermark cannot appear in a prompt: the model reads it as a request to infringe copyright and returns text instead of an image. And a generation call without an explicit size setting returns something soft at about a fifth of the file size, which looks fine on a phone and falls apart on a laptop.

Scoring is what makes the loop worth running. A photograph that is already good is left alone, and a photograph that is bad is enhanced against the specific fault the score named rather than against a filter.

What the enhancement is allowed to change

  • Lighting, exposure and sharpness
  • Clutter, cables and bins removed
  • Curtains opened, toilet lids closed
  • A rug, a lamp, a pot plant or two
  • An empty room furnished, and labelled as staged

What it is never allowed to change

  • Surface materials. A screed floor stays a screed floor
  • Landscaping that is not there
  • The size or proportion of a room
  • Fixture colours and fittings
  • Anything a buyer would not find when they arrive
This list is written down in three separate places in the project, and every enhanced photograph carries a visible label saying it was enhanced. The test the team wrote for itself is one sentence: would a buyer feel deceived when they arrive?
Step by step

How a phone photograph of an empty room becomes something a buyer stops scrolling for.

The pipeline

Every stage below runs on the photographs an agency already has. Nothing is reshot, and nothing is invented.

What came off the listing
AttributeValue
Photographs found59
Width, every one591 px
SourcesFour agencies
Usable as a hero imageNone
Stage 1

The listing is read, and every photograph comes with it

The scraper pulls the listing and everything attached to it. On the development this was built for, that meant 59 photographs across four competing agencies, every one of them 591 pixels wide.

That width is the whole problem stated as a number. It is a picture taken for a portal thumbnail, being asked to sell a house.

  • Node
1 of 5
See it running

The lifestyle films, generated from the same photographs

Four generated films from the same development. Silent, and no company, agent, address or price appears in any frame. These are the marketing layer that sits above the listing: a kitchen at dinner time, a couple arriving, someone working from the spare room, an evening on the patio. Each one is eight seconds, generated from the enhanced photographs of the actual units.
A photograph as the listing had it beside the same room enhanced. Same cabinets, same tiles, same hob.
From the delivered set. A photograph as the listing had it beside the same room enhanced. Same cabinets, same tiles, same hob.

What happened once it was running

The agency walked into a meeting with a set of listing photographs, a set of lifestyle films and a set of channel-ready posts for one development, produced from photographs that were already public and cost nothing to obtain. The productised version of the pipeline now runs as a service, with the approval gate and the labelling built in rather than remembered.

59Photographs read off the listings
19Enhanced and staged images produced
36Marketing assets across every channel
591pxWidth of every original
Counted from the delivered set

Every figure is counted from the files. The originals are 591 by 443 pixels without exception, which is what the portal serves. One image in the delivered set changes a floor material while staging a room, which is on the project's own banned list; it is disclosed on the page it appears on and it is recorded here as a defect rather than presented as an example.

Why this page is short

Every figure on this page traces to something we measured.

This page once carried claims that described the work inaccurately. They came down in an audit of our own copy, and each one went back up only when its numbers could be traced to something measured. A case study you cannot check is worth nothing to you, and one that turns out to be wrong costs us more than it ever earned.