Building an AI interior design app
Update, October 2026. This is the story of the first version, written a few months after launch. Decorous has changed a lot since. It now runs on Google's Gemini image models instead of Stable Diffusion, and it does virtual staging, Declutter, paint, curb appeal and backyards as well as room redesigns. The biggest complaint below, AI inventing doors and windows, is what most of the work since has gone into: the app now tells the model to keep the room's architecture, and checks the result.
I've been developing mobile apps in some form since 2008. I've been part of teams that built products from the ground up, like Vine, Dresr (acquired by Google) and Rodeo (Area 120, acquired by YouTube), but I had never launched something on my own.
Over the holidays I decided to see what it takes to launch an app solo. The result was Decorous: AI Interior Design. Here are the highlights of what I learned.
Shower thoughts
Decorating our newly bought home, I had trouble picturing empty rooms in different styles. The Pinterest photos looked great, but would the style go with my room? One morning in the shower it hit me: could generative AI do virtual staging, or at least give me some inspiration? Could I build something where you upload a photo of your room, pick a style, and let the AI do the rest?
Noise to signal
If you aren't familiar with it, Stable Diffusion is a text-to-image diffusion model. Diffusion models work by progressively removing noise from an image, so that each round produces an image that better matches what you typed. In the basic case it starts from pure noise and makes something new from text alone.
Stable Diffusion works a little differently: it compresses images into a much smaller representation, which lets it run faster and on less powerful hardware. Noise is added to that compressed version in a similar way, and the result is decoded back into an image.
Better still, you don't have to start from pure noise. With img2img you supply a starting image, choose how much noise to add, and let it run, which controls how much it changes the input. That sounded a lot like design suggestions for a photo of a room.
You can also fine-tune it to reproduce specific subjects, which is what the AI avatar apps of the time were built on.
Getting started
The first step was to play with Stable Diffusion and see what I could get out of it. The plan: engineer the prompt, get the settings right, then build the app around them.
I figured the easiest way to get it running was a Google Compute Engine VM, which I could later Dockerize and deploy to GKE for scaling. Just getting the dependencies installed was a pain. Once it worked, experimenting was just as painful: I had to copy images off the VM to see them, and turn knobs by editing command-line parameters. Keeping the instance running cost $14 a day, about $400 a month. Not ideal.
If you just want to try Stable Diffusion, Stability AI's DreamStudio works in a browser, with some free credits before you have to buy more. With a graphics card with enough memory (around 10 GB or more) there are good open source web interfaces too, like Automatic1111's. My gaming PC was up to it, and with a web UI I got fast feedback on prompts and settings and iterated until I was happy enough to ship.
The product
After the idea hit me, I looked around to see what already existed. InteriorAI.com was already doing well with something very close: upload an image, choose the room type, style, quality and how inventive it should be. I was a bit bummed at how unoriginal my idea was, but its creator, @levelsio, had tweeted about AI avatars that there's value in meeting people where their photos are: on their phone.
I mostly do iOS development anyway, so that felt like enough of a difference. There were a couple of near-copies of InteriorAI on the App Store, but I felt I could build a better experience than them, and I liked that people could take a picture anywhere in their home and get a result on the spot.
I also wanted more control than a room type and a style, so I added a color palette option.
Building
I designed and built the app over the holiday break. It was simple: one screen, a photo area, a button to pick or take a photo, a couple of lists for the room type and style, and a submit button. The hard part was deciding where to run the model. Running my own server would cost $400 a month, so I looked at hosted options.
A handful of APIs host models and handle operations, load balancing and autoscaling for you, and new ones were launching every week. I compared banana.dev, Replicate and Stability AI's own API. Banana didn't have an img2img model ready to go, and Stability's billing meant buying tokens by hand. Replicate had simple metered billing (you pay for the seconds the model runs) with autopay, and a ready-to-use Stable Diffusion 2.1 img2img setup.
With my settings, each run on Replicate cost about $0.02. I'd have needed around 200,000 requests a month before my own GPU server made sense, and even then it wouldn't scale, because each request used most of the GPU's memory and they'd have to run one at a time.
I didn't want to go through App Store review every time I changed the prompt or the model, so I put a small server on App Engine that takes the user's choices, builds the prompt and sends it to the model. App Store review turned out to be fast anyway, sometimes under a couple of hours. I used Stable Diffusion to make the first app icon, put together some screenshots, and shipped it.
Results
I was proud of what I made, and it was great to go through the whole process.
What worked
- The output looked good and high quality at a glance.
- It was useful for inspiration and for exploring broad themes for a room.
- It felt like magic to people who hadn't tried generative AI yet.
- I did what I set out to do, from zero to launch in under a month.
What didn't
- The images didn't hold up to a close look. Zoom in and you'd see AI artifacts.
- Color palettes mostly don't have widely used names, so the palette option didn't work as well as I'd hoped, though it did steer the result.
- It was hard to balance creativity against keeping the room's structure. I wanted it free to fill empty rooms with furniture and decor, but not to invent doors and windows where there couldn't be any.
Where it went next
That last point shaped everything after. Newer image models are much better at editing a photo without redrawing the whole thing, and Decorous now asks them to keep walls, windows, doors, floors and the camera angle exactly as they are. That made real estate uses possible: staging empty listing photos, removing furniture from a photo, and a "Virtually staged" label for the MLS. If you tried it in 2023, it's worth another look.