On October 26, 2026 we searched Shopify’s agent catalog for “toddler snowsuit rated for minus 30”. Two of the ten listings it returned already stated -30 °C: one in its title, one in its description. Our script didn’t treat “minus 30” and “-30 °C” as the same value, and our first report said the top results didn’t state a temperature rating. That was wrong, and we corrected it the same evening.
The fix is a habit, not a clever regex. Before you call a fact missing, turn every way of writing it into one comparable value, read every field, keep the words that limit its scope, and test the matcher on lookalikes that should not match. This was our mistake, not the merchants’. It tells you nothing about how ChatGPT or any other assistant reads temperatures.
What we got wrong
Our first pass at these searches used a simple word matcher. It split the shopper’s query into words, dropped “for”, and gave each listing credit for every remaining word its text contained. For this query that left five words: toddler, snowsuit, rated, minus, 30.
We re-ran that exact code on the saved response:
| Listing | Words credited | Score | What the listing actually says |
|---|---|---|---|
| Position 2 | toddler, snowsuit, 30 | 3 of 5 | “protects to -30 °C”, in the title |
| Position 9 | snowsuit, rated, 30 | 3 of 5 | A hood “rated to -30°C”, in the description |
| The other eight | toddler and/or snowsuit | 1 or 2 of 5 | No temperature in any field we read |
Three things went wrong at once:
- “Minus” never matched. Not one listing wrote the word. They wrote a hyphen. To a word matcher, “minus 30” and “-30” share only the “30”.
- “30” meant nothing. The script credited the bare token “30” wherever it appeared. It would have scored “30 days” or a “30° nozzle” the same way, so the partial credit couldn’t tell a temperature rating from noise.
- We read the score as a fact. A middling score for the top results became a sentence in our report: the top three don’t state a temperature rating. The second-ranked listing’s title says it protects to -30 °C.
An outside reviewer caught it that evening, and we checked the raw response and corrected the report. The same review found the script’s review count had turned missing ratings into zeros. That’s a separate mistake, covered in our missing-review-data audit.
What the two listings actually say
Here is every temperature statement in the snowsuit result, with the field it came from. Store names are withheld.
| Position | Field | Exact text | What it covers |
|---|---|---|---|
| 2 | Title | “protects to -30 °C” | The suit, as the seller states it |
| 2 | Description | “Temperatures ca. 0 - -30 °C” | A second statement, next to “Warm insulation” |
| 2 | Description | “generally being outside in temperatures around -10°C to -30°C” | Activity guidance from the seller, in a list of trips |
| 9 | Description | “a hood with PrimaLoft® insulation rated to -30°C” | The hood’s insulation, not the whole suit |
| 9 | Generated spec list | “Insulation: Primaloft rated to -30°C” | Drops the word hood |
| 9 | Generated feature list | “Primaloft insulation rated to -30°C keeps kids safe from the elements” | Drops the word hood |
Position 2 makes three separate statements, and they shouldn’t be merged into one range. A title claim, an insulation range and a seller’s activity guidance are different kinds of evidence, even when they share a number. Position 2’s record carries no Shopify-generated metadata.
Position 9 is the more important lesson. The description is careful: the hood’s insulation is rated to -30 °C. Shopify’s generated spec and feature lines, which Shopify marks as Inferred and possibly inaccurate, both drop the word hood. A matcher reading only the spec list would conclude the suit is rated to -30 °C, which the description never says. We don’t know the whole garment’s rating.
The other eight listings state no temperature in their title, description or generated metadata. On this shelf, “rated for minus 30” had two partial answers, not zero.
The regression table
This is the set of cases we now run before calling a temperature missing. Most are real text from the same October 26 snapshot, each named by the search it came from. The ones marked constructed are ours, added to cover patterns the snapshot didn’t contain. The test asks one question: does this text state a temperature of -30 °C or colder?
| As written (where) | Read as | Counts toward “-30 °C or colder”? |
|---|---|---|
| “protects to -30 °C” (snowsuit, position 2 title) | -30 °C | Yes |
| “ca. 0 - -30 °C” (snowsuit, position 2 description) | Range 0 to -30 °C, not “0 minus minus 30” | Yes |
| “around -10°C to -30°C” (snowsuit, position 2 description) | Range -10 to -30 °C | Yes, but it’s activity guidance, not a rating |
| “hood with … insulation rated to -30°C” (snowsuit, position 9) | -30 °C | Value yes, scope: hood only |
| “Insulation: Primaloft rated to -30°C” (snowsuit, position 9 generated spec) | -30 °C | Value yes, scope lost. Don’t promote it to a suit rating |
| “Rated to -22°F” (car jump starter search) | -30 °C exactly | Value yes, different product and meaning: an operating limit |
| “-22°F to 176°F (-30°C to 80°C)” (self-watering planter search, generated spec) | -30 to 80 °C | Value yes, different meaning: material temperature resistance |
| “arctic temperatures -30℃+” (car jump starter search) | -30 °C, written with the single ℃ character | Value yes, different meaning: names conditions where a higher-power version helps, in a comparison |
| “down to -40°F (-40°C)” (car jump starter search) | -40 °C | Yes, colder than asked. Compare values; don’t string-match |
| “as low as -41 Fahrenheit” (ice cleats search, position 4 description) | -40.6 °C, unit spelled out after two spaces | Value yes, different product |
| “Down to 41°F” (ice cleats search, position 4 generated spec) | +5 °C | No. The generated line dropped the minus sign |
| “Comfort rating: -10°F to 50°F” (fishing waders search) | -23.3 to 10 °C | No. A real cold rating that doesn’t reach -30 °C |
| “-20℃ to 60℃” (car jump starter search) | -20 to 60 °C | No |
| “59-93°F” (aquarium heater search) | Range 15 to 34 °C | No. The hyphen joins a range; it isn’t “-93 °F” |
| “40°C – 65°C” (heated insoles search) | Range 40 to 65 °C | No. The dash joins a range |
| “(+/- 6°F)” (aquarium heater search) | A tolerance, not a temperature | No |
| “30° tiltable nozzle” (humidifier search) | An angle | No. A degree sign without C or F isn’t a temperature |
| “minus the time and $$$” (nail-strip search) | Not a number | No |
| “(minus shipping costs)” (compostable bags search) | Not a number | No |
| “Comfort rated to −30 °C” (constructed, Unicode minus sign) | -30 °C | Yes |
| “down to minus thirty degrees Celsius” (constructed) | -30 °C | Yes |
| “rated to -30°F” (constructed) | -34.4 °C | Yes, and colder than -30 °C |
| “wash at 30°C” (constructed) | +30 °C | No. Same digits, wrong sign |
| “good to minus 30” (constructed, no unit) | Unknown unit | Flag it. Neither yes nor no |
Run against our old word matcher, this table fails in both directions. The matcher credits “30” in the nozzle angle and “minus” in “minus shipping costs”, and it gets nothing from “Rated to -22°F”, the same temperature written in Fahrenheit.
The last row matters on the shopper’s side too. The query said “minus 30” with no unit. We assumed Celsius. In Fahrenheit, minus 30 is about -34.4 °C, a colder ask that both snowsuit statements would fall short of. Whichever unit you assume, write the assumption down.
Seven rules before calling a fact missing
These are our proposed rules, written from this mistake. They aren’t an industry standard, and they cover temperatures; the same pattern applies to weights, sizes and capacities.
- Normalize the sign. “-30”, “−30” (the Unicode minus), “–30” (an en dash stuck to a digit) and “minus 30” are the same number. A dash with a space after it, or one between two numbers, usually joins a range instead.
- Normalize the unit, then convert. °C, ℃, “C” after a number and “degrees Celsius” are one unit; °F, “F” and a spelled-out “Fahrenheit” are another. Convert °F with (F − 32) × 5/9 before comparing: -22 °F is -30 °C.
- Parse ranges before signs. “59-93°F” is 59 to 93 °F. “0 - -30 °C” is 0 to -30 °C. The first number in a range usually borrows the unit of the second.
- Refuse lookalikes. A degree sign with no C or F is probably an angle. “+/-” is a tolerance. “Minus” with no number after it is just a word.
- Compare values, not strings. A need for “-30” is met by -30 or colder. “-40 °C” answers it. “-23 °C” doesn’t.
- Keep meaning and scope as separate steps. A matching value can still be an operating limit, a material limit, activity guidance or a rating for one part (the hood). Record which, and never let a generated line widen the scope.
- Read every field, and log where you looked. A fact can sit in the title, the description or generated metadata. “Missing” should mean “absent from these named fields”, never “our matcher didn’t score it”.
We wrote a small normalizer from these rules and ran the table through it. It needed two fixes. The first run read the “6°F” in “+/- 6°F” as a temperature, because the tolerance check looked too few characters back. Later, while writing our winter-clothing guide, we came across an ice-cleat listing that wrote “-41 Fahrenheit”, with the unit as a word after two spaces, and our normalizer didn’t recognize it. We fixed both and added both to the table. All 24 cases now pass, which shows only that it handles these 24 cases. The next unusual spelling will need its own row.
What it found across the snapshot
We then ran the normalizer over every title, description and generated metadata line in all 1,620 results from our 162 searches. A temperature of -30 °C or colder appeared in 8 results from 5 searches:
| Search | Results | What the value describes |
|---|---|---|
| Toddler snowsuit | 2 | The suit (title) and the hood’s insulation |
| Ice cleats for running | 1 | Where the cleats “can be worn”, in the description only |
| Car jump starter for extreme cold | 3 | Two operating limits (“Rated to -22°F”, written only in °F, and “down to -40°F (-40°C)”), plus one comparison line about “arctic temperatures -30℃+” |
| Self-watering planters | 1 | Material temperature resistance |
| Ice scraper | 1 | The tool withstanding “freezing temps down to -40°F” |
Only the two snowsuit listings speak to the shopper’s question. The other six show why a value match isn’t a fit match. A jump starter that works at -30 °C and a toddler suit rated to -30 °C share a number and nothing else. A matcher that stops at the value would happily mix them up.
The ice cleat is a warning in the other direction. Its description says -41 °F; Shopify’s generated spec and feature lines say 41 °F. A reader that trusts the generated line sees a product good to +5 °C, not about -40 °C. We don’t know which figure the manufacturer intends. Either way, the sign is part of the fact.
What this means for your listings
The merchants on this shelf did state the fact. Our tool failed to read it. Still, the way a rating is written decides how much work any reader, human or software, has to do to get it right. If you sell cold-weather gear, write the rating so that nobody has to guess:
| Part | Write | Avoid |
|---|---|---|
| Value and sign | “-30 °C” | “minus thirty” alone, or “30 below” |
| Both units | “-30 °C (-22 °F)” | One unit, if you sell in both markets |
| Scope | “Whole suit” or “hood insulation” | A bare “rated to -30” when only one part is |
| Basis | Whose rating it is and how it was set, for example “manufacturer’s comfort guidance for active play” | An unsourced number |
| Where | Title or opening line, plus a structured field you control | Only in a paragraph halfway down |
The basis example is a placeholder, not a description of any real product. Use only what your manufacturer actually states. If they don’t say how the rating was set, write that it isn’t stated, and keep the scope word even when it makes the claim sound smaller. For more on the winter-gear record, see winter clothing product data. For keeping a claim tied to its source and scope, see product claim provenance.
How we checked
The search ran on October 26, 2026, through Shopify’s public Global Catalog using Shopify’s own command-line tool (catalog search, top 10, no buyer, country or currency context). We saved every response as received.
For this page we went back to the saved snowsuit response on October 27 and:
- re-ran our original matching code unchanged, to reproduce the scores in the first table;
- read the
title,description,metadata.tech_specs,metadata.top_featuresandmetadata.unique_selling_pointsof all ten listings for any temperature, in any unit; - took the regression cases from the same saved responses, quoting short fragments and naming only the search;
- ran the proposed normalizer over all 1,620 saved results and checked each of the 8 matches by hand.
We name listings by position and searches by topic. Nothing here was a fresh catalog query, so live results may differ. Our catalog research page lists the full snapshot method and the correction.
Your next step
Pick one product whose main promise is a number: a temperature rating, a weight limit, a capacity. Search your own title, description and spec fields for every way that number is written, including the other unit. If any version drops its scope word or its unit, fix that line first. Then write the number once, in full, in a structured field you control.