The problem
People spend thousands on renovations without seeing the result first. Existing AI tools either regenerate the whole photo, so the actual room disappears, or need design skills.
What we built
One photo in, a photoreal preview out, through two separate generation systems.
Targeted editing
A custom canvas mask editor (brush, erase, undo, mask expansion). The mask is the single source of truth; unmasked pixels are never touched.
Room transform
No-mask restyling that holds perspective, walls, windows and proportions constant while changing furniture, materials, lighting and palette, from a reference image or preset.
Engineering
- All generation runs in Supabase Deno edge functions with their own JWT validation; the Gemini key lives only in server secrets.
- Postgres holds profiles, a credit ledger and generation events behind restrictive RLS — only the service role writes. Balances are maintained by database triggers, never by the client.
- Failure semantics: a failed generation deducts zero credits, creates no record and never blanks the screen.
- Versioned prompt contracts with a debug panel showing the exact prompt the backend built.
- Privacy-gated analytics: no autocapture, no session recording, allowlisted event properties.



