All case studies
Case study

How a franchise network let buyers search 100,000 products with a photo

Buyers on a promotional-products franchise network knew what they wanted but not what it was called, and keyword search across more than 100,000 products could not help them. An AI search now finds products from a photo, a phrase, or both, on the head-office site and every franchise storefront.

What changed

  • Finding a product used to depend on guessing its catalogue name. Now a buyer can upload a photo and get the closest matches.
  • Text, image and mixed searches run against one index of 103,632 products and 192,069 vectors.
  • Every franchise storefront got the same search through one widget, with its own exclusions and price rules applied.
  • The index stays in step with the live catalogue on its own: changed, hidden and discontinued products are synced incrementally.
An image search on the live site: a photo of a handheld fan uploaded, a suggested category, and the three closest products at 92.9%, 89% and 85.8% similarity
A photo of a handheld fan in; the suggested category and the three closest products out, each with its similarity.

Problem

A buyer ordering 300 branded fans for a summer event rarely knows the product is filed as a "mini handheld fan with phone stand." They have a photo from a competitor’s flyer, or a picture in their head, and a search box that only matches the exact words in a product title. On a catalogue of more than 100,000 items, a wrong word returns nothing, and a buyer who finds nothing leaves.

The network made the problem bigger. More than 2,000 franchise storefronts sell from the same catalogue, each with its own address, its own products switched off and its own prices. Any new search had to work on all of them at once, without each franchise owner touching code, and without the head office running two thousand copies of anything.

Solution

The search is a separate service that sits beside the existing site rather than inside it, so nothing in the old shop had to be rebuilt.

Search by photo, by words, or both. Every product’s picture and description are turned into vectors by an embedding model and stored in one search index. A buyer can upload or paste a photo, type a plain description, or combine the two, and the closest products come back ranked by similarity.

Three answers, not a wall of results. Each search returns the three closest products, a longer list of related ones, and the category the buyer is probably looking for, so a near miss still leads somewhere.

One index, every storefront. All franchise sites share the same index. A small widget adds a camera button beside each site’s existing search box, and each storefront’s own rules are applied at query time: products it has switched off are hidden, its own prices are shown, and links go to its own pages.

In step with the catalogue. A sync worker reads the live product database read-only and re-indexes only what changed, so a product taken off sale disappears from search without a full rebuild. Only items on sale and on display are ever returned.

Built to stay up. Results are cached, uploads are checked for format and size before they are processed, and every storefront and visitor is rate-limited, so one heavy user cannot slow the search for everyone else. Searches and clicks are logged, and a quality report shows which queries find nothing.

The related products for the same search: eight more handheld fans, each with its similarity score and price (opens full size in a new tab)
Below the top three, related products in order of similarity.

Result

A buyer can now search with what they have. A photo of a product, a description in their own words, or both, returns the closest items in the catalogue, with how close each one is.

The whole network got it at once. The head-office site and more than 2,000 franchise storefronts run the same search from one index of 103,632 products, each with its own exclusions and prices, and none of them had to change their shop to get it.

The catalogue and the search no longer drift apart. Changes in the product database reach search through incremental sync, so a discontinued item does not keep turning up in results.

The search is in daily use across the network. The next step is using its search and click logs to tune ranking for each kind of storefront.

More reading