stable Floorgen · Research

ChatGPT Floor Plan to Scale? We Tested Claude and Gemini

Data graphic: cream poster headlined "Plain prompts: right math, no walls", with a huge 53 of 54 for the plain-prompt rooms drawn at the exact area asked for, with no wall thickness and no windows. Side stats: none of the six plain-prompt drawings had a window, and Gemini through a floor-plan editor's tools got 9, 9 and 0 of 9 rooms within 10%.
MR

Policy correspondent · Published Oct 13, 2026, 9:00 AM EDT

A plain prompt got the room math right but drew no walls or windows. Through FloorGen's tools, Claude and Gemini built real plans, with new flaws.

Partly. In our test, two frontier models given a plain prompt drew 53 of 54 dimensioned rooms at exactly the area we asked for and stated totals that matched their drawings, but the drawings had no wall thickness, no windows and, in half the runs, no interior doors. Given a floor-plan editor's tools instead, the same models drew real walls, doors and windows, missed some room sizes, and an automated code check caught a bedroom with no way out.

The models were Anthropic's Claude Sonnet 5.5 and a Google Gemini 3.1 Pro model, called through an API. The API gateway we used listed no GPT model on test day, so ChatGPT itself isn't in this test.

How we tested

We wrote one synthetic brief: a single-story ranch house with 3 bedrooms and 2 bathrooms, about 1,500 sq ft overall. It listed ten rooms with target sizes, nine of them with fixed dimensions, from a 16 ft by 18 ft living room down to a 5 ft by 9 ft hall bathroom, plus a hallway of about 120 sq ft. The listed rooms add up to 1,381 sq ft.

Each model got the brief two ways, three times each, on 10 October 2026. The model ids were claude-sonnet-5-5 and gemini-3.1-pro-low, as the gateway names them.

  • Plain prompt. We asked for an SVG drawn to scale, with every room labeled with its dimensions, overall dimensions, the scale and the total square footage.
  • Through tools. We ran FloorGen's own agent loop, the one behind its in-editor AI chat, locally against the same gateway. It calls the same tools as FloorGen's MCP server. Each run started from an empty US project, which FloorGen checks against its International Residential Code (IRC) profile.

We scored every result with scripts. For the SVGs we parsed every shape, converted pixels to feet at the scale the model stated, matched each label to the shape it sits in, and filled the outline in 3-inch cells to find gaps and overlaps. For the tool runs we read the saved project with FloorGen's engine and ran its validate_plan check.

Two attempts were rerun. The first Claude plain-prompt call, sent without a reasoning-effort setting, used its whole 32,000-token output allowance and returned no drawing. We reran it at medium effort, the default in FloorGen's loop, which all six scored plain-prompt calls used. One Gemini tool run came back empty, with zero output tokens, and was rerun. The prompts, raw outputs and scoring scripts are saved with this article.

The plain prompt: right numbers, no building

The SVGs were better than we expected. Every dimension label matched the rectangle it was printed in, and all six stated totals matched the outlines the models drew, from Claude's 51 ft by 30 ft (1,530 sq ft) to Gemini's 50 ft by 32 ft (1,600 sq ft). The one room off target was a Gemini hall bathroom drawn 6 ft by 8 ft (48 sq ft) instead of 5 by 9 (45 sq ft).

The trouble is what the drawings leave out:

  • Walls. None of the six SVGs drew walls to scale. Rooms butt edge to edge, with walls shown as lines or strokes. Two Claude replies said so outright: "Walls are not drawn," and "Room dimensions are drawn edge to edge with no wall thickness." A room that is 5 ft by 9 ft on paper with no walls loses floor area once real walls go in.
  • Windows. None of the six drew one. You can't check a bedroom's emergency escape opening, which the IRC requires in every sleeping room, on a plan with no windows.
  • Doors. Three of the six had no interior doors. One Gemini file says, in a code comment, that doors are "implied here by logical connectivity."
  • Closure. Two Gemini plans didn't tile cleanly. In one, the kitchen and living room overlap by 8 sq ft and 12 sq ft belongs to no room. Another left a 44 sq ft strip unassigned.

What we could check, we did. Every bedroom, living room and dining room cleared FloorGen's IRC minimums of 70 sq ft and 7 ft in each direction. Egress needs windows and ceiling height needs a third dimension, so those checks can't be applied to these drawings at all.

Measured against a 10% tolerance on the nine sized rooms, every plain-prompt run scored 9 of 9. The tool runs, below, scored 6, 6 and 7 for Claude and 9, 9 and 0 for Gemini, and they measured floor area inside real walls, which the SVGs never had.

Data graphic: dot plot headed "Plain prompts hit the room sizes but drew no walls", showing rooms within 10% of target, out of nine, per run. Plain-prompt runs score 9 of 9 for Claude and Gemini; tool runs score 6, 6 and 7 for Claude and 9, 9 and 0 for Gemini, whose third tool run was between 10.7% and 11.9% over target.

Rooms within 10% of target area, out of nine sized rooms, per run. Plain-prompt SVGs have no wall thickness; tool runs measure floor area inside real walls. Test of 10 October 2026.

Through FloorGen's tools: real walls, imperfect plans

Given tools, the two models worked very differently.

