Inspiration

We kept seeing the same failure pattern in AI room-design tools: users report generated layouts that mutate furniture they explicitly asked to keep, place objects at physically impossible scales, or silently treat a visually-guessed measurement as a fact. App Store reviews and renovation forums back this up — people don't lack pretty concepts, they lack a tool that's honest about what it actually knows versus what it's guessing. A 2025 architecture study reinforced this: AI is genuinely good at rapid ideation, but professional feasibility judgment still has to sit on top of it. That gap — between a confident-looking suggestion and a verified one — was the whole idea. We didn't want to build another layout generator. We wanted to build the thing that refuses to let a guess make a decision it isn't qualified to make.

What it does

Interiorin is a paired, evidence-aware spatial design studio. A phone captures the room and the homeowner's intent — floor plan or camera scan, entered dimensions, a short guided brief by voice or text. A laptop Studio Wall shows three canonical 3D directions and a transparent Decision Trace for every refinement.

The core mechanism is what makes it different: every fact in the scene carries an authority stateverified, user_declared, observed_unverified, inferred, or generated — and only facts with sufficient authority are allowed to authorize a fit-sensitive spatial change. GPT-5.6 is restricted to one job: turning spoken or typed intent into a typed, inspectable proposal like move(table_01, toward=wall_north, requested_delta_cm=40). It never touches the scene. Deterministic code owns every authority transition, every rule check, and every mutation.

In the demo, asking to move a table 40 cm while preserving a 90 cm walking path and a protected bookcase gets refused — because the bookcase's boundary is only observed, not measured. Entering that one measurement changes nothing about the geometry or the request, only its authority. Rerunning the identical transaction now returns a deterministic maximum-valid alternative: 18 cm, with a receipt showing exactly which facts authorized it.

Optional layers sit around that core: ElevenLabs voice guidance (scoped to drafting a brief and submitting a transcript — it can't approve or mutate anything), and a Gemini-generated presentation "Reveal" that's explicitly labeled as an unmeasured visual hypothesis, never geometry.

How we built it

We ran our own multi-agent research-to-design pipeline (Forge) before writing a line of application code: research swarm → idea generator/critic loop → solution loop → plan loop → design loop, each stage requiring a scored critic approval before moving forward. The idea went through 3 revision rounds — early versions claimed pre-commit geometric validation or numeric confidence scores, and the critic killed both because Agentic Designer already does stepwise validation, and unsupported decimal confidences aren't defensible. We landed on categorical authority states with explicit, event-backed transitions instead.

The build itself is Next.js/React/React-Three-Fiber for the canonical 3D scene, a TypeScript authority state machine and deterministic solver for the geometry rules, Supabase (Postgres + private Realtime channels + RLS) for real phone/wall pairing with a disclosed same-device fallback for demo reliability, and GPT-5.6 wired in strictly as a language-to-typed-proposal translator. Realtime events carry only display-safe metadata — never image bytes, secrets, or raw model output. Images are orientation-corrected, re-encoded to JPEG, capped at 2048 px, and stripped of EXIF before anything touches storage.

Challenges we ran into

The hardest problem wasn't the 3D or the voice integration — it was defining what "evidence" is even allowed to mean. Early passes used probability-style confidence scores; the critic loop rejected that because we had no data to back the numbers. Switching to a five-state authority contract with explicit promotion/revocation rules (an observed_unverified fact only becomes user_declared through a deliberate entry, only becomes verified through professional confirmation) took real iteration to get right and to prove with a clean A/B demo rather than a feature tour.

On the implementation side, our first pass had the 3D scene's semantic panel hardcoding a display value instead of deriving it from canonical state — an internal implementation critic caught the mismatch between the committed mesh and the reported number and it had to be traced back to source. We also hit a live Gemini image quota wall (429 RESOURCE_EXHAUSTED) during Reveal testing, which forced us to make sure that failure path degrades cleanly without ever touching canonical 3D. And building a deterministic mobile fallback — the full authority-proof journey has to complete correctly at 375 px with prefers-reduced-motion even if the Canvas itself fails — took a dedicated error boundary and its own production test pass.

Accomplishments that we're proud of

The A/B proof itself: identical geometry, identical transaction, and the only thing that changes between a refusal and an authorized commit is one recorded evidence event. That's the entire product claim, made falsifiable in under three minutes.

We're also proud of the honesty baked into the release: 31 tests passing, zero-warning lint, strict TypeScript, a clean production build, desktop and real-Pixel end-to-end coverage, a SHA-256-verified proof chain, and a receipt that names exactly which facts authorized exactly which commit — alongside a README that plainly states what's not verified yet (live Supabase pairing, professional review, exterior support) rather than overclaiming for the demo.

What we learned

Constraint-checking in AI-generated layouts is already a crowded space — Agentic Designer, FloorPlanCheck, Higharc, and Drafted all do real versions of it. The defensible idea wasn't "check the geometry," it was "govern what evidence is allowed to authorize a change to it." That distinction only became clear after our own critic loop forced us to concede prior art three separate times.

We also learned that voice and generative imagery are genuinely additive to the experience but dangerous if they're allowed anywhere near the source of truth — every design decision after that realization was about keeping GPT-5.6, ElevenLabs, and Gemini firmly on the "propose and present" side of a hard line, never the "decide" side.

What's next for Interiorin

Extending intake beyond the one prepared baseline to arbitrary real photo/floor-plan captures with a proper guided measurement flow; adding exterior rules on top of the same typed-proposal and authority-transition architecture; enabling live Supabase real-device pairing and the gated ElevenLabs/Gemini features once fully credentialed and canary-tested; and — longer term — a consented professional-correction loop that pairs original facts with verified corrections to actually calibrate the transition rules, which right now are hand-written and explicitly not yet a moat.

Built With

Share this project:

Updates