
Prada
Drawstring Pocket Bucket Bag Patent Small
$1,525
Image search is a commodity and we buy ours off the shelf like everybody else. What you are paying for is the tuning that turns a list of near matches into a row worth putting on a product page.
Send your store URL and nothing else. We reply with our rows next to the ones your product pages show today.

Prada
Front Pocket Belt Bag Re-Nylon with Saffiano Leather
$1,075
The page a shopper is on










Two real product pages
Both product pages below are live on the same luxury resale marketplace, a catalog of roughly 60,000 listings, captured on 6 August 2026.
Judging a row needs a yardstick, so here is ours: a slot is in the band if it costs between half and double the product on the page. We chose that, it is arbitrary, and we apply it to both rows. Price is the part you can count. The rest is in the pictures.
The page a shopper is on
Listed at $1,075. The row underneath this is your one chance to show them the next thing.
A shopper is looking at a $1,075 black nylon belt bag. Underneath it, 9 of the 14 slots cost more than double that, including an $11,980 Hermes Kelly, and 4 of them are the same Saint Laurent shoulder bag. Price is the half you can count. The rest you can see: their row answers a flat nylon pouch with bucket bags and a duffle. Ours is 8 flat black nylon Prada bags between $565 and $1,875. Nothing in the ranking pulls toward a brand. The photographs did that.

Prada
$1,525

Prada
$1,545

Prada
$2,325

Gucci
$870

Prada
$1,975

Saint Laurent
$4,110
Same bag, 2 of 4Saint Laurent
$4,075
Same bag, 3 of 4Saint Laurent
$4,110

Gucci
$1,540

Hermes
$11,980

Louis Vuitton
$3,975

Chanel
$6,945

Louis Vuitton
$2,990
Same bag, 4 of 4Saint Laurent
$4,045

Prada
$565

Prada
$880

Prada
$1,875

Prada
$1,735

Prada
$1,150

Prada
$1,745

Prada
$1,280

Prada
$1,500
The page a shopper is on
Listed at $5,970. The row underneath this is your one chance to show them the next thing.
The second one fails more quietly. This is a $5,970 quilted Chanel top handle, and 6 of the 14 slots cost less than half of it, starting at $1,115. Our row puts 1 of its 8 below that line as well, which is why the panel says 7. Then look at the colors. The bag on the page is pink and 10 of their 14 slots are black. Ours has 1. The row is 8 Chanel top handle flaps from $2,200 to $6,590.

Chanel
$5,330

Chanel
$4,960

Chanel
$7,575

Gucci
$1,200

Bvlgari
$1,440

Gucci
$1,115

Gucci
$1,270

Chanel
$5,020
Same bag, 2 of 2Gucci
$1,265

Chanel
$6,785

Chanel
$5,085

Chanel
$3,305

Chanel
$9,155

Louis Vuitton
$2,320

Chanel
$3,215

Chanel
$6,270

Chanel
$3,855

Chanel
$5,055

Chanel
$6,590

Chanel
$2,200

Chanel
$5,020

