Skip to content
Articles
Research9 min read

Why the AI called a vacuum cleaner an iron

ChatGPT recommended a Bosch vacuum cleaner and described it as an iron. We chased the cause down to the exact page it read, and it is there: twenty products in a list and not one of them declared as a product. The mechanism, the proof, and the fix.

CTO

a person using a vacuum to clean a carpet
Photo by No Revisions on Unsplash

On 20 August 2026 we asked ChatGPT, in Portuguese and from Portugal, where to buy an upright vacuum cleaner for under 200 euros. Among the recommended products a Bosch vacuum appeared with this description: "highly rated iron, easy to use".

We chased the cause all the way down. This article shows the whole route, because the interesting part is not the error: it is the mechanism, and the fact that the affected brand has no way of correcting it.

The investigation, step by step
Step 1 of 4: First: the error was not alone
  1. First: the error was not alone

    In the same carousel, an upright vacuum appeared described as an "efficient cleaning robot". And you do not need to check anything at any shop to know the Bosch description was wrong, because the answer contradicts itself: three lines below the carousel, the same model describes the same product as "2 in 1, with up to 40 min of battery life". An iron does not have forty minutes of battery life.

    We repeated the question and the carousel returned different products, with a different retailer cited. We will come to what that means.

Schema types declared on the page
  • ListItem: Occurrences 20
  • BreadcrumbList: Occurrences 1
  • ItemList: Occurrences 1
  • WebSite: Occurrences 1
  • Organization: Occurrences 1
  • ImageObject: Occurrences 1
  • WebPage: Occurrences 1
  • Product: Occurrences 0

Source: the PowerShell check above, against the exact page the assistant read.

There is not a single Product.

There is a list with twenty items, and each item says only that it is an item in a list, with a name and a link. No price tied to a product. No category. No brand. No type. The page shows twenty products to a human and declares none of them as a product to a machine.

There is no meta robots either, so the page is open to everybody. This is not a case of hidden content. It is the opposite: everything open and nothing explained.

The mechanism, in three sentences

The mechanism

The model opens a page with twenty products mixed by colour. It sees names in a list and prices in the text, with nothing linking them. It has to decide what belongs to what, it decides badly, and it presents the result to the buyer with the same confidence with which it presents everything else.

Why this is bigger than it looks

Filter pages became a source. For years, faceted category pages were treated as technical litter: dynamically generated, often marked not to appear in Google, with no investment at all. They stopped being litter the day the assistants started reading pages instead of consulting indexes. Today they are citation surface, and they are the worst-prepared pages in any shop.

Whoever is cited is the shop, not the manufacturer. In both runs, the source shown next to the prices was the retailer. Which means the brand whose product is described backwards does not control the page where the error is born, does not control the text that comes out, and does not even get to know about it.

And the result changes between runs. The same question, minutes later, returned different products and a different shop. A single check is worth nothing, which makes repeated measurement the only way of knowing what is going on.

The fix

It is technical, it is well known and it is cheap. Each ListItem comes to contain a Product with name, brand, category and offers with price, priceCurrency and availability. That way each item in the list says what it is and how much it costs, and no attribute is left floating, waiting to stick to the wrong product.

Each item on the list, today and with the fix
TodayWith the fix
TypeListItem onlyProduct
NameYesYes
BrandNobrand
CategoryNocategory
PriceIn the text, tied to nothingoffers: price, priceCurrency
AvailabilityNooffers: availability

For whoever has access to the listing-page template, it is a day's work. What is missing is not technical difficulty, it is somebody having realised that these pages came to be read by machines that answer buyers.

For a brand that sells through third parties, the defence is indirect and twofold: have a page for that product alone, saying what the thing is before saying how good it is, and have a conversation with the channel about the structured data on the listing pages. It is a conversation almost no Portuguese brand is having.

A note of fairness

We named the shop because without the address this investigation cannot be verified, and it is the verifiability that gives it value. But the rest should be said too: that page does have ItemList declared, which is more than most Portuguese shops have on category pages. The market norm is to have nothing. If we picked a shop at random, we would probably find less, not more.

The problem is nobody's in particular. It belongs to an entire market that has not yet realised these pages changed function.

What comes next

This case establishes the mechanism. The next step is frequency: twenty questions across four categories, repeated over three weeks, to find out how often it happens and where it is worst. The numbers will be published.

Frequently asked questions