SpaceLift — AI Room Stylist

Inspiration

AI is changing how we solve everyday problems, and one of the most universal yet underserved problems is: my room looks terrible and people are coming over.

This is such a common pain point it has its own thriving community — r/malelivingspace has 1.2M+ members posting room photos begging for help. The current workflow is painful:

  1. Post your room on Reddit and wait hours for strangers to roast you
  2. Browse Wayfair, IKEA, and Amazon — sites that are just indexers and don't understand YOUR room
  3. Try to mentally visualize whether that lamp would actually look good in your space
  4. Buy something, realize it doesn't work, return it, repeat

I thought: what if AI could see your room, tell you exactly what's wrong, find the right products, and show you what the room would look like with those products placed in it — all in one conversation?

What it does

SpaceLift is an AI-powered interior design assistant that turns room makeovers into a 60-second conversation. It integrates seven sponsor tools end-to-end:

  1. Upload a photo of your room
  2. Get roasted — the AI gives you a brutally honest (but charming) design critique, identifying exactly what needs fixing
  3. Browse curated products — the AI searches a product catalog and surfaces items that match your room's needs, scored by relevance
  4. See the redesign — with one click, AI renders a photorealistic version of your room with the selected items placed in it, matching perspective, lighting, and scale
  5. Compare before/after — an interactive slider lets you drag between the original and styled room
  6. Iterate — keep chatting to swap items, try different styles, and re-render until it's perfect
  7. Save to gallery — store your favorite designs for later comparison

The entire flow is conversational. No forms, no multi-page shopping carts — just chat.

Sponsor Integration

SpaceLift leverages seven sponsor tools across AI, infrastructure, security, and development:

Sponsor How we use it
Google DeepMind (Gemini) Powers the entire AI pipeline — Gemini 2.5 Flash for conversational room analysis, design critique, and multi-step tool orchestration; Gemini 3.1 Flash Image Preview for photorealistic room rendering with furniture composited in correct perspective and lighting
Unkey Secures the platform — @unkey/ratelimit throttles the expensive render endpoint to 5 per hour per IP to prevent abuse; @unkey/api provides API key verification on the vision analysis route with fail-open for demo mode
DigitalOcean Production hosting on DigitalOcean App Platform — containerized deployment via a multi-stage Docker build with standalone Next.js output, auto-deploy on push to main, and environment-managed secrets for API keys
Lovable Used during rapid prototyping to scaffold the initial UI layout and component hierarchy — generated the starting React component structure that we then customized with our design system
Assistant UI Powers the chat experience — @assistant-ui/react provides the foundational chat components and runtime, @assistant-ui/react-ai-sdk connects it to our Gemini-backed AI SDK streaming backend, and @assistant-ui/react-markdown renders rich markdown responses with proper formatting
Augment Code Accelerated development across the codebase — used as an AI coding agent for refactoring API routes, debugging AI SDK integration issues, and writing the multi-step tool orchestration logic
Nexla Used to structure and normalize our product catalog data — ensured consistent schema across 18 products with category tags, pricing, and image URLs so the AI agent could reliably query and reason about inventory

How we built it

Frontend

  • Next.js 16 (App Router) with React 19 for the full-stack framework
  • Tailwind CSS 4 for styling with CSS variables for a warm, paper-white design system
  • Framer Motion for smooth animations and transitions throughout the UI
  • Lucide React for consistent iconography

AI / Models (Gemini)

  • Gemini 2.5 Flash — powers the conversational AI agent via the Vercel AI SDK. Handles room analysis, design roasting, product recommendations, and multi-step tool orchestration
  • Gemini 3.1 Flash Image Preview — generates photorealistic room edits by compositing selected furniture into the room photo with proper perspective, lighting, and scale
  • Vercel AI SDK v6 (ai, @ai-sdk/google) — manages streaming responses, tool definitions (search_furniture, render_design), and multi-step reasoning with stepCountIs control

API Security & Rate Limiting (Unkey)

  • @unkey/ratelimit — rate limits the expensive render_design tool to 5 renders per hour per IP, preventing abuse while keeping the demo accessible
  • @unkey/api — API key verification on the vision analysis endpoint, with fail-open behavior for demo mode

Product Search

  • Custom relevance-scored search engine that tokenizes multi-word queries and scores products across name (3x), category (2x), and tags (1x) for ranked results
  • 18-product curated catalog spanning lighting, rugs, wall art, seating, plants, mirrors, storage, and textiles

Deployment (DigitalOcean)

  • Containerized with a multi-stage Dockerfile (deps → build → standalone runner) deployed on DigitalOcean App Platform
  • Auto-deploys on push to main via GitHub integration, with secrets managed through DigitalOcean's environment variable system
  • Declarative infrastructure defined in .do/app.yaml for reproducible deployments

Challenges we ran into

  • AI SDK v6 message format — the Vercel AI SDK v6 changed how tool-call and tool-result messages are structured. Tool results now require structured output objects ({ type: "json", value: ... }) instead of raw objects, and incomplete tool calls must be filtered from conversation history to avoid MissingToolResultsError. Debugging these Zod validation errors in production was a significant time sink.
  • Before/After image state management — the original implementation overwrote the room image with the edited result, making the before/after slider show identical images. Required separating "original upload" state from "working context" state.
  • Container networking on DigitalOcean — internal API calls between serverless functions needed the correct base URL in a containerized environment. Solved by dynamically resolving the app's public URL from DigitalOcean's APP_URL environment variable.
  • Gemini image model consistency — getting the image editing model to reliably place items with correct perspective, scale, and lighting required extensive prompt engineering with explicit instructions for each product category (rugs flat on floor, art at eye level, etc.)

Accomplishments that we're proud of

  • Built a complete AI design workflow — from room analysis to product search to photorealistic rendering — in a single conversational interface
  • The before/after slider makes the transformation tangible and shareable
  • Iterative design works — you can keep chatting to swap items and re-render, with the AI maintaining context about what changed
  • Clean, polished UI with smooth animations that feels like a real product, not a hackathon prototype
  • Rate limiting with Unkey prevents abuse while keeping the demo open for judges

What we learned

  • How the AI SDK v6 handles tool orchestration, multi-step reasoning, and UIMessage ↔ ModelMessage conversion
  • Prompt engineering for image editing models — being extremely specific about placement rules (category-aware: rugs go on floors, art goes on walls at eye level) produces dramatically better results
  • Building relevance-scored search without a vector database — word-level tokenization with weighted matching across name/category/tags is surprisingly effective for small catalogs
  • How Unkey rate limiting integrates with Next.js API routes for per-IP throttling

What's next for SpaceLift

  • Real product catalog — integrate with affiliate APIs (Wayfair, Amazon, IKEA) so users can actually purchase the items
  • One-click checkout — add direct purchase links for recommended products
  • Style presets — let users pick a target aesthetic (mid-century, boho, minimalist, maximalist) before the AI suggests items
  • Room memory — save room dimensions and preferences across sessions
  • Multi-room flows — design an entire home, not just one room

Built With

Try it out

Built With

  • framer
  • next.js
  • react
  • tailwind
Share this project:

Updates