Stand in an upholstery showroom for an afternoon and listen to how people ask for fabric.
Nobody asks for a Martindale rating. They say “something soft, but not the kind that pills”, or “autumn colours, we have a lot of wood in the room”, or “we have two cats, so whatever survives that”. The salesperson listens, walks to the wall, and comes back with three swatches. Usually one of the three goes home.
Now open the same brand’s website. The same buyer is looking at a wall of five hundred swatches, a colour filter with twelve families, a composition filter nobody understands, and a search box that expects the fabric’s name. They scroll for a while, order eight swatches to be safe, and wait a week. Or they leave.
The difference between those two scenes is the whole subject of this post. The salesperson had a conversation. The website has a filter. The question is what it takes to have the conversation online, and the honest answer is that the AI is the smallest part of it.
What the salesperson actually did
Break the showroom moment down and it is three separate skills.
First, they knew the fabrics: composition, weave, rub count, how each one cleans, which ones pill, which ones are stocked. That is data, and they carry it in their head.
Second, they knew what the fabrics are like. Which chenille reads as cosy, which velvet looks formal, which bouclé is the one people call fluffy, which greens sit with oak. None of that is on a spec sheet. It comes from years of watching people touch things.
Third, they understood the buyer. “Survives two cats” means a tight weave, a high rub count, and easy cleaning. “Autumn colours” means rust, ochre, olive and warm brown, and in a room with a lot of wood it means the muted ones. The buyer’s sentence had none of the catalogue’s words in it, and the salesperson translated anyway.
A search that can do what the salesperson did needs the same three things, in the same order. Most brands try to buy the third and skip the first two.
The data is what is missing
Here is what we find, nearly every time, when a brand asks us to make its fabrics findable.
The fabric details are somewhere, but they are seldom in the catalogue. They are hardcoded into one page of the store, typed by hand two years ago. Or they live on the mill’s website, and the brand links to it. The Martindale test is sometimes a number and sometimes a string with spaces in it. Grammage is the same story. One collection has a composition field, the next has it in the description, the third has a PDF.
No search of any kind, clever or plain, can work on that. Before anything else, the fabric data has to exist as a structured set: one record per fabric, the same fields on every record, a number where a number belongs. This is unglamorous work and it is the whole foundation. It is also the part of the project that outlives any search tool you put on top, because the same records feed the product page, the swatch order form and the dealer’s price list.
If you take one thing from this post, take this: the first project is your fabric data, and it is almost always the missing piece.
The knowledge that is on no page
With the data in order, the search can answer technical questions. It still cannot answer “soft”. Softness is not a field.
The second layer is the looks-like and feels-like knowledge, and it has to be taught. Somebody who knows the range writes down, for each fabric, what it reads as and what it feels like in the hand: “this one reads like denim, even though it isn’t”, “warmer than the photo suggests”, “the pile flattens where people sit”. The assistant is trained on that as knowledge it holds, and it never needs to show it on the page.
At MyBed that is 542 fabrics across 21 collections, and the labels were written by the people who sell them, in plain Polish, in an editor. The results move when a label changes. That is the point: the people who know the catalogue improve the search, and no developer is involved.
Given the data and the taught interpretation, the assistant can understand the semantics of a query. “Soft, fluffy, in autumn colours, something that would survive two cats” becomes a ranked shortlist of real fabrics. The buyer’s words never had to appear anywhere in your data. The assistant read the meaning, and ordinary code ranked your real catalogue against it, which is also why it cannot make a fabric up: it picks from what you stock, and when you stock nothing close, it says so or hands over to a person.
The cashmere problem
The third layer is the one brands forget, and it is where the showroom earns its place in an online project.
When a buyer says “cashmere”, do they mean the fabric structure, a fine soft wool blend, or the colour, that pale warm beige that the paint charts named cashmere? In a showroom the salesperson asks. Online, a search that guesses wrong looks stupid, and a buyer who is shown beige velvet when they wanted soft wool assumes the site does not work.
There are dozens of these. “Linen” is a fibre and a look. “Grey” is fifty things. “Something like our old sofa” is a request nobody can answer without knowing the old sofa. “Modern” and “classic” mean different things in Warsaw and in Oslo. Each one is a semantic trap, and the assistant only handles the ones you found first.
So go and ask. Spend time in the showroom with a notebook, or sit with whoever answers the phone, and collect the sentences. What words do people use for the fabric they want? Where do two people use one word for two things? Where does the salesperson ask a clarifying question, and what is it? That list is the specification for the interpretation layer, and the showroom is the only place it exists. This is where an online search project becomes a showroom project, and why the posts about selling in the room are the neighbours of this one.
Keep the technology invisible
The practical rule, once all of that is in place: the buyer should never see it.
The temptation is to show off. Chips, sliders, a “mood” filter, an “AI-powered” badge. That replaces one set of filters with a different set of filters, and the buyer is back to guessing your categories. The showroom did not hand them a form.
One box. They type what they would have said to a person. They get a short ranked list of real fabrics, with a line saying why each one matched. If they want to argue with it, they type again. That is the whole interface, and if the finished thing has more than that on the screen, something in the three layers underneath is not doing its job.
Why this is about the sale
Fabric swatches are the main physical touchpoint of an upholstery brand selling online, and for many brands the only one. A sofa is a picture until the swatch arrives. The fabric is what makes or breaks the piece: it decides how the sofa looks in the room, how it feels, how it ages, and whether the buyer is still happy in a year.
So the better a buyer can pick the fabric, the better the chance the piece fits their life, and the fewer chances there are for the sale to fall over on the way. Eight swatches ordered because the buyer could not narrow is a search that failed, and the buyer doing the salesperson’s job at the kitchen table. Three swatches, one of which goes home, is the showroom conversation, held online.
That is the conclusion, and it is deliberately modest. A search like this leaves your showroom and your photography exactly where they are. It puts the fabric conversation on the website, and it only works if you first write down what your best salesperson knows: the data, and the words your buyers use.
What to track
We track these at MyBed and it is too early to draw conclusions, so there are no numbers here. If you build a search like this, these are the figures that will tell you whether it did its job:
- Swatches per order. The number that should fall. Fewer swatches means the buyer narrowed before ordering.
- The bought fabric among the ordered swatches. The share of orders where the fabric that was finally bought was in the swatch pack. Rising means the shortlist was right.
- Second swatch orders. A second order means the first pack missed. Falling is the goal.
- Searches that found nothing. Each one is a gap with a name on it: a fabric people want and you do not stock, or a word your labels do not yet know.
If you already sell swatches, you can read the first three off your order history today, before any search exists, and you will have your baseline.
Where to start on Monday
- Collect thirty sentences. From the showroom, the phone, the contact form. Real buyers describing the fabric they want, in their words. Mark every word that could mean two things.
- Find your fabric data. Every place a Martindale number, a composition or a grammage is written down. Count the formats. That count is the size of the first project.
- Label twenty fabrics with your best salesperson. What each one reads like and feels like, in plain language. If they struggle to say it, the search will struggle to know it.
Do those three and you have most of what a search needs, whoever builds it. Skip them and buy the box, and you have a filter with a new name.
Ar-range runs AI Search on catalogues with hundreds of fabrics, pulling the records straight from Content Hub. If your buyers describe fabrics one way and your catalogue answers in another, tell us what they search for and we will tell you honestly whether it fits.