Claude drew the walls itself in batch edits, sizing rooms on the wall centerlines. FloorGen measures room area to the inner wall faces, and its US defaults are about 6½ in for exterior walls and 4½ in for interior ones, so the small rooms lost the most. A 5 ft by 9 ft bathroom measured on centerlines nets about 40 sq ft. Six, six and seven of the nine sized rooms landed within 10% of target, and the worst miss was a primary bathroom of 64 sq ft against 80. All three Claude plans passed validate_plan with no problems: every bedroom had an exterior window and every room could be reached.

Gemini called FloorGen's generate_layout, which packs a room list into a rectangle. Its first two runs produced the same layout, with all nine sized rooms within 2% of target. But Bedroom 3 ended up in the middle of the house with no exterior wall. FloorGen's check flagged it under IRC R310 as having "no emergency escape opening," and flagged Bedroom 2 as reachable only through Bedroom 3. The second run made 37 model calls in all, most of them trying to fix this, and left it unresolved. Gemini's reply said Bedroom 3 "is entirely surrounded by other rooms."

The third Gemini run dropped the hallway, generated the layout three times and finally forced a 50 ft by 30 ft footprint. All nine rooms came out between 10.7% and 11.9% over target, so none counted as within tolerance. It passed validate_plan, yet two bedrooms open off the kitchen and the hall bathroom can only be reached through the primary bathroom. A clean report from the checker is not a good layout.

FloorGen 2D render of a ranch plan with walls, doors, windows, dimension strings and room areas. Bedroom 3 sits in the middle of the house with no exterior wall, and Bedroom 2's only door opens into Bedroom 3.

Gemini's first tool run, rendered with FloorGen's own plan renderer: all nine sized rooms within 2% of target, but Bedroom 3 has no exterior wall, so FloorGen flagged it for having no emergency escape opening.

The stated totals held up here too: all six tool runs reported totals within 3% of what FloorGen measured, five of them within 0.1%. Part of that is FloorGen's own loop. After a model changes the plan, the app measures the result and sends the model back to fix what it finds. In one Claude run that step added a correction to the reply, saying the 80 sq ft it had listed for the primary bathroom was a target, not a measurement. In two Gemini runs the loop paused for approval because a turn had changed more than asked. One notice read: "This deletes 6 things and adds 23 things. That is more than the request asked for." Our script approved both pauses automatically.

What a connected agent can do to your files

Those two checks belong to FloorGen's chat. An outside client, such as ChatGPT or Claude connected to the MCP server, gets the same tools and the same validate_plan, but checking the result is up to the client and the model. FloorGen's ChatGPT floor plan page walks through adding the connector, which signs in with OAuth and asks for one of three access levels: Read only, Read & edit, or Full.

The guard rails live on the server, so they apply to any client. The MCP server's documentation lists them alongside every tool:

  • Soft delete. Removing a wall or a sofa moves it to a per-design trash, with no confirmation needed.
  • A token for anything permanent. Emptying the trash, clearing a design or deleting a floor, design or project first returns CONFIRMATION_REQUIRED with a token the agent must send back after asking you.
  • Recovery. Checkpoints are kept for 30 days, up to 20 per project. Projects deleted through the API can be restored for 30 days, and undo works on agent edits.
  • Limits. Each caller gets 60 edits and 300 reads a minute.

The MCP specification says clients must treat a server's tool annotations as untrusted unless the server is trusted, and that there should always be a human able to deny a tool call. Claude has its own route, the Claude connector, which works in claude.ai and the Claude apps; Claude Code can use an API key instead.

Where FloorGen falls short

FloorGen's checks didn't catch everything. The third Gemini plan passed with bedrooms opening off a kitchen. generate_layout packs rooms into a rectangle and can bury a bedroom with no outside wall, and the checks cover a subset of the IRC, not a plan review. Nothing FloorGen produces is a stamped construction drawing.

The in-editor AI chat is labeled beta and needs a free Google sign-in. Through an outside client, you get no measuring step after each turn unless the client provides one. FloorGen exports DXF but not DWG or IFC.

Our test was small: one brief, two models, three runs per method. We ran FloorGen's loop locally with in-memory storage, not on the live site, and we couldn't include a GPT model.

The bottom line

If you want a picture of a room list, a plain prompt to Claude or Gemini drew one with sound arithmetic in all six of our runs. If you want walls, openings and an egress check, the model needs a tool that models them. Even then, read the plan yourself: the tools caught a bedroom with no way out, but not a hall bathroom you can only reach through the primary bath.

Disclosure: FloorGen is built by ThreatFrontier's publisher. FloorGen details were checked against its code and live site in October 2026.

Sources

Keep reading

All latest →
  1. watchResearchGemini API Migration Checklist: 3.7 and 3.5 Flash Deprecated, Deep Research Preview Ends Oct 234 min
  2. watchResearchvLLM v0.31.0 Upgrade Notes: Preload Daemon, CRIU Snapshots, CUDA 13 Default and the Breaking Changes3 min
  3. watchResearchOllama 0.40 Makes MLX the Default on Macs, and 0.40.2 Keeps a Backup of Every Upgraded Model4 min
  4. watchResearchGPT-5.5 Retires From ChatGPT and Codex on October 14: What Replaces It on Each Plan3 min
  5. watchResearchMeta's Muse Wonder Costs the Same as Opus 5.5 on the API; Wonder Full Is Plan-Only6 min
  6. watchResearchClaude Sonnet 5.5 cache reads drop to $0.10 per MTok: when prompt caching pays7 min