Project · 08 · Human–AI design

HAD.

Summary

Human–AI Design (HAD) is a prototype for designing in conversation with an AI. You sketch; the assistant sees your plan, asks what you are designing, talks it through with you, and can act on it. Like the assistant in an operating room who hands the surgeon the right instrument, it can switch you to the tool you need, hand you a part to place, or act itself: place, move, rotate, or swap things, and explain why, in words you can check and undo. I developed it to explore how people and AI can design together when models interpret and computational tools decide.

One design model serves every surface: a 2D drawing canvas, a 3D view you can walk or fly through on screen, and a VR walkthrough on a headset. This page follows one request through that collaboration: how the plan becomes something a model can understand, how intent becomes a form its tools can act on, and how the person stays the author. Placing a bed is the worked example; the subject is the hand-off.

Human–AI design process Conversational assistant Structured scene context Typed intent Deterministic placement 2D · 3D walk & fly · VR

01 — Two experiments✦

Can you just put the bed in the bedroom?

Picture people designing in conversation: they describe, point, reconsider. “Bed against the long wall, nightstands either side, desk facing the window” is a complete instruction for a person who can see the room. A drafting tool still needs positions and angles before those words can become part of the plan.

Language models can now hold that conversation fluently, which sharpens the question: who decides where the bed actually goes? I developed HAD to find out what a design conversation becomes when the AI on the other side can act: let the model interpret, and give it tools that can place. HAD is research and development rather than a product line: two experiments on the same prototype decided how that hand-off works.

A spoken request beside a bare plan where a bed outline hovers in three possible positions. “put a queen bed in the bedroom, and a nightstand on the left.” ? ? ? 4.0 m 3.6 m WHERE, EXACTLY? Words are complete. Coordinates are not.
A spoken instruction still needs a way to become a position in the room.

Fluent in words, blind to the wall

Experiment one gave the realtime voice model the whole job. It could discuss the plan, but its only tool named an item, so it had to tell the person where to click. It never emitted coordinates, yet it described positions nobody could draw, sent a desk and chair to opposite corners, and knew nothing of wall lengths or door swings. The finding was clear: the realtime model is weak at spatial math. It was doing its job as a conversational partner; the tool surface was the bug.

Experiment two stopped asking it to do any. The model passes intent in a small vocabulary to a deterministic solver: a tool that computes positions and angles from the plan itself. When people said that confirming each proposal by click felt like the assistant was suggesting rather than placing, I let placements commit on their own, with undo. Before any of that, the solver needed a room it could reason about.

Before, the model could only describe where to click and a desk and chair landed in opposite corners; after, a typed instruction is placed by the solver. BEFORE · MODEL GUIDES THE CLICK “desk against the north wall, chair tucked under it” "try the top-left… no, further right" ? described, not drawn · paired items treated as independent Fluent in words, blind to the wall. AFTER · MODEL INTERPRETS, SOLVER PLACES desk · against: north wall chair · relative: desk · side: front
Changing the tool gave spoken intent a route to a committed placement.

The model was doing its job. The tool was the bug.

— The decision behind HAD
02 — Building the hand-off✦

Walls become rooms

To understand the plan it discusses, the assistant needs rooms. People draw walls as strokes at any angle, including partitions that simply end against another wall. Nobody draws a room. HAD joins wall ends that nearly meet, splits a wall where another lands on it, and walks the resulting network to find every closed face: a room with its area, centre, and surrounding walls.

Take a bedroom 4.0 by 3.6 m, with a door on its south wall and a window on its east wall. The room is recomputed whenever the plan changes, never stored. Each opening remembers its wall and its position along it, so it moves or disappears with that wall.

Together, these relationships form the design model, the structured description of the plan that the rest of HAD works from. Its knowledge of rooms comes from the walls people draw and the openings attached to them. The next question was how to describe that information to a language model.

Loose wall strokes become a network of joined endpoints, and the closed faces of that network become rooms with their doors and windows attached. 4.0 m 3.6 m 9.6 m² 4.8 m² 0.25 STROKES NETWORK ROOMS Rooms are found, not drawn.
Rooms are derived from the wall network each time the plan changes.
Four closed regions become four rooms: two bedrooms at 16 m² each, Office at 18 m², and Living Room at 30 m². Labels and areas come from the editor.

The scene, told three ways

I prepared scene context, a task-specific description of the current plan, so the assistant can understand what it is discussing. For conversation, HAD tells the plan as an architect might: which room, how large, which openings, what is inside. That description connects the conversation to the drawing.

