Case study · AI-directed build
Anyone can prompt a picture of a house. This one has a floor plan.
Jason Ensor directed Claude Code to design, build, render and film a 335 m² lake house in four days. Every wall, chair and tree is Python. You can measure it, walk through it in a browser and take it apart. This case study shows how the work was directed, and the system that let one person direct it.
- Type
- AI-directed 3D build
- Directed by
- Jason Ensor, PRTOTYPE.COM
- Built by
- Claude Code with Blender 5.2
- Dates
- 31 Oct – 3 Nov 2026
- Status
- Prototype · 3D model online
- Days
- 4
- Saturday 31 October to Tuesday 3 November
- Messages from the director
- 26
- Most of them one line. Each one a decision
- Lines of Python
- 4,547
- Fourteen scripts generate the whole scene
- Objects modelled by hand
- 0
- Every mesh comes out of a script
- Credits, each approved
- 129.5
- Priced and tested before every spend
01The brief
One line and a reference.
The brief was a single message: an American-style house in Blender, one level, a lake outside, current architecture, full detail. It ended with two words.
Plan. Go.Nothing was built until the plan was agreed.
Jason attached the reference himself: Urban Decoders' test of AI 3D modelling, which builds a villa by writing the plan first, then a script that drives Blender with no window open, then checking the renders. The lake house keeps that method and changes the building: steep black standing-seam gables, board-and-batten cladding and a glass-gabled great room facing the water.
Claude replied with a design on paper before any code: concept, dimensions, a room schedule with areas and a site plan. Jason read it and answered “Yes, write it.” Those numbers became plan.py, the one file that defines every wall, opening and room.
- Area
- 335 m² (about 3,600 sq ft) conditioned
- Rooms
- 3 bedrooms, 2.5 baths and an office
- Massing
- Tall glass-gabled pavilion between two lower gabled wings
- Roofs
- 6:12 wings, 8:12 pavilion, vault 7.7 m at the ridge
- Outside
- Breezeway garage, covered lake porch, deck, dock and canoe
- Site
- Lawn falling to a pebble shore, far shore 155 m away
02The director
Twenty-six messages, each one a decision.
Read in order, the messages that steered the build are a design review. They raise the bar, reject what isn't working, add what is missing, and refuse to pay for anything that hasn't been tested.
- Raise the bar
“Go do the 3D render of the house in detail, including furniture and elements. Attention to detail.”
Every room furnished, down to drapes, duvets, lathed vases and 1,350 trees. Twelve Cycles renders at 1920 × 1080.
- Redirect
“This needs to be in 3D.”
Pictures were not the deliverable. The scene became a compressed glTF model in a three.js viewer that anyone can walk through in a browser.
- Add
“Do a walkaround showcase button.”
“Let's build a deconstruction of the house.”
A guided walkaround, then a take-apart view that lifts the house into seven labelled layers, slab to roof.
- Direct
“Everything constructed from just the ground and dock, appearing over 30 seconds, with a zoom around, then the walkthrough.”
The build-from-ground sequence that now opens the film: bare grass, slab, walls, trees growing outward, roofs, then eye level.
- Review
“What could we do to improve this?”
“I agree with all. Plan the work and start.”
Review before more building. Claude listed the improvements as a written plan; Jason approved it whole. Seven feature commits followed, among them sky and time of day, a reflecting lake, surface hotspots, a floor-plan minimap, touch walking, VR and baked textures.
- Preview first
“Cut the video to a 30-second run. Build it in Blender and show me first.”
A free Blender cut to judge before any paid generation was considered.
- Critique
“It goes round twice. Cut one revolution, put in a boat and some water ripples, and improve the trees.”
One orbit instead of two, a boat moving on the lake with its wake, ripples on the water and fuller trees.
- Price it
“What would it cost in credits to make this photorealistic? Which model? Give me my options.”
Free quotes for every model before a credit moved. Making the whole film photoreal at 1080p came to about 126 credits.
- Stage the spend
“Test aerial.”
“Run the 30 s at 480 to iron out the issues.”
“Yes, 1080p.”
One shot for 5 credits, the whole film at 480p for 36, a 10-credit re-run of the construction shot after a stray roof appeared in the sky, then the outdoor shots at 1080p for 52.5. The finished film cost 103.5 credits including every test, below the 126 quoted for one blind pass.
Quotes are Jason's own messages from the session logs, with spelling tidied. The other ten are approvals, requests to see the work, and requests for links.
03The system
The system behind the direction.
One-line messages only work when the agent already knows the rules. Jason built that operating system before this project began. It is the reason one person could run four sessions at once and still sign off every step that mattered.
Skills in the toolkit
jay-fleet, Jason's own plugin for Claude Code: done gates, audits, review boards, and research and video workflows, with 20 subagents they dispatch. This build used video-research to take the method from the reference video and higgsfield-video to price and run every generation.
Project pages in memory
ClaudeOS keeps a page per project, a decisions log and a ledger of open placeholders, so each session starts from what the last one knew instead of searching for it.
House rules
- Plan before building
- Check before saying “done”
- Commit locally at every checkpoint
- No credit spent without a yes
- British English, full file paths
Sessions in parallel
While the main session built the viewer, three more ran alongside it: the film, the photoreal stills and a check for Unreal Engine. Each had its own brief and its own files, so none could overwrite another.
How a request moves through it
- JasonBriefOne line and a reference
- Gate · JasonApprove the planA design on paper before any code
- ClaudeBuildPython drives Blender with no window open
- ClaudeRender and checkLooks at its own frames and fixes the code
- JasonReviewRaise the bar, redirect, add
- ClaudePrice and testFree quotes, then the cheapest test first
- Gate · JasonApprove the spendNo credit without a yes
- ClaudeCommit and recordA local commit and notes for the next session
Jason directsClaude buildsApproval gate
It is the same discipline PRTOTYPE.COM applies to client software: a written specification before the build, checks before anything is called done, and a person signing off every step that costs money or can't be undone.
04The house
What the method produced.
Walk it, light it, take it apart.
The Blender scene is exported to a compressed glTF model and opened in a three.js viewer that Claude wrote and published.
- Seven labelled layers that lift off from slab to roof
- A showcase that builds the house from bare ground, then walks through the doorways
- Sun from morning to dusk, with the lamps and the fire coming on
- Click any surface for its material; floor-plan minimap; finish swatches
- Walk with W A S D or a thumb pad, or in a VR headset
Thirty seconds, grass to house.
A second script turns the showcase into a Blender camera path and renders it frame by frame. The house rises from bare terrain, the trees grow outward from it, and the camera spirals down to eye level before visiting seven rooms. The outdoor shots then went through Wan 3.0 on Higgsfield; the interiors stayed as Cycles renders because the restyle made them greyer.
Render or photograph? Drag to compare.