Chanel
$4,040
Product names, brand names and product photographs shown here belong to their respective owners. They appear to identify real products and real recommendation output. No affiliation or endorsement is implied.
How it works
Nothing goes on your site to see the first version, and we never touch anything behind your login.
The same pages and feeds you already publish for Google. We take the title, the price, whether it is in stock, and one photo per product. You do not have to install anything, write any code, or wait for a developer. Sixty thousand products is a normal size for us.
An open model called Marqo-Ecommerce-B looks at each photo and writes down what it saw as a long list of numbers. Photos of similar things get similar numbers. Finding the closest products to any one product is then just comparing lists of numbers, which takes milliseconds.
Closest is not the same as best. The raw list will hand you the same bag in four colors, a listing that sold last week, a fabric swatch. Six rules take those out.
If a match is really another copy of the product on the page, it goes. On a resale site that is the single biggest source of junk in a row.
Once a model is in the row, the rest of that model is locked out, so one product cannot take four of your eight slots.
Two matches that are near copies of each other become one. We keep whichever is in stock, and the cheaper one. Dropship catalogs full of identical supplier photos need this badly.
We rank first and check stock afterwards, so a row cannot quietly fill up with things nobody can buy.
A fabric swatch looks a lot like a product to a vision model, and one in a row ruins it. They go when the catalog is read, not in a patch later.
We print our rows next to yours and go through them card by card before anything leaves the building. Every catalog, every time.
Every row is worked out ahead of time and stored, so showing one is a lookup rather than a calculation. It goes on the page next to the row you already have, loads on its own without holding up the page, keeps its own space so nothing jumps around, and has an off switch.
How this differs
Most recommendation engines rank on behavior, and the ones that read images treat it as a bolt-on to something else. Both are reasonable products. Neither is built for the part of your catalog that nobody has clicked yet.
| Capability | Behavioral engines | Tag and text matching | Visual add-ons | Juxtafold |
|---|---|---|---|---|
| What the ranking reads | What shoppers viewed and bought together | Description, tags, collection, product type | The image, with whatever filtering the host platform adds | The image, as the ranking |
| What it needs first | Months of order and view history | Clean, consistent metadata | Whatever the host platform needs | One photo per product |
| A product listed this morning | No signal, falls back to popular items | Works if somebody tagged it well | Usually fine | Ranked as soon as it is indexed |
| A product that sells once | Never accumulates enough to rank | Only as good as the tag granularity | Fine, if the visual path is reached | Treated like everything else |
| The long tail of a large catalog | Some compute it only once a shopper lands on the page | Degrades as tagging drifts | Usually fine, if you are paying per request for it | Precomputed for every product, ahead of any traffic |
| Same model repeated in a row | Common, and often not adjustable | Common, fixed with manual rules | Usually left to the merchant | One item per design family, by default |
| A match at four times the price | Rare, because price similarity comes along with behavior | Depends entirely on how the tags were written | Common, since the photo is all it reads | No price rule at all. We count them on your catalog and show you |
A few hundred SKUs with healthy repeat traffic? Your current recommendations probably work and you should keep them. Products bought on a spec sheet, where the photo is nearly irrelevant? Visual similarity has little to offer, which covers most electronics and components. And if your shoppers come to browse styles rather than to find this one thing, lookalikes will compete with what they actually came for.
Big catalogs, where most products have never had enough clicks to rank against anything. Resale, vintage, antiques, art and made to order, where almost every listing is its own product and the history never accumulates. Categories people shop with their eyes, which is bags, furniture, rugs, lighting, apparel and decor. Stores that add products faster than shoppers can generate behavior for them.
If the photo is how your shoppers decide, and most of your catalog is quieter than your bestsellers, this is built for you.
Pricing
One price per store, quoted once we have seen your catalog.
Run us for two months. If you are not happy, for any reason at all, email us and we refund what you paid. You do not have to prove a result or win an argument about attribution.
Sixty days from the day our row goes live. Ask inside that window and the refund is the fees you have paid us, in full. See section 7.
Bring your current invoice or a competing quote and we will come in below it. If we cannot, you will hear that in the same email rather than after a fortnight of meetings.
Applies to a current invoice or a written quote addressed to you and dated within 90 days. Not to free tiers, to anything already bundled into a platform you pay for, or to usage priced infrastructure. One per customer. Nothing here is an offer. Full terms in section 7.
No revenue share. No annual lock in. Cancel on a month's notice after that.
Questions
Usually a few days. Send the store URL, we read your public catalog, build the rows and send you the side by side. There is nothing to install and nothing for your developers to do.
No, and we would rather not have it. Everything we use is on your public product pages. Asking you for behavioral data would undercut the entire argument for the product.
We read the same pages and feeds you publish for search engines and shopping channels, at a polite rate, and we host the images ourselves rather than hotlinking your CDN. We do not touch anything behind a login and we never take customer data.
If you would rather we did not, email us and we will delete your catalog data and take down any material built from it within five business days. That offer is in the privacy policy too, so it is not just something we said once.
No, and we would rather you did not at first. The default is a second module measured against the one you already have, which is the only way either of us learns anything. Replacing an existing widget means matching your selectors and styling, which is onboarding work we quote separately.
Two numbers: clicks on the row, and revenue from the row, both measured against your current row on the same pages. They move fast enough to read in one to three weeks.
Sitewide conversion rate is a slower question. Detecting a ten percent relative lift needs something like 75,000 to 100,000 visitors per arm, which most pilots do not produce, so we treat it as a directional 60 to 90 day number and say so up front.
Shopify is smoothest, because the product feed is standard. Anything publishing a sitemap and structured product data works too. If your catalog is behind a login or aggressively blocks automated access, tell us early and we will be straight about whether it is workable.
Rows are precomputed and cached per product, so serving one is a lookup rather than a calculation. The script loads asynchronously, reserves its own space so nothing jumps around, and has a kill switch. We will not ask you to hide your page while our widget thinks about it.
Almost never. Mixed packshots and lifestyle images are the normal case, and we pick one canonical image per product so the comparison stays fair. Where different suppliers shoot the same category differently, that is exactly the kind of thing we find during the first build and tell you about.