Layout planning needs a survey in 10 cm cells, including the free space on each side of existing objects. A precise move needs a smaller, exact brief about one object, its neighbours, and the room’s safe interior rectangle. Each model also receives a canvas screenshot.

The door’s swing arcs, the window’s view cones, and the rules about what may stand against a wall stay with the solver, because it is the part that can be held to them. Tell each task what it needs, and no more. What the model may say back is just as deliberate.

One design model is written three ways: a spoken room summary, a planning survey in cells with free-space envelopes, and a precise transform brief, while the geometric rules stay with the solver. DESIGN MODEL 4.0 m 3.6 m MODEL MODEL MODEL CONVERSATION PLANNING · IN CELLS TRANSFORM · IN CELLS Bedroom, upper right, about 14 m²; one door, one window; contains a bed and a nightstand. polygon (0,0)→(40,0)→(40,36)→(0,36) door · wall w3 · 0.25 along queen bed · free: front 16 · left 12 · right 12 target: desk (4,10) 12×6 rot 90 safe interior: cols 2–38 · rows 2–34 Tell each task what it needs — and no more. KEPT BY THE SOLVER placement rules · door-swing arcs · window view cones · allowed anchors
Different tasks need different descriptions of the same design.

Intent as a form

A typed instruction is a form with a limited vocabulary for expressing intent. It can ask for a wall, choosing the longest, shortest, or a specific one; a corner; the centre; a named side of another piece; somewhere near something; or a position between two things. There is no field for coordinates.

7
anchor kinds
7
facing modes
0
coordinates

Placement can face into the room, toward the door, toward the window, toward another object, or match its anchor. References identify a piece by name, by the current selection, or as “the piece before this one.” These choices let the model express relationships that the solver can resolve.

“Put a queen bed in the bedroom” becomes an item, a room, the longest unobstructed wall, and a direction into the room. “And a nightstand on the left” refers back to that bed and names its left side. The model has interpreted; it has not measured. Measuring is the solver’s job.

Two spoken requests become typed instructions — item, room, anchor, facing, reference, side, gap — with no coordinate fields at all. queen bed in the bedroom and a nightstand on the left. MODEL INSTRUCTION · place_with_anchor // what // where, in words --- item: room: anchor: facing: item: anchor: near: side: gap: "queen bed" "bedroom" longest_unobstructed_wall into_room "nightstand" relative "queen bed" left 5 x: 320 y: 140 rotation: 0 NOT IN THE VOCABULARY The form has no field for coordinates.
A typed instruction records relationships the solver can resolve.

The solver decides exactly where

The solver ranks candidate walls by length, longest first. Ties are broken by preferences such as being away from the door, then by a stable order, so the same request in the same room gives the same answer. It poses this bed against the wall, facing into the room.

It checks that the bed stays inside the room without overlapping walls or furniture. For wall-anchored items, it tests the door’s swing arc and protects the window’s view from tall pieces. Here, south and north tie in length, but the door’s swing takes the southern spot; the bed goes north.

If a wall fails, the solver tries the next. For a kit, pieces are solved in dependency order against a scene already holding the earlier ones, and anything that does not fit is reported by name. Each placement changes what is available to the next.

A single item that fits nowhere on its requested anchor instead goes to the nearest open spot, and the assistant says so. That fallback matters: the result can differ from the requested position. From the person’s side, the machinery gives way to something simpler: a placement they can see and undo.

Candidate walls are ranked; the bed is tried first on the south wall where it would block the door's swing, then committed on the north wall after every check passes. 4.0 m · 1 4.0 m · 1 3.6 m · 3 3.6 m · 3 CHECKS inside the room no wall overlap clear of other pieces clear of door swing window view kept south wall · tried first blocked by door swing north wall · committed Ranked, posed, checked — then committed.
A wall’s length is only the start of deciding whether a bed belongs against it.
03 — Using it✦

Say it, see it, undo it

Before placing anything, the assistant asks what you are designing and which room to focus on. It keeps that goal in view as you talk about the room, whether by voice or text. The request grows out of that conversation.

When you ask for the bed, it appears with a small AI badge that fades after a few seconds. The assistant explains its position in ordinary words: against the longest clear wall, facing into the room. Select it later and the inspector shows which tier and tool placed it, and when.

“Set up the office” arrives as one batch, and one undo removes the whole kit. The bed and the nightstand, requested separately, take two undos. I wanted the unit of reversal to follow the action, so a room kit remains something a person can readily take back.

I kept structure on the slower path: walls, doors, windows, and labels are placed by your click. Here the assistant works like a surgical assistant handing over instruments. Ask for a partition and it activates the interior wall tool and tells you where to start and end; ask for a door and it hands you one that snaps onto the wall it names; ask for the bed, or ask it to move or turn something, and it acts itself. The assistant furnishes; you draw. Both work on the same design model, which makes the next part possible.

