Inspiration

Roominate was inspired by our experience moving in together as roommates this year. It was hard to communicate what each roommate was bringing, and we ended up with a lot of overlap, which left us short on space in our apartment. Individually, we also had trouble deciding what to bring. We couldn't plan our room layouts ahead of time, so we had to make multiple trips over several weeks to bring everything we needed. Roominate is designed to fix these issues: roommates share their furniture lists, and each person can plan their room ahead of time to see whether everything they're bringing will fit.

What it does

Roominate helps roommates plan a shared dorm room before move-in day. Enter your college, hall and room type, and it finds the room's dimensions on official housing pages. You can also trace the room's shape from a floor plan image. You then furnish a true-to-scale 3D model using a built-in IKEA/Amazon shortlist, Amazon search, or any product link.

As you plan, Roominate flags furniture that hits a wall or blocks the door, items both roommates are bringing, things your housing rules ban, and a cart that's over budget. Better Cart fixes these in one pass by moving, swapping or dropping items, and you accept or reject each change. You can invite your roommate with a link to plan together. When you're ready, the cart is grouped by store for checkout.

How we built it

Frontend: Next.js 16, React 19 and TypeScript. The 3D room uses React Three Fiber and three.js, with furniture models generated in code and scaled to each product's real dimensions.

Backend: Python FastAPI with Pydantic. SQLite stores roommate invites, cached AI responses and an AI spending log.

AI: The OpenAI Responses API (GPT-4.1 mini), with web search and strict JSON schemas.

Fit engine: Plain TypeScript with no AI. It runs the collision, clearance, housing-rule and budget checks, plus the Better Cart solver.

Other tools: The Amazon Creators API for product search, Playwright for reading JavaScript-heavy housing pages, and Vitest, pytest and Playwright for testing.

Challenges we ran into

  • Keeping AI suggestions trustworthy. We made sure code, not AI, decides whether furniture fits or breaks a rule, and anything estimated is clearly labeled until the user confirms it.
  • Tracing floor plans. Doorways are drawn as gaps in the wall, so the traced room would leak into the hallway. We added doorway sealing and a step for users to mark their real door.
  • Gathering real product data, including every color option from each IKEA and Amazon listing.
  • Making the 3D editor easy to use, from readable labels at any camera angle to snapping, locking, and undo.
  • Changing our 3D coordinate system partway through without breaking rooms users had already saved.

Accomplishments that we're proud of

  • A shared, to-scale 3D room planner with real furniture from IKEA and Amazon, each with its own 3D model and color options.
  • Tracing a room's real shape, including L-shaped rooms, straight from a housing floor plan.
  • Suggested cart fixes that resolve fit, budget, rule, and duplicate issues in one step, each of which can be accepted, rejected, or undone.
  • Using AI safely and cheaply. The app still works fully without it.
  • A complete flow from measuring the room to planning, shopping, checking out, and splitting costs.

What we learned

  • Accurate measurements and careful unit handling matter more than flashy features. One wrong conversion breaks trust.
  • How to use AI responsibly: strict output formats, spending limits, and always letting the user confirm.
  • Designing for roommates means thinking about sharing, permissions, and not overwriting each other's changes.
  • Small details, like snapping, locking, and undo, make a 3D tool feel easy to use.

What's next for Roominate

  • Real-time collaboration, so roommates see each other's changes live.
  • LiDAR and photo-based scanning for exact room dimensions.
  • More retailers, with live prices and stock.
  • User accounts and cloud saving.
  • Layout and product suggestions that fit each room, budget, and housing rules.

Built With

Share this project:

Updates

Submission history