Inspiration

Anyone who has bought a couch online knows how it goes. You measure the wall with a tape measure, take a photo of the corner, squint at the listing for a while, and a few weeks later you're printing a return label.

Room planners already exist, but most of them want you to rebuild your room by hand, one wall at a time. The newer "AI redesign your room" apps swing the other way. You upload a photo and get back a pretty picture, but you can't buy what's in it, you can't trust the sizes, and you can't undo half of it.

We wanted something in between. Your actual room, measured. Real products at their real sizes, with real prices. And AI that helps with the parts that are hard, without quietly making the decisions for you.

What it does

You scan your room with an iPhone. Apple's RoomPlan measures the walls, doors, windows and the furniture that's already there. Our app also takes a few reference photos and picks out the art hanging on your walls. You send the file to your laptop, and Roomflow turns it into a 3D model of your room that you can edit.

From there you can mess around. Drag the bed under the window. Turn the desk to face the door. Browse 2,246 products from 17 real stores (Burrow, Floyd, Parachute, Schoolhouse and others), pick a fabric, and see that armchair in your room at the size the store lists. Try a whole style across the room at once and compare it from the same camera angle.

The subtotal keeps up with you, but only for things you actually add. Previewing never changes it. Every edit undoes in one step.

There's also a small design assistant. Type something like "warmer, less cluttered, keep my bed," and it proposes a new version of your room that you can look at, tweak, or throw away. It's rough around the edges, but it's useful for getting unstuck.

How we built it

iPhone app. We used Swift, SwiftUI, RoomPlan and ARKit. We convert Apple's captured room into our own format, match reference photos to the objects they show, and detect wall art by checking rectangles against the scanned walls and depth data. The export is a .roomflow.zip with a manifest and checksums, so the web side can tell if anything got corrupted along the way. Your scan lives on your phone until you choose to share it.

Web app. React 19 and TypeScript, with Three.js through React Three Fiber, Zustand for editor state and Zod to check every file that comes in. Everything is in meters, Y-up, and Apple's coordinate frame gets converted in exactly one place. We learned the hard way what happens when width and depth get swapped twice. The whole editor runs on your computer. Your room, your photos and your edits never leave it unless you ask for something that needs outside help.

Furniture models. We didn't download a 3D model for every product. Each product becomes a "recipe": a small set of adjustable parts sized to the store's listed dimensions. To pick the right parts, materials and colors, we used the Gemini API to read each product's photos. That's why a rust velvet armchair shows up looking like one. Gemini could only choose from fixed options, never invent shapes, and it never touched a size or a price. That produced 2,099 of the recipes. For the other 147, the photos weren't clear enough, so simple rules filled in. We ran all of this ahead of time on public product photos, so none of your data was ever part of it.

Photos and plain-language requests. A few features lean on Gemini's image understanding. Matching your scanned furniture to how it actually looks uses Gemini 3.1 Flash-Lite, and so does turning a photo of something you found into an object you can place. Both come back as structured JSON that the app checks before using. When you type a request like "make it warmer," Gemini sees only a bare outline of the room: the walls, the openings, and where things sit. It never sees your photos or anything about what you're buying. Gemini replies in a strict format, and our own code turns its suggestion into real products and checks it against your room before you see anything.

Challenges we faced

Scans are messy. RoomPlan is great at walls and pretty good at furniture. But it only knows a piece is roughly a chair-sized box, and it sometimes merges two nightstands into one. That's where the scan photos came in. The phone already knows where each object sits in each reference photo, so Roomflow cuts out just that piece on your laptop. It shows you the crops that would be sent, and after you confirm, Gemini works out the style and colors. Undo reverses all of it at once. Getting those crops right took a while: photos taken sideways, objects half out of frame.

Two people, 36 hours. Roomflow is a native iPhone app, a 3D web editor, a product catalog and a handful of AI features, and there were two of us. One of us owned capture on the phone and one owned the web side. The file that passes between the two apps was the only thing we both had to agree on, so we wrote it down early and kept to it. Most of a night went into making the two halves actually meet: a scan from a real room opening on the laptop with the doors still open, the windows in the right place, and nothing floating.

Making it look good. A room full of gray boxes is technically correct and nobody wants to use it. Getting from boxes to furniture that reads as furniture took the recipe system, a lot of lighting tweaks, and a long list of small fixes: wall corners that flickered, a rotate handle that disappeared under the rug, a landing page room with its walls cut off. None of those are headline features. All of them are things you'd notice right away if they were broken.

Accomplishments

The moment that got us was the first time a room one of us had just walked around with a phone showed up on a laptop, and we could drag the real bed around it. Walls where they should be, the door still swinging the right way, the painting above the dresser. That round trip from the phone to the laptop is the whole product, and it works.

We're proud that the catalog is real. Those 2,246 products come from stores you can actually buy from, at the sizes they list, and each one looks like itself instead of a placeholder. When you try a chair in your room, you're looking at something you could order tonight.

We're also proud of how the app treats people's data. It would have been easier to send everything to a model and hope for the best. Instead, Roomflow works fully on its own, and outside help is something you invite in one request at a time. You can see what's being sent before it goes and what it cost after. We think that's how AI in a personal space like your bedroom should feel.

What we learned

Using AI mindfully is mostly a design problem. It shows up in small places: a checkbox at the moment a photo is about to leave, a cost that appears right after a call, the smallest model as the default, and an undo button that actually undoes everything.

We also learned that AI works best here as one part of the experience. The room, the catalog and the editor do most of the work. Gemini fills the gaps that used to need a measuring tape and a lot of imagination.

What's next

Take privacy all the way. Train a small model, light enough to run on a phone, that recognizes furniture from the scan itself, so identifying what's in your room never needs to leave your device at all.

A better design assistant. Turn the current one-shot request into a real back-and-forth, where you can say "less of that, more of this" and it keeps up. The rules stay the same: it only sees an outline of your room, it asks before sending anything, and every suggestion is a preview until you say yes. Once a small on-device model is good enough, the assistant moves onto your phone too.

A more complete scan-to-model pipeline. Build a more reliable system that goes from scanning a piece of furniture, to identifying it, to a realistic 3D model of it, instead of today's close approximation.

Any furniture store. Grow the catalog from 17 stores to realistically any store, so you're never limited to what we happened to collect.

More room to be creative. Add more decoration and customization options: finishes, textiles, wall treatments, small objects.

Make it feel luxurious. Polish the animations and transitions until moving through your room feels smooth and a little indulgent, like browsing a nice showroom that happens to be your own home.

Built With

Share this project:

Updates

Submission history