Placed furniture carries a small AI badge; the assistant explains the placement in spatial language; the inspector shows which tool and tier placed it; walls and openings remain the person's to place. 4.0 m 3.6 m ↻ AI Bedroom ASSISTANT “Bed against the longest clear wall, facing into the room. Undo if it’s wrong.” INSPECTOR · PROVENANCE placed by AI tool place_with_anchor tier single item at 14:02:17 YOU DRAW walls · doors · windows · labels — click to place The person stays the author.
A placement arrives with a badge, a spoken reason, and a record of what placed it.
Before · plan Living Room before the armchair revision
After · plan Living Room after moving and turning only the armchair
Before · eye level The original armchair position viewed from inside Living Room
After · eye level The revised armchair beside the table, facing the sofa, from the same viewpoint
One object changes. The armchair moves beside the table and turns toward the sofa; every other object keeps its position, size and angle. The same comparison is visible at eye level.

A prepared walkthrough

Act I — Begin with intent
1 / 17
  1. Frame 1 of 17, A brief, not a layout: An empty sheet, a brief, and an order of work proposed before any wall is drawn.

    01A brief, not a layout

    An empty sheet, a brief, and an order of work proposed before any wall is drawn.

    YouI want a two-bedroom apartment, a separate home office, and a comfortable shared living space.
    HADLet’s define the shell and rooms first. Then we can make the furnishing decisions together.

  2. Frame 2 of 17, The first wall, drawn by hand: The first ten-metre wall of a ten-by-eight outline is on the sheet, begun with the exterior wall tool; the plan keeps room to the south for later changes.

    02The first wall, drawn by hand

    The first ten-metre wall of a ten-by-eight outline is on the sheet, begun with the exterior wall tool; the plan keeps room to the south for later changes.

    YouThe first wall is ten metres long.
    HADContinue around the outline; the enclosure will define the initial space.

  3. Frame 3 of 17, Four rooms from drawn walls: The shell and two partitions are drawn by hand; the editor detects four enclosed rooms, and the assistant asks for openings before furniture.

    03Four rooms from drawn walls

    The shell and two partitions are drawn by hand; the editor detects four enclosed rooms, and the assistant asks for openings before furniture.

    YouThe partitions are drawn. What comes next?
    HADDoors and windows before furniture. Let’s establish access and daylight openings.

  4. Frame 4 of 17, A plan with names: Doors and windows placed by the person, and four labels, Bedroom 1, Bedroom 2, Office, Living Room, that make later requests specific.

    04A plan with names

    Doors and windows placed by the person, and four labels, Bedroom 1, Bedroom 2, Office, Living Room, that make later requests specific.

    YouAnd the large southeast space is Living Room.
    HADNow we can make decisions room by room.

  5. Frame 5 of 17, We forgot the kitchen: A new requirement arrives after the plan is settled; the answer is a south extension off Living Room, drawn by hand, and a fifth region the editor detects the moment its boundary closes. The bedroom count stays.

    05We forgot the kitchen

    A new requirement arrives after the plan is settled; the answer is a south extension off Living Room, drawn by hand, and a fifth region the editor detects the moment its boundary closes. The bedroom count stays.

    YouWe’ve forgotten the kitchen. Can we add it without losing a bedroom?
    HADWe could extend south from Living Room, with a direct connection to the shared space.

  6. Frame 6 of 17, Five named spaces: The extension joined by a double door, lit by a south window, labeled Kitchen.

    06Five named spaces

    The extension joined by a double door, lit by a south window, labeled Kitchen.

    YouAdd a south window and label it Kitchen.
    HADFive named spaces are ready for the furnishing study.

  7. Frame 7 of 17, Reasons before furniture: The empty Office with its real east window and south door; the arrangement is argued from them before anything is placed.

    07Reasons before furniture

    The empty Office with its real east window and south door; the arrangement is argued from them before anything is placed.

    YouI want to face the window while I work. Put the desk along that wall.
    HADThe desk can sit just below the window, with the chair on the room side and a clear approach from the door.

  8. Frame 8 of 17, The office as a whole: Desk and chair at the window, the library on the solid wall, and a reading corner as a second zone; eight furnishings, door and window kept clear.

    08The office as a whole

    Desk and chair at the window, the library on the solid wall, and a reading corner as a second zone; eight furnishings, door and window kept clear.

    YouHow does the whole office work?
    HADThe desk faces the east window. The library uses the solid wall, while the lounge chair and ottoman define a quieter second zone.

  9. Frame 9 of 17, A guest room that is also a study: A different brief for the second bedroom: the desk takes the west window, the bed sits opposite and beyond the door swing.

    09A guest room that is also a study

    A different brief for the second bedroom: the desk takes the west window, the bed sits opposite and beyond the door swing.

    YouFinish the guest bedroom so it also works as a study.
    HADA single bed, bedside table, wardrobe and library complete the room around its window-side desk.

  10. Frame 10 of 17, The whole arrangement: Forty furnishings across five rooms, including the living and dining groups and the fitted kitchen, placed one decision at a time.

    10The whole arrangement

    Forty furnishings across five rooms, including the living and dining groups and the fitted kitchen, placed one decision at a time.

    YouLet’s review every room together.
    HADWe have two furnished bedrooms, an office with a reading area, a living and dining room, and the connected kitchen.

  11. Frame 11 of 17, A chair outside the conversation: Before the revision: the armchair sits low in the room, away from the seating group.

    11A chair outside the conversation

    Before the revision: the armchair sits low in the room, away from the seating group.

    YouThe Living Room armchair feels detached. Move it beside the coffee table; keep the table fixed.
    HADWe can bring just that chair into the seating group.

  12. Frame 12 of 17, One chair, one change: The armchair moved beside the coffee table and turned toward the sofa; its neighbours keep their positions, sizes and angles.

    12One chair, one change

    The armchair moved beside the coffee table and turned toward the sofa; its neighbours keep their positions, sizes and angles.

    YouNow turn that armchair toward the sofa without moving its centre.
    HADThe seat turns toward the sofa while its position stays fixed.

  13. Frame 13 of 17, A wider window, the same wall: The Office window widened from 120 to 160 cm about the same centre; the desk and the rest of the room do not move.

    13A wider window, the same wall

    The Office window widened from 120 to 160 cm about the same centre; the desk and the rest of the room do not move.

    YouThat is the width I wanted.
    HADThe Office window is now 160 cm wide at the same centre. The desk and furniture remain fixed.

  14. Frame 14 of 17, The office at eye level: Desk and chair at the window, the library behind, the reading chair in the foreground; the same positions as the plan.

    14The office at eye level

    Desk and chair at the window, the library behind, the reading chair in the foreground; the same positions as the plan.

    YouThe office now feels like a complete interior.
    HADThe desk and chair face the east window; the reading chair and storage occupy the other part of the office.

  15. Frame 15 of 17, The main bedroom: Bed, two bedside tables, wardrobe and window bench, with a clear zone at the foot of the bed.

    15The main bedroom

    Bed, two bedside tables, wardrobe and window bench, with a clear zone at the foot of the bed.

    YouThe main bedroom should feel calm rather than empty.
    HADThe bed, two bedside tables, wardrobe and window bench give the room distinct places to rest, store and sit.

  16. Frame 16 of 17, From the living room into the kitchen: The double opening gives the south extension a direct relationship to the shared space.

    16From the living room into the kitchen

    The double opening gives the south extension a direct relationship to the shared space.

    YouThe new kitchen should feel connected to the living area.
    HADThe double opening gives the south extension a direct relationship to Living Room.

  17. Frame 17 of 17, One design, three ways: The finished model from above: five rooms, one design, inspected from the plan, from above, and from inside.

    17One design, three ways

    The finished model from above: five rooms, one design, inspected from the plan, from above, and from inside.

    YouThis feels like one home, with different places to work, rest and gather.
    HADThese views let us inspect one layout from the plan, from above, and from inside each room.

