ModernisationAI DiscoveryWine Trade

Your wine list is a PDF. Here's what ChatGPT does with it.

Jay Qin··8 min read
Comparison table of what an AI assistant can read from a wine importer's PDF price list versus a list page on its website: producer, vintage and price are unreliable in the PDF, while stock, lead time and the date are missing; the list page has all six.
Diagram: SGAI Studio

Most wine importers in Singapore still send the trade a PDF. It looks good, the regulars know how to read it, and it has worked for twenty years. But the person reading it is changing. More and more often it is a sommelier's AI assistant, and the PDF tells that assistant far less than you think. Here is a worked example, with a fictional importer and every assumption listed at the end.

Wooden wine crates from a Burgundy house stacked as shelves, holding bottles in a cellar shop.
Photo: Tim Durand / Pexels

The question

It is Tuesday afternoon. The head sommelier of a restaurant in Tanjong Pagar has a private dinner on Thursday and a gap on her list. She types into her assistant:

"Find small-producer red Burgundy, village or premier cru, under S$150 a bottle trade, that a Singapore importer can deliver tomorrow. Six bottles of each."

The assistant searches. It finds several importers. One of them is Vintners' Row Imports, a fictional importer established in 1998, with an excellent Burgundy book built over decades of visits to small growers. Exactly what she wants.

Vintners' Row's website has a home page, an About page with the founder's story, and a link: "Download our 2025 trade list (PDF)".

What the assistant does with the PDF

First, it has to get the text out. A PDF is a file made for printing. It stores where each piece of text sits on the page, not what that text means. Google lists PDF among the file types it can index, and notes that such files "require a specific parser to extract the human-readable text" (Google Search Central, checked 8 Nov 2026). Parsing works well on simple documents. A price list is not simple.

Here is what tends to go wrong with a designed, multi-column list:

  • Columns come apart. The producer is in one column, the vintage in another, the price in a third. Extracted as text, they can arrive in the wrong order, or one column after another. The W3C's accessibility guidance warns that pages with "graphics, tables, footnotes, side-bars" may not convert with the correct logical reading order (W3C WAI technique, page last edited 18 Oct 2012, checked 8 Nov 2026).
  • Region headers get lost. "Côte de Nuits" is printed once at the top of a block. Each wine below it inherits that heading for a human reader. After extraction, the link between heading and wine is easy to lose.
  • Scanned or image pages give nothing. If any page was exported as an image, there is no text to extract at all, unless the assistant runs character recognition and trusts the result.

Suppose the extraction goes well. Then the assistant hits the bigger problems, which have nothing to do with technology.

What the sommelier askedWhat the PDF says
Small producer, red BurgundyProducer names, if extracted cleanly. "Small" is not stated anywhere.
Under S$150 tradePrices, if the columns survived. Are they per bottle or per case? With GST or without? The header says, on page 1.
In stock nowNothing. A price list is not a stock list.
Delivery tomorrowNothing. Delivery terms are in the email the regulars received in 2019.
Is any of this current?"2025 trade list". Today is November 2026.

The last row is the one that decides it. A careful assistant sees a list labelled 2025 and has no way to know which wines have sold out since. It cannot honestly tell the sommelier "Vintners' Row has these in stock for tomorrow". So it doesn't.

What the shortlist says

Here is the kind of answer the sommelier gets (our illustration, not a recorded response):

"Importer A lists four village Burgundies under S$150 with stock shown and next-day delivery for orders before 4pm. Importer B lists two, stock shown, two-day delivery. Vintners' Row Imports has a strong Burgundy range in a 2025 price list, but stock and delivery times are not published. Contact them to confirm."

Vintners' Row has the better wines. It is mentioned third, with a warning attached. On a Tuesday afternoon with a Thursday dinner, the sommelier calls Importer A.

What a list page looks like instead

The fix is not a new design. It is the same information, published as text on a web page, with three columns your PDF never had: stock, lead time and the date.

Here is what a few rows of Vintners' Row's list page could look like (fictional wines, fictional prices):

ProducerWineVintageBottle, trade, excl. GSTIn stockLead time
Domaine A. FictifGevrey-Chambertin2021S$12836Next day
Domaine B. ExempleChambolle-Musigny 1er Cru2020S$1468Next day
Domaine C. ModèleSavigny-lès-Beaune2022S$7206 weeks, next shipment
Domaine D. ImaginaireVolnay2021S$11824Next day

And above the table, three plain sentences:

"Trade list for restaurants, hotels and retailers in Singapore. Orders confirmed before 4pm are delivered the next working day within Singapore. Stock last updated 8 November 2026, 9:00."

Now take the sommelier's question again. Producer, vintage, price, stock and lead time are all in one row, in text, together. The date tells the assistant how fresh the numbers are. The assistant can answer with confidence: "Vintners' Row has the Gevrey-Chambertin 2021 at S$128, 36 in stock, next-day delivery."

The details that matter

  • One wine per row. Never merge cells or group wines under a heading the row depends on. Repeat the region in its own column if you need it.
  • State units. Per bottle or per case, with GST or without, in the column header.
  • Stock as a number or a clear status. "In stock", "Low", "Out of stock, next shipment March". The schema.org vocabulary has standard values for exactly this, from InStock to BackOrder and PreOrder (schema.org/ItemAvailability, checked 8 Nov 2026), so your developer can also mark it up for machines.
  • A dated "last updated" line. Put the date and time on the page. A list without a date gets treated as old.
  • Keep the PDF if you like. The regulars may still want to print it. Link to it from the page. Just make sure the page, not the PDF, is the source of truth.
  • Say what you don't do. "Trade only. We do not sell to the public." It stops the assistant sending you retail enquiries, and it makes the rest of the page more believable.

Is stock on a public page a risk?

It is a fair worry. Competitors can see what you have. Some importers will want to show "In stock" rather than an exact number, or show prices only behind a trade login. Those are reasonable choices. But keep this in mind: if a fact is behind a login, the assistant cannot use it either. Publish at least enough for an assistant to say "yes, they have it, and they can deliver tomorrow". Keep the rest for the conversation.

Where this leads

A list page updated once a day by hand is a good start. The better version is a page fed straight from your stock system, so it is never wrong. And the version after that lets an assistant ask your system directly. We explain that last step in what is MCP? A plain guide for business owners. If your stock currently lives in a spreadsheet only one person understands, start with from spreadsheet to a catalogue your team edits.

Assumptions in this worked example

  • Vintners' Row Imports, the restaurant, Importers A and B, and all wines, domaines and prices are fictional.
  • The sommelier uses a general-purpose AI assistant with web search. It has no trade login, no private database and no access to email.
  • The assistant reads web pages and attempts to extract text from linked PDFs. Extraction quality varies by assistant and by how the PDF was made; we assume a designed, multi-column list.
  • We assume the assistant will not state that a wine is in stock unless a dated source says so. Real assistants vary, and some are less careful.
  • "Next day" means the next working day within Singapore, for orders confirmed before the importer's cut-off.
  • The shortlist text is our illustration of a typical answer, not a recorded response from any specific product.

← All insights

WhatsApp@SGAISG