Inspiration

Roomify started with a simple question:

“What could my room actually look like, and how can I achieve it within my budget?”

Students, renters, and young adults often want a better space but cannot visualize a redesign in their own room before buying anything. Generic inspiration photos do not account for their actual layout, furniture, budget, or rental restrictions.

We wanted to help people redesign more thoughtfully: keep useful furniture, reduce waste, and make renter-safe improvements.

What it does

Roomify turns one photo of a real room into a personalized redesign project.

After uploading a room photo, users review detected furniture and choose Keep, Replace, Remove, or Unsure for each item. They then set their preferred style, room purpose, colors, maximum budget, and Rental-Friendly Mode.

Roomify creates a constraint-aware redesign plan, a visual concept based on the original room photo, affordable recommendations, and beginner-friendly DIY guidance.

How we built it

Roomify uses a three-service architecture:

  • Next.js / React frontend for upload, furniture review, preferences, and the redesign workspace.
  • Spring Boot / Java API for authentication, ownership, workflow state, validation, storage, and AI-provider integrations.
  • FastAPI + YOLO11n computer-vision service to identify major furniture such as beds, chairs, sofas, tables, TVs, and plants.

We store projects, detection edits, furniture decisions, preferences, and generated results in PostgreSQL. Photos and visual concepts use S3-compatible object storage.

The core rule is that the model can propose a design, but the server decides whether it is valid. A generated plan must satisfy:

$$ \sum_{i=1}^{n} \text{estimatedCost}_i \leq \text{userBudget} $$

It must also preserve every item marked Keep, exclude every item marked Remove, and avoid permanent modifications when Rental-Friendly Mode is enabled.

Challenges we faced

The hardest part was avoiding AI suggestions that look appealing but are not realistic.

Object detection is not perfect, so Roomify treats it as a draft rather than ground truth. Users can rename, remove, or add furniture after analysis. Low-confidence objects are handled with uncertainty rather than false certainty.

We also learned that prompts alone cannot guarantee constraint compliance. The backend validates generated output using deterministic checks for furniture decisions, budget totals, rental restrictions, and safe DIY guidance before results are saved.

What we learned

We learned how to combine computer vision, REST APIs, secure authentication, structured AI output, and frontend workflows into one product.

Most importantly, we learned that AI output is untrusted input. Reliable AI experiences need schemas, validation, error handling, immutable input snapshots, and a way for users to correct the system.

We evaluated the CV service on 60 held-out indoor images. Across six furniture classes, it achieved:

$$ \text{Precision} = 0.70 $$

$$ \text{Recall} = 0.62 $$

AI generation requires a configured OpenAI API key. Without one, Roomify returns a clear configuration error rather than pretending a design was generated.

What's next

Next, we plan to deploy the full stack, evaluate live AI generation, support more furniture classes, and improve room-layout and furniture-fit estimates.

Redesign more, buy less.

Built With

Share this project:

Updates

Submission history