04 — One model, three surfaces✦

The same plan, walked

One click turns the design model into a 3D view you can walk or fly through on screen: each wall becomes boxes split around its openings, and each detected room becomes a floor. Nothing is modelled twice, so the bed placed on the plan is the bed you walk around. The voice session started in 2D stays open in 3D, so you can keep talking while you walk the plan.

On a headset, the same scene is a walkthrough, not an editing surface: you can still undo from the controller and keep talking to the assistant, but there are no tools for drawing or moving things. I kept editing on the desktop on purpose, where the canvas supports precision. Three surfaces share one model, and one question follows them: what did the system actually check?

One design model shown as the 2D editor plan, a three-dimensional walkthrough built from the same walls and rooms, and a headset walkthrough. DESIGN MODEL 2D · EDITOR 3D · WALK & FLY WEBXR · WALKTHROUGH WALK · NO EDITING TOOLS Drawn once, rendered three ways.
One design model supplies every surface on which the room is viewed.
2D · plan The five-room furnishing arrangement in the 2D plan
3D · fly The same apartment viewed from above in Fly mode
3D · walk The Office desk and reading area at eye level
One design, inspected from the plan, from above in Fly mode, and from inside Office at eye level. The VR walkthrough is not captured here; these are the desktop plan and 3D views.
05 — Keeping it honest✦

