{
  "id": "F03",
  "url": "https://cartforagents.com/research/ai-product-data-unit-normalization",
  "title": "Product data unit normalization: how we mistook -30 °C for a missing rating",
  "description": "Reconstruct our minus-30 normalization failure with raw passages, expected matches and regression cases before labeling a product fact absent.",
  "answer": "Two of the ten listings Shopify's agent catalog returned for \"toddler snowsuit rated for minus 30\" on October 26, 2026 already stated -30 °C, but our word-matching script didn't treat \"minus 30\" and \"-30 °C\" as the same value, and our first report wrongly said the top results didn't state a temperature rating. Before you call a temperature missing, turn sign, unit and range into one comparable value, read every field, keep the scope words, and test the matcher on lookalikes such as \"minus shipping\" and \"30° nozzle\". This was our error, not a merchant omission.",
  "take": "Any tool that calls a fact missing should prove it looked properly; ours didn't, the first time. We publish our mistakes because a checker you can't audit isn't worth trusting.",
  "summary": "Our first script told us a toddler-snowsuit shelf didn't state a -30 rating. Two listings did. Here is what went wrong, and the test cases we now run before calling any product fact missing.",
  "claims": [
    {
      "text": "For \"toddler snowsuit rated for minus 30\", position 2's title says \"protects to -30 °C\" and position 9's description rates the hood's insulation to \"-30°C\". Our first matcher missed both because it did not treat \"minus 30\" and \"-30 °C\" as the same value.",
      "source_title": "Cart for Agents: receipts cited by our guides",
      "source_url": "https://cartforagents.com/research/agent-shopping-research#receipts-cited-by-our-guides",
      "source_date": "2026-10-26",
      "method": "observed",
      "limitation": "An error in our analysis, corrected the same day. It is not evidence about how any assistant reads temperatures. Position 9 rates the hood's insulation, not the whole garment."
    },
    {
      "text": "Position 2's description makes two further, separate temperature statements: \"Temperatures ca. 0 - -30 °C\" and, in a list of activities, \"generally being outside in temperatures around -10°C to -30°C\". The record carries no Shopify-generated metadata.",
      "source_title": "Cart for Agents: receipts cited by our guides",
      "source_url": "https://cartforagents.com/research/agent-shopping-research#receipts-cited-by-our-guides",
      "source_date": "2026-10-26",
      "method": "observed",
      "limitation": "Seller statements, quoted. Three statements, not one range; we did not inspect the garment or manufacturer documentation."
    },
    {
      "text": "Position 9's generated spec list says \"Insulation: Primaloft rated to -30°C\" and its generated feature list says \"Primaloft insulation rated to -30°C keeps kids safe from the elements\"; neither keeps the word hood from the description.",
      "source_title": "Cart for Agents: temperature matching, how we checked",
      "source_url": "https://cartforagents.com/research/ai-product-data-unit-normalization#how-we-checked",
      "source_date": "2026-10-26",
      "method": "observed",
      "limitation": "One record. We cannot see what Shopify used to generate these lines; the whole-garment rating is unknown to us."
    },
    {
      "text": "Re-running our original matching code on the saved response: it split the query into five words (toddler, snowsuit, rated, minus, 30) and credited a listing for each word its text contained. Positions 2 and 9 each scored 3 of 5. No listing was credited for \"minus\", because none of the ten wrote the word. The code had no notion of a temperature, so it credited the bare token \"30\" wherever it appeared.",
      "source_title": "Cart for Agents: temperature matching, how we checked",
      "source_url": "https://cartforagents.com/research/ai-product-data-unit-normalization#how-we-checked",
      "source_date": "2026-10-26",
      "method": "observed",
      "limitation": "Describes our own retired code, reproduced on October 27 from the saved response. It is not a model of any assistant."
    },
    {
      "text": "In the snowsuit result, the other eight listings stated no temperature in their title, description or Shopify-generated metadata.",
      "source_title": "Cart for Agents: temperature matching, how we checked",
      "source_url": "https://cartforagents.com/research/ai-product-data-unit-normalization#how-we-checked",
      "source_date": "2026-10-26",
      "method": "observed",
      "limitation": "Only the fields in this catalog response. Product pages, size charts or care labels may state more."
    },
    {
      "text": "Across all 1,620 results from 162 searches, our proposed normalizer found a temperature at or below -30 °C in 8 results from 5 searches: the two snowsuits, an ice cleat, three car jump starters, a self-watering planter and an ice scraper. One jump starter's \"Rated to -22°F\" equals -30 °C, and the planter's \"Temperature resistance: -22°F to 176°F (-30°C to 80°C)\" uses the same value for its material.",
      "source_title": "Cart for Agents: temperature matching, how we checked",
      "source_url": "https://cartforagents.com/research/ai-product-data-unit-normalization#how-we-checked",
      "source_date": "2026-10-26",
      "method": "observed",
      "limitation": "Results are occurrences, not distinct products, from searches we wrote. The normalizer is our own proposal tested on 24 cases, not a validated tool, and it needed two fixes before passing them."
    },
    {
      "text": "For \"ice cleats for running shoes on icy sidewalks\", position 4's description says the product \"can be worn in temperatures as low as -41  Fahrenheit\", while its generated spec list says \"Temperature Range: Down to 41°F\" and its generated feature list \"as low as 41°F\": the minus sign is gone.",
      "source_title": "Cart for Agents: temperature matching, how we checked",
      "source_url": "https://cartforagents.com/research/ai-product-data-unit-normalization#how-we-checked",
      "source_date": "2026-10-26",
      "method": "observed",
      "limitation": "One record. -41 °F is about -40.6 °C and 41 °F is 5 °C. We cannot see how Shopify generated the line or which figure the manufacturer intends."
    },
    {
      "text": "Converting Fahrenheit to Celsius: -22 °F is exactly -30 °C, -10 °F is about -23.3 °C, and -30 °F is about -34.4 °C.",
      "source_title": "Cart for Agents: temperature matching, how we checked",
      "source_url": "https://cartforagents.com/research/ai-product-data-unit-normalization#how-we-checked",
      "source_date": "2026-10-27",
      "method": "inferred",
      "limitation": "Arithmetic, (F - 32) x 5/9. It converts the stated number; it does not make two ratings measured differently comparable."
    },
    {
      "text": "Shopify marks the description and the generated metadata fields (tech_specs, top_features, unique_selling_points) as Inferred: generated or enriched by Shopify and possibly inaccurate.",
      "source_title": "Shopify: Global Catalog MCP, Inferred response fields",
      "source_url": "https://shopify.dev/docs/agents/catalog/global-catalog",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Living documentation; the date is our check date. It does not describe how fields are generated or how assistants weigh them."
    }
  ],
  "sources": [
    {
      "title": "Cart for Agents: receipts cited by our guides",
      "url": "https://cartforagents.com/research/agent-shopping-research#receipts-cited-by-our-guides",
      "accessed": "2026-10-27"
    },
    {
      "title": "Cart for Agents: temperature matching, how we checked",
      "url": "https://cartforagents.com/research/ai-product-data-unit-normalization#how-we-checked",
      "accessed": "2026-10-27"
    },
    {
      "title": "Shopify: Global Catalog MCP",
      "url": "https://shopify.dev/docs/agents/catalog/global-catalog",
      "accessed": "2026-10-27"
    }
  ],
  "limitations": [
    "The error was in our own analysis script. It is not evidence that any AI shopping assistant misreads temperatures, and it is not a merchant omission.",
    "One unpersonalized Shopify agent-catalog snapshot from October 26, 2026. The 1,620 results are occurrences from 162 searches we wrote, not a sample of products or merchants.",
    "The proposed normalizer and its 24 test cases are ours. They catch the patterns listed here, not every way people write temperatures, and the meaning step (rating, operating range, material limit, scope) still needs a person or a separate check.",
    "We did not inspect any garment or manufacturer document. A stated -30 °C is a seller or Shopify statement, not a verified rating, and we do not know how it was established.",
    "Store and brand names are withheld. Listings are named by position."
  ],
  "related": [
    "https://cartforagents.com/research/agent-shopping-research",
    "https://cartforagents.com/research/quiet-humidifiers",
    "https://cartforagents.com/research/missing-product-review-data",
    "https://cartforagents.com/guides/winter-clothing-product-data",
    "https://cartforagents.com/guides/product-claim-provenance"
  ],
  "published": "2026-10-27",
  "updated": "2026-10-27",
  "checked": "2026-10-27",
  "kind": "research"
}