Pivot AI LabCase study · Port2Port

Search that reads the sentence, not the keyword.

Port2Port is South Africa’s leading online wine and spirits marketplace. In August 2026 it went live with a search box that takes a sentence instead of a keyword. You type what the evening actually looks like, and it comes back with a short list and the reason each bottle is on it. We built it with their team.

CompanyPort2Port
Our roleAI engineering and implementation partner
ScopeHybrid Search, end to end
LiveAugust 2026, port2port.wine

The problem with searching a wine site

Catalogue search is a filing system. It assumes you already know the name of the thing you want, or at least the category it lives in. That works for someone who has come to buy a 2021 Swartland Syrah, and it works badly for everyone else.

Wine makes the mismatch worse than most categories. The catalogue is indexed the way the trade thinks: producer, cultivar, region, vintage, critic score. Customers think in occasions. What is for dinner, who is coming, how much to spend, whether they want to look like they know what they are doing. There is no field for any of that, so the customer has to translate their own need into the shop’s vocabulary before the shop can help them. Most people do not bother.

The failure is not subtle. Typed into the old search, “a bold red to impress my dinner guests” returned zero results, while the bottle that answers it sat in stock the whole time.

What we built

One search box that accepts a sentence. It sits where the old search box sat, and the old behaviour still works: type a producer name and you get that producer.

Type a sentence and the suggestion panel opens with what the system understood, written out as labelled attributes, and a small number of specific bottles underneath, each with a one-line reason. Press through and the results page opens with the same short list on top of the full filtered catalogue, so you can carry on browsing the normal way.

Port2Port search suggestion panel showing the query ‘a crisp white for a hot afternoon by the pool’ read as colour, style, context and goal, with three wine recommendations and a reason for each.
The suggestion panel. Captured on port2port.wine, August 2026.

What it does with a sentence

Three real queries, run on the live site in August 2026.

“A bold red to go with a braai”

Colour · RedStyle · Bold & structuredContext · Pair with braai
  • Yalumba The Signature 2016. A bold blend of Cabernet Sauvignon and Shiraz, for grilled meat.
  • Radford Dale Vinum Grenache 2023. Grenache’s fruit and spice against smoke.
  • Aaldering Mixed Red Wine Case. Variety, for a table of people.

“A crisp white for a hot afternoon by the pool”

Colour · WhiteStyle · CrispContext · By the poolGoal · Relax
  • Cavalli Wine Estate Reserve White 2025. Refreshing, built for warm days.
  • Mullineux Old Vines White 2024. The step up, if the afternoon deserves it.
  • Domaine Famille Paquet Saint-Veran Les Cras 2020. The interesting one, for sharing.

“Something to celebrate a promotion, around R900”

Budget · Around R900Goal · Celebrate
  • Benguela Cove Vinography Cabernet Sauvignon 2021. Rich, for an occasion.
  • Rascallion Wines 45 RPM 2024. An unusual blend, and a conversation.
  • Riebeek Valley Wine Co RAAR Shiraz Carbonic Maceration 2025. Bold, and a safe bet.

Note what changes between the three. The system does not force every sentence through the same set of fields. A braai query produces colour, style and food context. A budget query produces budget and intent. It reads what is actually there and leaves the rest alone, because the alternative is inventing constraints the customer never asked for.

How it works

The build is called Hybrid Search, and the name is doing real work rather than marketing. Two different searches run at the same time and their results are blended.

  1. Listen. It reads the whole request rather than picking keywords out of it.
  2. Understand. It pulls out what actually matters in the sentence: colour, style, budget, the occasion behind the ask. Only what is there.
  3. Match. One search matches the words. The other matches the meaning. Both run, and the results are blended. This is the hybrid part.
  4. Guide. A shortlist is chosen from what came back, each pick carrying a one-line reason drawn from that bottle’s own details.

Why two searches instead of one

Word matching is precise and literal. It finds the bottle whose name or description contains what you typed, and it only ever knows the words it was given. Meaning matching finds bottles similar in character and style even when none of the words line up, because it understands that “bold” points at a particular kind of wine.

On its own, each fails in a predictable way. Word matching returns nothing for a sentence. Meaning matching drifts away from the specific bottle you actually named. Run together, the shopper gets the precisely named bottle they asked for and the ones they would never have found by name alone.

It also means nothing was taken away. Type a producer and a vintage, or a cultivar and a price ceiling, and the answer is as instant as it ever was. The new behaviour only appears when the query needs it.

It shows its working

Whatever the search understood is written out on screen as tags. Not buried in a debug panel, not implied by the results, but stated plainly: red, bold and structured, to impress, dinner party, under R500.

This is the part that gets skipped most often, and it decides whether people trust the thing. A recommendation you cannot interrogate is a guess. With the reading on screen, a shopper can see at a glance whether they were understood, and adjust rather than start the sentence again.

Port2Port search results page opening with three recommendations, the understood intent shown as tags, and each wine card carrying a reason, price and add to cart control.
The results page opens with a short guided list and the understood intent as tags, with the full filtered catalogue below it.

The shortlist, and what it is not allowed to do

The rules around the shortlist matter more than the shortlist itself.

Before and after, on the same sentence

“A bold red to impress my dinner guests”

  • Before. Zero results. The shopper gives up, or retypes keywords they may not know.
  • After. The same sentence. The reading appears as tags, a full result set arrives, and a short guided list sits on top of it with a reason for each bottle.

That is the whole case. Not that search got cleverer, but that a customer who arrived with a sentence instead of a search term stopped hitting a dead end.

This is a live system on a working shop, not a finished object. It handles occasion, food, style and budget language well, and it is still being tuned at the edges. The queries that expose those edges are the ones we are most interested in.

How the work ran

We were the AI engineering and implementation partner on this. In practice that meant sitting with the Port2Port team rather than taking a brief and disappearing: working out how wine customers actually buy, agreeing what a good answer looks like, and shipping in pieces that could be used and judged along the way instead of presenting something large and theoretical at the end.

Most of the difficulty was never the model. It was the translation layer between how a customer talks and how a catalogue is indexed, and the judgement about what the system is allowed to say when it is not sure.

More from the Pivot AI Lab

Try it

Go to port2port.wine and type a real sentence into the search box. Something you would actually say. If it gets it wrong, we would like to know what you typed.

More from the AI Lab Start a conversation