Blender renderPhotoreal restyleStills restyled with Nano Banana Pro after four models were priced, under a 30-credit cap: 26 spent. Roof colours had to be named or they came back silver. The Cycles render stays the reference for anything dimensional.
All twelve renders
The build, in five frames
05Claude's part
A builder that checks its own work.
Claude Code wrote every line: a small mesh toolkit for Blender, the house in layers, a 1,030-line browser viewer and the film scripts. After each change it rendered test frames, looked at them and traced what was wrong back to the code.
| Script | What it builds | Lines |
|---|---|---|
| plan.py | Every dimension, wall, opening and room | 140 |
| kit.py | Mesh builder: rounded boxes, drapes, lathed vessels | 382 |
| shell.py | Slab, walls, glazing, roofs, porch, chimney | 422 |
| interior.py | Doors, kitchen, fireplace, every room's furniture | 877 |
| furniture.py | Sofas, beds, lamps, plants, curtains | 443 |
| materials.py | Procedural materials: oak, marble, bouclé, zellige | 590 |
| landscape.py | Terrain, lake, dock, canoe, rocks, 1,350 trees | 443 |
| cameras.py | Sky, sun, render settings and the twelve shots | 175 |
Some of what it caught
- Walls on the lawn. Every interior wall came out rotated 90°: two tables used opposite axis conventions.
- Pale grey hills. Distant terrain mirrored the sky at grazing angles, so its reflectivity was turned down.
- White panels in the glass. Ceiling lights showed as reflections in the glazing until they were hidden from reflections.
- Pink ground. In the browser model a hidden mask was exported as colour and the lawn turned salmon.
- A roof in the sky. The 480p film test showed a stray roof floating behind the house; the shot was re-run in two halves.
06Limits
What still falls short.
- The trees are placeholders.They are stylised cones and blobs. The photoreal pass replaces them up close, but from the air they stay low-poly. Real tree assets in Blender would fix it; more prompting won't.
- The restyle invents details.It redesigned the shower in the primary bath and darkened a door. The Blender renders stay the reference for anything dimensional.
- The browser model's lighting is live, not baked.Materials are baked into small textures, but light and shadow are calculated in the browser, so the model reads flatter than the renders.
- No Unreal walkthrough yet.The third step of the reference method is blocked: Unreal Engine isn't installed on this machine, and the session that checked stopped there rather than install it.