Furniture Staging SaaS for Real Estate
A SaaS for turning unfinished or empty property photos into furnished listing images using furniture references, text instructions, and placement annotations.
Challenge
Photos of unfinished or empty properties often fail to communicate a lived-in image, while creating model-home-style listing images through photography and staging is costly and slow. The product needed faithful furniture reference reproduction, preservation of room structure, camera angle, and perspective, plus an operations foundation for stable multi-company generation workflows.
Solution
Built an image-editing SaaS on Next.js App Router + Supabase, combining room photos, furniture references, placement annotations, and structured inputs. Implemented server-side instruction building for gpt-image-2, credit reservation and charging, a Vercel Cron-based worker, and OpenAI key/capacity management.
Result
Built an MVP for real estate listing images with source-aspect PNG output, support for 100 images/day per company, and workspace, contract, and credit management.
Team
1 member, MVP phase
Requirements, LP, workspace UI, database, generation worker, operator dashboard
Role
Owned requirements, LP, workspace UI, database design, generation worker, and operator dashboard.
Reworked an existing SaaS foundation into a real-estate-focused 2D image compositing product.
Tech Stack
Key Features
Structured input for room photos, furniture reference images, furniture types, room type, style, and brand mood
Hand-drawn placement annotations with pens, arrows, rectangles, and labels saved as vector JSON and converted into generation instructions
Server-side instruction compiler that adds constraints for preserving room structure, floor, walls, windows, fixtures, camera angle, perspective, shadows, and grounding
Async generation queue: Vercel Cron worker claims jobs based on workspace concurrency and not_before, then saves outputs to Supabase Storage
Credit ledger: reserve before generation, charge on success, release on failure, and support fixed, metered, and capped billing contracts
Provider capacity management: encrypted OpenAI keys, organization/project/model-level IPM control, cooldown, and rescheduling on 429 errors
Technical Highlights
Prompt Design for Product Fidelity
Rather than passing user text directly to the model, the server compiles prompts that prioritize furniture reference images, preserve room geometry, and prevent pasted-looking composites.
Async and Billing-Aware SaaS Operations
Separated generation from the UI with a job table and worker, then connected job state to credit reservation, charging, release, retries, and usage events.
Multi-tenant Operator Management
Designed workspace-based data separation with Supabase RLS, operator screens for contracts and credits, and provider capacity controls for scaling OpenAI usage.