PropTechImage EditingSaaS

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

FrontendNext.js 14 (App Router) / React / TypeScript / Tailwind CSS / shadcn/ui / Radix UI
BackendNext.js Server Actions / Route Handlers / Zod
Database / AuthSupabase (PostgreSQL / Auth / Storage / RLS)
ImageOpenAI Image API (gpt-image-2) / Prompt Compiler
Queue / BillingVercel Cron / Supabase Job Table / Credit Ledger
OperationsOperator Dashboard / Encrypted Provider Keys / OpenAI Capacity Pool
InfrastructureVercel / Supabase

Key Features

01

Structured input for room photos, furniture reference images, furniture types, room type, style, and brand mood

02

Hand-drawn placement annotations with pens, arrows, rectangles, and labels saved as vector JSON and converted into generation instructions

03

Server-side instruction compiler that adds constraints for preserving room structure, floor, walls, windows, fixtures, camera angle, perspective, shadows, and grounding

04

Async generation queue: Vercel Cron worker claims jobs based on workspace concurrency and not_before, then saves outputs to Supabase Storage

05

Credit ledger: reserve before generation, charge on success, release on failure, and support fixed, metered, and capped billing contracts

06

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.