Not every edit takes the same road

The assistant’s actions take different roads: solver-backed placement and relational moves check containment and overlap, with swing and view checks for wall anchors. “Turn the desk to face into the room” expresses a move the solver can resolve. If the proposed move fails, the model gets one more attempt with the exact violation; success is not guaranteed.

Small nudges apply the model’s own change with lighter checks: a rotation is refused if it would hit a wall, a resize is clamped, and a nudge simply moves. Walls and openings follow your click. For catalog items, the model draws the icon and 3D shape but never chooses their position in a room.

The session recorder keeps every prompt, every instruction, and every solver verdict in order. A recording of a desk rotated into a wall without a retry is why rotations are now checked first. I used those traces to hold claims to implemented behaviour, the same standard this page needs to meet.

Five kinds of edit and who decides each: solver-backed placement, relational moves, direct nudges with lighter checks, guided placement by the person's click, and catalog assets the model draws but never places. SOLVER-BACKED RELATIONAL MOVES DIRECT NUDGES GUIDED CATALOG ASSETS “queen bed in the bedroom” “turn the desk to face into the room” “a bit to the left” “add a door” “a new reading lamp” MODEL MODEL MODEL YOU inside room · no overlap door swing · window view inside room · no overlap · one retry rotate: overlap check resize: clamped · move: no check canvas placement rules sanitised · clamped · never placed a model decides a deterministic step Checked against what is implemented.
An edit’s path determines which checks stand behind it.
The relationship is inspectable: the Office window is 160 cm wide, “Attached to east, at 18% along.” Its width and wall attachment are separate properties.

Checked against what is implemented, not promised against everything.

— The rule behind the claims
06 — What it adds up to✦

Structured design information, connected to AI operations

The person draws, judges, and decides; the model listens and interprets; structured tools resolve and check. That division is what Human–AI Design names. I developed HAD around it so that discussing a design can lead to an action on the plan, while the person remains its author.

For the person, the design conversation continues through actions they can question, inspect, and reverse. For me, it is a pattern I keep reaching for: models interpret, structured tools decide, wherever geometry, rules, or records deserve precision. “Can you just put the bed in the bedroom?” now has an answer in the plan, with the placement explained and the decision reversible.

The end-to-end strip from design model through scene context, typed intent, solver and checks to placed, undoable geometry, with the three surfaces beneath. 01 02 03 04 05 Design model Scene context Typed intent Solver & checks Placed & undoable THREE SURFACES 2D EDITOR 3D WALKTHROUGH WEBXR · · Can you just put the bed in the bedroom? Now the geometry follows.
A useful answer connects the request to geometry a person can inspect and undo.
Five rooms. Forty furnishings. One design model supplies the plan and the spatial view; nothing is drawn twice.

Project at a glance

What problem it targets

Designing in conversation with an AI requires an assistant that understands the plan, acts without guessing geometry, and explains actions people can reverse.

  • Understanding the drawing being discussed
  • Turning design intent into actions through computational tools
  • Keeping decisions explained, inspectable, and reversible

What I developed

  • A voice and text design assistant that sees the plan, asks about the goal, and acts through tools: switching your tool, handing you a part, or acting itself
  • Design model with derived rooms and parametric doors and windows
  • Task-specific scene context for conversation, planning, and precise moves
  • Typed placement vocabulary and deterministic solvers with implemented checks
  • Visible, undoable AI commits with provenance across 2D, 3D, and headset surfaces

Core tech

  • Design model: TypeScript document validated with Zod; rooms derived by wall-network face tracing; parametric doors and windows
  • Spatial computation: Deterministic placement and transform solvers: wall ranking, dependency-ordered kits, door-swing and window-view clearance, overlap and containment checks; seeded randomized tests for overlap, containment and repeat determinism
  • AI: gpt-realtime-2 over WebRTC for conversation and tool calls; GPT-5-class and Claude models for layout planning, gpt-5.2 by default; claude-haiku-4-5 for relational moves; typed outputs checked at every boundary
  • Surfaces: React and SVG editor; three.js walkthrough; WebXR walkthrough for Quest browsers
  • Platform: Cloudflare Workers; Supabase with row-level security; Vitest, 600+ tests

Context

  • Type: Independent prototype
  • Role: Design, development, and deployment
  • Year: 2025

Links