Skip to content
Live2025-presentFounder / engineer

Sappa

Lets shoppers configure furniture in 3D, preview it in a room, and send the result back to the store

≈10 minhero photo to live room preview

The 3D configurator with procedural geometry, live pricing, and per-part materials
The same sofa as configured and as an AI room render, side by side
Built around a retail catalog, so every combination a shopper picks is one that can be fulfilled

The problem

People buy furniture with their eyes, and a static product photo cannot answer the question they actually have: what does this look like in my size, my fabric, my room. Retailers know this. What stops them is that every existing answer demands a 3D team, a long integration, and a rebuild of the product page.

What I built

Sappa is an embeddable visualisation widget for home-goods retailers, plus the self-serve tooling that gets a catalog into it. A shopper picks size, colour, material and options, and sees the product update live. The retailer sends a catalog and goes live on their existing store, typically within a day, with no developers on their side.

One embed, three modes

One embed loads in three different modes depending on what the retailer sells:

  • 3D configurator for modular sofas and similar products. The model rebuilds live as the shopper changes size, shape or fabric.
  • 2D visualiser for a full-page photo catalog with room rendering.
  • 2D product widget, an inline strip that swaps colours and materials on real product photography, with no 3D model required at all.

All three share the catalog layer, internationalisation, analytics and the embed SDK. Only the 3D path pays for the engine assets. That decision is why a rug retailer and a sofa retailer can run the same product without either carrying the other's weight.

How the 3D stays reliable

The 3D model is generated from the retailer's product rules instead of being modelled by hand for every size. That is what lets a shopper drag a sofa from 180cm to 240cm and watch it rebuild, rather than jump between a few pre-made versions.

The 3D engine, product rules and pricing are kept separate from the shop page. That keeps the embed fast and makes it much harder for a visual change to break the cart. When the shopper is done, their choices go straight back to the retailer's checkout.

Modular furniture has geometry rules that are easy to get subtly wrong. Each module owns its own parts, so legs sit at each footprint rectangle's corners rather than on the overall bounding box, otherwise an L-shaped sofa grows a leg floating in the notch. The back stack orders rear to front (back frame, back cushion, seat cushion) with the seat starting in front of the back so they never intersect. A chaise removes the arm on its side, and cushions size to usable width so they never pierce an armrest.

The AI render pipeline

Studio 3D answers "what does it look like". It does not answer "what does it look like in a room". A separate variation pipeline takes the configured product and produces photorealistic room renders, so the site can show the same sofa as clean geometry and as a furnished living room side by side.

The marketing site, with the 3D and rendered views compared directly

Getting catalogs in

The part that decides whether this is a product or a consultancy is onboarding. A setup assistant takes the retailer's catalogue in whatever format they already have and turns the products, materials and rules into a working widget. Those rules matter commercially, not just visually: shoppers can only pick combinations the retailer actually sells, so every order is one the store can fulfil.

Distribution is through embed plugins for Shopify, WooCommerce, Wix and Magento, so the install is a script tag rather than a project. Everything is bilingual, English and Hebrew, with full right-to-left support.

Building something like this?