AI · Architecture · 3D · Method

I built a walkable house from 17 listing photos. (it still is not good enough)

Opus 5 can build real 3D now. Here is what it gets right, where it falls over, and why the gauntlet loop cost me more than it was worth.

Chiang Ning · chiangning.net · 10 Aug 2026
A 3D render of a white kitchen with a fluted island above the matching listing photograph
Top: the 3D model, rendered in the browser. Bottom: the listing photograph it was built from.

There is no image model in this.

Every frame above the photograph is a real 3D model. Walls with thickness. Joinery with shadow gaps. A kitchen island that is 3 metres long because 3 metres is what the plan says.

It was built from a public real estate listing in Glenroy: 17 photographs and one marketing floor plan. Nothing else. No survey, no drawings, no site visit.

You can open it in a browser and walk down the hallway.

Two things before we start

  1. Save this. The traps in section 4 will cost you an afternoon each if you meet them cold.
  2. Send it to one person in your office who thinks AI 3D is still a party trick.
What is in here
  1. Why 3D beats an image model
  2. The gauntlet loop, defined
  3. It did not one shot it
  4. Four traps that cost me hours
  5. What it actually costs
  6. What I am doing instead

01Why a 3D model beats a beautiful image

An image model will beat this on beauty every single time. That is not the interesting part.

An image model guesses what a kitchen looks like. A 3D model has to commit to a number. The island is 3.0 metres or it is not. The corridor is 1.0 metre wide or you physically cannot walk down it. The window head is at 2.1 metres or the sill lands in the benchtop.

That constraint is the whole value. It is the difference between a picture of a house and a description of one.

An image model guesses. A 3D model has to commit to a number.

It showed up immediately. The plan is stamped "not drawn to exact scale", so I measured it rather than tracing it: thresholded the black wall runs straight out of the JPEG and calibrated the scale on two things that are certainly right, the 820 mm front door and the 3.4 by 6.0 metre garage. That gives 24.45 pixels per metre.

Then two errors fell straight out.

The bedroom corridor scaled to 700 mm. Nobody builds a 700 mm corridor. And the kitchen's east wall sat 1.3 metres away from where the photographs put it, which is the only reason photo 4 shows a clear run through to the hallway.

You do not find either of those by looking at a render. You find them when something has to be built.

Roof-off plan view of the 3D model above the marketing floor plan it was measured from
Roof off, against the drawing it was measured from. Every room except the garage, in metres.

02The gauntlet loop, defined

The technique is simple to describe and expensive to run.

Gauntlet loop

You split the job into pieces that can be judged on their own. You give each piece its own agent, with its own reference to match. Then you send in a separate agent as a harsh critic, whose only job is to compare the work against the reference side by side and reject anything short of the real thing. It loops until the critic runs out of arguments.

The point of the second agent is that it has no ego in the build. The builder has spent an hour on a bathroom and wants to be finished. The critic has never seen it before and is told to be difficult.

In practice, for this house, that meant one agent per room group, plus one for cameras and one for lighting and materials. Each ran its own dev server, took its own screenshots, and built its own labelled comparison sheets.

The shape of it

  1. Split the work into pieces that can each be judged against one reference.
  2. Give every piece an owner and a hard file boundary, so two agents can never edit the same thing.
  3. Make the verification mechanical: a screenshot harness, a comparison sheet, a measurement script.
  4. Send a separate critic in blind. Randomise which image is which so it cannot flatter the build.
  5. Loop until the critic cannot tell them apart.

The mechanical verification is the part most people skip, and it is the part that matters. Anything the agent cannot measure, it will simply claim.

The critic brief that does the work
You are a harsh critic. You have not seen this build before.

Below are two images, A and B. One is a real photograph of the room.
The other is a 3D render trying to pass as it. You do not know which.

Say which one is the photograph, and how you knew.

Then list every difference you can see, hardest first: geometry, then
proportion, then material, then light. Do not be generous. Do not
soften anything. If you cannot tell them apart, say so plainly.

Give it the blind pair, not a labelled one. The moment a critic knows which is the render, it starts grading on effort instead of result.

03It was supposed to one shot it. It did not.

This is the honest part.

The promise of the gauntlet loop is that you describe the job once, walk away, and come back to something finished. That is not what happened.

I kept having to look. And every time I looked, I found something no critic had flagged.

