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

  1. 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.

  2. 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
  3. window.propose()1 window, 4 corners proposed / customer moved the top-right corner / light from the left, warm, late afternoon
  4. 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.

  5. Customer · Visualizer

    240 cm wide, about 260 from the rail to the floor. I like the stripe from your homepage.

  6. 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)
  7. 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
  8. 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
  9. 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?

  10. Customer · Visualizer

    The stripe, with blackout lining. And honestly, I'd like someone to come and measure.

  11. 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
  12. 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
  13. An advisor calls the next morning and books a measuring visit. The deposit link goes out only after the measured quote.
The model never chose the stripe's width: code did, from the 240 cm the customer typed. The price came from the retailer's own table, and the customer heard that a screen is not a sample before seeing any price.

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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
  7. 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.

  8. 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.

  9. 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.

Render jobs are keyed by photo, fabric, style and measurements, so a customer who taps 'render' three times pays for one render and sees one result.

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.

Original uploadOnly until the cleaned copy existsMinutesNobody
Cleaned photo, no GPS, faces blurredFurther renders in the same project30 days, unless a quote is requestedThe customer, through a private link
RendersComparing options and sharing with the householdAs the photo; shared links expire after 7 daysThe customer and anyone they share a link with
Photo, window outline and renders in a quote requestAdvice and an accurate quoteWhile the deal is open, then as the privacy notice saysThe advisor team in HubSpot
Measurements and choicesPricing and productionWith the order recordsSales and the workshop
Images sent to the model providerRendering onlyUnder a data processing agreement that rules out training on themThe provider, as processor
UK customers are covered by the UK GDPR, which mirrors these duties. The upload screen says in one line what happens to the photo, and deleting it is one button. More on this kind of work under GDPR-compliant AI development.

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