Use caseAI product feature
A room visualizer that hangs your real fabrics in the customer's own window
Customers upload a room photo and see your fabrics in their own window at true pattern scale, then buy or send a made-to-measure request with the photo.
A blueprint, not a client story. The business described is illustrative; the architecture, integrations and trade-offs are real, and this is how I would build it. By Ergini, .
The short version
A visualizer on your store: the customer uploads a photo of the room, confirms the window, enters its width, picks fabrics and sees each one in their own space at its real pattern scale. They compare options side by side, then add to cart or send a made-to-measure request that reaches HubSpot with the photo, measurements and choices. Renders are labeled as visualizations, room photos are deleted on a schedule, and prices always come from your own calculator.
- Best for
- Curtain, blind and wallpaper retailers whose customers order stacks of samples and still cannot picture the result in their own room.
- Connects to
- Shopify, Image generation model, Fabric and product library, HubSpot, Stripe, EU object storage
- The AI does
- Proposes the window outline and light direction from the photo, relights the fabric so it looks hung, and helps the customer narrow the range in conversation.
- People do
- Approve which fabrics appear in the visualizer, handle made-to-measure requests, and confirm measurements before anything is cut.
- Built as
- AI Integration, usually $3.5K - $15K
A kitchen table covered in fabric samples
Take a made-to-measure curtain and blind retailer in Utrecht with its own workshop, selling online in the Netherlands, Germany and the UK. The range runs to about 300 fabrics across pleated curtains, roman blinds and roller blinds, every order cut to the customer's measurements. The store is on Shopify with a price calculator for widths and drops, and the free sample service is the busiest page on the site.
Samples settle color and feel. They say nothing about what a bold stripe does across a three-meter window, or how a linen sheer looks with the evening sun behind it. So customers order six samples, then six more, then call the showroom to ask whether 'Havik Stripe' will be too busy in a small living room. Some never decide. Some decide wrong.
Deciding wrong is expensive for both sides. Goods made to the consumer's specifications are one of the exceptions to the EU's 14-day right of withdrawal, so a made-to-measure curtain cannot simply be sent back, and customers know it. That is a large part of why they hesitate. The retailer carries some of the risk anyway, through goodwill remakes that cost fabric, workshop hours and a second delivery of a long, bulky parcel.
Generic AI room design apps do not solve this. They will hang a lovely 'sage linen curtain' that is not in the range, at a scale nobody measured. This retailer needs something narrower and harder: its own fabrics, at their real pattern scale, in the customer's own window, with a clear route to the cart or to an advisor.
Choosing curtains from swatches, and from a render
From samples alone
- Order a stack of free samples and wait for the post
- Hold a 20 cm swatch against the window and imagine it three meters wide
- Call the showroom during opening hours to ask whether a pattern is too busy
- Measure alone, and hope the calculator's defaults for fullness and drop are right
- Commit to a curtain that cannot be returned once it is cut
With the visualizer
- Upload a phone photo of the room from the product page, at ten in the evening, without calling anyone
- See each pattern at its true repeat for the window width the customer entered
- Compare three fabrics, linings and pleat styles side by side, in the room's own light
- Order samples of the two finalists only, from the same screen
- Buy a standard size, or send a made-to-measure request with photo and measurements attached
One evening session and the calls behind each render
What the customer sees is a short conversation and three pictures. Behind them, code handles the photo, the scale and the price, and the model only handles light.
Visualizer on a fabric page, Thursday 21:40
Customer · Visualizer
Here's our living room, the big window on the left. I want something that softens the evening sun but isn't too dark during the day.
- photo.ingest(file: "IMG_4471.HEIC")EXIF removed, including GPS / resized to 2048 px / 1 face detected in a framed photo on the wall, blurred before storage
- window.propose()1 window, 4 corners proposed / customer moved the top-right corner / light from the left, warm, late afternoon
Assistant · Visualizer
Thanks, I'm the shop's AI design assistant. How wide is the window frame, and how far is it from the rail to the floor? Without measurements I can still show a preview, but the pattern size will only be approximate.
Customer · Visualizer
240 cm wide, about 260 from the rail to the floor. I like the stripe from your homepage.
- library.search(opacity: ["sheer", "dim-out"], room: "living", in_stock: true)14 fabrics / shortlist: Havik Stripe Ink (dim-out), Duin Linen Sand (sheer), Veld Olive (dim-out)
- render.compose(fabric: "havik-stripe-ink", style: "double pleat", fullness: 2.0, width_cm: 240, drop_cm: 260)stripe repeat 8 cm placed at 7.4 px per cm on the window plane / geometric composite ready
- render.harmonize(mask: "curtain+shadow")relit for warm light from the left / pattern similarity to composite 0.94 / color difference Delta E 1.6 / pass
Assistant · Visualizer
Here are the three side by side, each at its real scale for a 240 cm window. This is a visualization and colors vary between screens, so I'd order free samples of your favorites before deciding. Shall I price floor-length curtains in any of them?
Customer · Visualizer
The stripe, with blackout lining. And honestly, I'd like someone to come and measure.
- price.quote(fabric: "havik-stripe-ink", lining: "blackout", width_cm: 240, drop_cm: 260)EUR 486.00 from the retailer's price table / measurements entered by the customer, not verified
- hubspot.create_deal(pipeline: "made-to-measure")deal 18873 / photo, window outline, 3 renders, measurements and indicative price attached / 2 samples ordered / owner: NL advisors / call-back consent recorded
- An advisor calls the next morning and books a measuring visit. The deposit link goes out only after the measured quote.
Under the render: geometry in code, light from the model
The fabric's pattern and the price never pass through a generative model. The model's job is light, folds and shadows inside a mask, and code checks afterwards that it kept to that job.
01 Trigger · Visualizer widget
A customer uploads a room photo
From a product or fabric page, usually on a phone. The file goes straight to EU storage through a signed upload URL, and nothing is sent to any model yet.
02 Plain code
Clean the photo first
Strip EXIF metadata, including the GPS position, and downscale. A standard face detector, not a generative model, finds people and framed photos, and they are blurred before anything else sees the image.
03 AI model · Vision model
Read the room
A vision model proposes the window's corners, the wall plane, and the direction and warmth of the light. The customer confirms or drags the corners, because every later step depends on them.
04 Plain code
Place the fabric at its real scale
The width the customer enters sets pixels per centimeter on the window plane. Code tiles the fabric's flat scan at its recorded pattern repeat, gathers it at the style's fullness and warps it onto the curtain shape in perspective. Without a measurement, the render is marked approximate.
05 AI model · Image model API
Relight and blend
The image model works only inside a mask around the curtain and its shadow, adding folds, light through the fabric and contact shadows, so it looks hung rather than pasted. Its instructions forbid changing the pattern.
06 Decision
Is the render faithful enough to show?
Code compares the relit render with the geometric composite.
- Pattern similarity and color difference inside tolerance then shown, with the visualization label
- The model altered the pattern or the color then one retry, then the plain composite is shown instead: less pretty, still true
- A fabric flagged as hard to render, such as velvet or metallic thread then shown with a stronger note, and the sample button first
07 Plain code · Shopify Storefront API, HubSpot API
Price it and hand it on
Standard sizes go to the Shopify cart as the right variant. Made-to-measure prices come from the retailer's own calculator, never from the model. A request for help, or measurements outside the workshop's limits, becomes a HubSpot deal.
08 Person · HubSpot, Stripe
An advisor confirms before anything is cut
The advisor opens the deal with the photo, the marked window, the renders compared and the samples ordered. Measurements are confirmed by phone or a measuring visit, and the Stripe deposit link goes out only after a measured quote.
09 Result
Labeled renders, photos on a clock
Every render carries a visible visualization caption and machine-readable marking. Photos from sessions without a quote request are deleted after 30 days; photos attached to a deal follow the privacy notice.
Why most room renders cannot be trusted with a fabric
A render that sells the wrong curtain is worse than no render at all. These are the specific ways it happens, and what the build does about each.
Pattern scale that is wrong by half
A stripe at twice its real width is a different curtain. Scale comes from the customer's measurement and the repeat recorded in the fabric library, and a fabric without a recorded repeat stays out of the visualizer until someone has measured it.
Color on a phone at night
A render is only as honest as the screen showing it. Every render is labeled as a visualization, the sample button sits directly under it, and fabrics the team knows photograph badly carry a stronger note.
Light the model invents
Sheers and dim-out fabrics look completely different with daylight behind them. The customer can switch between day and evening light, and blackout or dim-out claims come from the fabric specification, never from how dark a render looks.
Windows the geometry does not cover
Bay windows, sloped ceilings, a radiator under the sill or a door beside the window break simple geometry. The customer can adjust the outline; for shapes the build does not support, the visualizer says so and offers an advisor instead of guessing.
Measuring from the photo
Reading a window's width off a photo is tempting, and without a reference object the error is large. Photo estimates drive previews only; prices use typed measurements, and every made-to-measure order is confirmed by a person before cutting.
Cost spikes at the evening peak
Each relit render is a paid API call, and the evening after a TV spot is when everyone uploads. Renders are cached, each session has a render budget, and when the provider rate-limits, the plain composite appears at once and the relit version follows.
Room photos are personal data: what is kept, and for how long
A photo of someone's living room can show their family and their paperwork, and its metadata can give away their address. Retention is part of the build, not a paragraph in the privacy policy.
| Data | Why it is kept | How long | Who can see it |
|---|---|---|---|
| Original upload | Only until the cleaned copy exists | Minutes | Nobody |
| Cleaned photo, no GPS, faces blurred | Further renders in the same project | 30 days, unless a quote is requested | The customer, through a private link |
| Renders | Comparing options and sharing with the household | As the photo; shared links expire after 7 days | The customer and anyone they share a link with |
| Photo, window outline and renders in a quote request | Advice and an accurate quote | While the deal is open, then as the privacy notice says | The advisor team in HubSpot |
| Measurements and choices | Pricing and production | With the order records | Sales and the workshop |
| Images sent to the model provider | Rendering only | Under a data processing agreement that rules out training on them | The provider, as processor |
Who does what in a visualizer session
The AI model
Propose window corners, wall plane and light direction
Reading a photo is a vision task, and the customer confirms the result.
Relight and blend the curtain into the room
Folds, shadows and light are where the model adds realism.
Ask about the room and suggest fabrics from the library
Conversation narrows 300 fabrics to three, from in-stock items only, and says up front that it is an AI, as Article 50 requires.
Plain code
Place the pattern at its true scale
Geometry from measurements and recorded repeats, never generated.
Check each render against the composite
Faithfulness is measured, not trusted.
Price made-to-measure and hand off to the cart or HubSpot
Prices and promises come from the retailer's own rules.
Delete photos on schedule
Retention is a job that runs, not a policy that hopes.
A person
Approve new fabrics for the visualizer
Someone checks that each fabric renders true before customers see it.
Confirm measurements and quote made-to-measure orders
Cut fabric cannot be uncut.
An AR viewer or visualization SaaS, or a visualizer built around your fabrics?
For products with a fixed shape, buy first. AR viewers that place a 3D model in the room through the phone's camera suit sofas, tables and lamps, and visualization platforms such as Roomvo let shoppers see flooring, tiles, wallpaper, rugs and furnishings in a photo of their own room. If your range fits those categories and you can supply the assets, that is faster and cheaper than any build, and I would say so.
Curtains and blinds are harder for every tool. They are made to measure, they drape, and their look depends on the light behind them, so there is no fixed 3D model to place. Generic AI room design apps restyle a room beautifully with products you do not sell. A custom visualizer earns its cost when fabric accuracy matters, when the range is made to measure, and when a render should end as a qualified lead with the photo and measurements attached.
The two combine: an AR viewer for the furniture, the custom visualizer for fabrics, one Shopify cart. The fabric library the visualizer depends on (flat scans, repeats, widths, opacity) also makes the catalog readable to AI shopping assistants, as in the AI-readable catalog, and the render checks share their approach with on-model imagery.
How you would know it is working
A blueprint has no results to report, so here is what I would measure from the first week instead, on your own data.
- Samples per order
- How many samples customers order before buying, visualizer users against everyone else. Fewer, better-chosen samples means the render is doing its job.
- Session to order or request
- Orders and made-to-measure requests from visualizer sessions, against product-page visitors who did not use it, over the same weeks.
- Remakes and disputes about appearance
- Made-to-measure orders remade or disputed because the fabric 'looked different', before and after launch.
- Render fallback rate
- How often the faithfulness check rejects the relit render, per fabric. A high rate points at a scan to redo or a fabric to remove.
- Model cost per session
- Image-model spend divided by sessions, checked weekly against the render budget.
What a build like this costs
This is built as AI Integration, which runs $3.5K - $45K overall. A build like this one usually lands in the single AI feature tier: $3.5K - $15K, 1-3 weeks. The first working version runs on your real data well before the end of that window.
What it costs to run
Each relit render is one image-model call. At Google's list prices in September 2026 that is $0.039 per 1024-pixel image on Gemini 2.5 Flash Image, or $0.067 per 1K image on Gemini 3.1 Flash Image, so a session with a dozen renders costs well under a dollar. Caching and a per-session budget keep curiosity from turning into a bill.
What moves the price
- The state of the fabric library: flat scans with recorded repeats and color references, or scanning to do first
- Product types: curtains only, or also blinds, rails and furniture, each with its own geometry
- Whether the made-to-measure calculator can be called as an API or has to be rebuilt
- Lead handling: a HubSpot deal, or a full quote-to-deposit flow with Stripe
- Languages and markets: Dutch, German and English, each with its own privacy notice
Who this is for
- Made-to-measure curtain and blind retailers selling online, where a wrong choice cannot be sent back
- Wallpaper and upholstery fabric brands whose patterns look different at full scale than on a swatch
- Furniture and decor retailers with bulky items that are expensive to take back
- Home brands that want visualizer sessions to reach HubSpot as qualified leads, with photo and measurements
Questions people ask about this
Can AI show my curtains in a customer's own room?
Yes, if the fabric is placed by code and the model only handles light and folds. A generative model on its own redraws patterns and invents scale. A visualizer built to sell uses your fabric scans, the pattern repeat from your library and the window width the customer enters, then checks every render against that geometry before showing it.
How accurate is an AI room visualizer?
Accurate on pattern scale and placement when the customer types the window's measurements; approximate on color and light, because phone cameras and screens vary. That is why each render is labeled as a visualization with the sample button beneath it. Measurements for made-to-measure orders are confirmed by a person and never taken from the photo.
Is a customer's room photo personal data under GDPR?
Often, yes. It can show people, family photos and documents, and its metadata can reveal where the customer lives. The build strips location data on upload, blurs faces, keeps photos for 30 days unless a quote is open, and sends images to model providers only under a data processing agreement that rules out training on them.
Do AI room renders have to be labeled?
I label them whatever the legal reading. Article 50 of the EU AI Act requires providers of generative systems to mark output images in a machine-readable way, with no grace period for systems launched after 2 August 2026, and requires disclosure of deep fakes. A render of a real room is best presented as exactly what it is, a visualization. The Article 50 guide covers the rest.
What does it cost to add a room visualizer to a Shopify store?
Usually the first tier of AI integration: one AI feature added to the store you already run, with the fabric library, the render pipeline, the cart handoff and a HubSpot lead. A library that needs rescanning, blinds and furniture on top of curtains, or a full quote-to-deposit flow move it up. Renders cost cents each at current list prices.
Sources
- Your Europe: guarantees and returns, including goods made to order
- Directive 2011/83/EU on consumer rights, Article 16 exceptions (EUR-Lex)
- Regulation (EU) 2024/1689, the EU AI Act, Article 50 (EUR-Lex)
- Faegre Drinker: Article 50 guidelines and the marking grace period
- Gemini API pricing (image generation)
- Roomvo room visualization