Things I caught that the loop did not

  1. A 730 mm white box standing on top of the kitchen benchtop. The island carcass had been extruded upwards from bench height instead of down to the floor. Every critic had described the kitchen as "close".
  2. All 6 dining chairs facing away from the table. A chair's forward direction is its local minus Z, and the rotation had been applied the wrong way to every one.
  3. The film camera pointing at a wall for half its runtime, because the render loop was overwriting the camera the timeline had just set.
  4. A camera standing inside a wall's thickness, rendering a blank slab and reported as a room.

None of those are subtle. A person sees them in a second. They survived because a critic comparing two images will describe what it sees rather than ask whether the thing could exist.

A critic tells you the render looks wrong. A person tells you the bench is impossible.

3D render of a bedroom above the matching listing photograph
Close on geometry and tone. Still short on the soft things: bedding drape, fabric, the way light falls off.

04Four traps, so you do not pay for them twice

These are specific to browser 3D, and each one cost me real time.

The four

  1. Extruded shapes grow along their own axis. An extrusion rotated flat grows upward from wherever you put it, so it must be positioned at the bottom of its run, not the top. This is the 730 mm box.
  2. Holes in extruded shapes tessellate badly. Cutting a sink opening out of a benchtop dropped half the top face. Build the piece from solid strips around the opening instead.
  3. Fully metallic materials render charcoal indoors. A mirror or a tap has only a dim room to reflect, so it comes out near black. Back the metalness off and drive the environment hard instead.
  4. Area lights do not stop at the window. The soft light I placed in each opening was also lighting the neighbour's fence a metre outside. Measured: the fence rendered at 247 with those lights on and 114 with them off. Everything behind glass had to become unlit backdrop, tuned to the value it has in the photograph.

The last one is the useful lesson generally. When something looks wrong, measure it before you theorise. Turning one light off at a time found that in two minutes; I had been guessing at materials for an hour.

How the tone was matched

Not by eye. A script samples wall, ceiling and floor patches in both the render and the photograph and prints the numbers.

Wall 219 against 220. Ceiling 210 against 215. Floor 172,146,121 against 175,142,107. Median brightness 205 against 212.

Window clipping came down from 8.1% of frame to 1.19%. The photograph clips 1.3%.

05What it actually costs

A lot. More than the result justifies, for this kind of job.

Two full waves of agents were killed by account limits before a single one finished its room. The work that did land came from long single-threaded sessions afterwards, which is to say: from the ordinary way of working.

The economics are worth stating plainly. Every agent starts cold. It re-reads the brief, re-reads the plan, re-derives the traps, re-renders the same screenshots. Eight agents doing that in parallel is eight times the setup for one house.

A single conversation carries all of that already.

Where it does pay. Fan-out earns its cost when the pieces are genuinely independent and the verification is cheap. Twenty unrelated documents, twenty test cases, twenty variations on one prompt. It does not pay when the pieces share a model and keep colliding, which is exactly what a single building is.

A frame of the finished walkthrough film, 3D render above the reference photograph
The output: a 20 second walkthrough, model above, the photograph it was matched against below.

06What I am doing instead

Prompt, look, correct. Repeat.

It is unglamorous and it is what actually finished this house. Cheaper per unit of progress. Slower to type. Faster to arrive.

And the looking is not overhead. It is the part that catches the impossible bench and the backwards chairs, because the question a person asks is not "does this match" but "could this exist".

Where this is genuinely useful today

  1. Testing a plan before it is drawn. Build it in 3D and the unbuildable dimensions announce themselves. A 700 mm corridor is invisible on a plan and obvious in a model.
  2. Existing conditions from photographs. Fifteen phone photos and a rough plan give you something spatially reliable to design against.
  3. Client walkthroughs of things that do not exist yet. Not beautiful. Correct. There is a difference, and clients feel it.

Where it falls short, honestly

Not close to professional visualisation. The bathroom tile still renders too pale. Windows blow out. The bath is a box pretending to be an oval, and soft things (bedding, upholstery, fabric drape) are the weakest part of the whole build. If the deliverable is a beautiful image, use an image model. If the deliverable is a correct one, this is the better tool.

It also will not read your site, your planning scheme, or your client. That part has not moved.


The tool got good at geometry. Judgement did not move.

Everything above came out of one house, one weekend, and a lot of looking at things that were wrong.

If your practice wants this running internally, or you want the agent briefs and the verification scripts, message me on LinkedIn.

Chiang Ning · chiangning.net