Google says preorder, OpenAI says pre_order: product feeds for AI shopping Logit Solutions AI released shelfcheck, a free open-source Rust command-line tool that validates e-commerce product feeds against the OpenAI, ACP and Google shopping formats plus GS1 barcode rules in a single run. The tool flags format mismatches such as Google's `preorder` versus OpenAI's `pre_order`, ranks fixes by how many products each affects, and diffs two feeds to surface risky changes, with output in HTML, JSON, SARIF and JUnit. On the bundled synthetic 1,400-product demo store, 182 products needed fixes before all formats accepted them. Take a product you can order before it ships. Google Merchant Center wants its availability written as preorder . The OpenAI product feed, the one ChatGPT shopping reads, wants pre order , and its spec is blunt about anything else: "Omitted, empty, or unrecognized values reject the row." Same product, same store, one underscore. One feed is accepted and the other silently loses the row. That is the new chore in e-commerce. AI shopping assistants read your catalog through product feeds, and each one has its own format: target countries and store country ; They mostly agree, which is exactly why the differences slip through. A few we ran into while reading the specs: preorder for Google, pre order for OpenAI. None of this is hard. It is just a lot of small rules spread over several spec pages, all changing at their own pace. shelfcheck https://github.com/logitsolutionsai/shelfcheck is a free, open-source command-line tool written in Rust. You point it at your feed and it checks every product against all three formats, plus GS1 barcode rules, in one run: bash $ shelfcheck check fixtures/store-a/products.csv shelfcheck 0.1.0 · rules OpenAI 2026-11-14 · ACP 2026-04-17 · Google 2026-11-14 · GS1 26.0 read OpenAI CSV · 1,400 products, 3,912 variants 0.30 s ready errors warnings OpenAI 1,228 87.7% 172 27 ACP 1,310 93.6% 90 0 Google 1,293 92.4% 107 0 ✗ 82 Barcodes with a wrong check digit OpenAI, ACP, Google · e.g. PHO0071-3, line 157 ✗ 61 target countries is missing OpenAI · e.g. LAM0015-3, line 36 ✗ 23 availability values the format rejects OpenAI · e.g. MUG0033-1, line 79 + 4 more fixes, 43 products. All of them are in the report. 182 of 1,400 products need fixes before every format accepts them. That run is on the synthetic 1,400-product demo store that ships with the repo, so the numbers show what the tool does, not how real stores score. The fixes come ranked by how many products each one affects, so the first fix you make is the one that clears the most rows. Every problem names the product, the line and the column, and cites the rule it broke. A feed that passed last month can break this month without a single error. So shelfcheck also compares two feeds and flags risky changes: PHN-X2-BLK was a phone and is now a phone case ; You record a decision for each change once shelfcheck decide , and it stays quiet after that. report.html , results.json , SARIF 2.1.0 for GitHub code scanning, junit.xml and a failing-products.csv . One honest limit: passing shelfcheck means your feed matches the formats it checks. It does not mean an AI assistant will show your products. npx shelfcheck check products.csv no install brew install logitsolutionsai/tap/shelfcheck Homebrew cargo install shelfcheck crates.io The code, the rule packs and their sources are on GitHub under Apache-2.0: github.com/logitsolutionsai/shelfcheck https://github.com/logitsolutionsai/shelfcheck . If a rule is out of date, open an issue with the rule id and a link to the page that changed. Sources Logit Solutions AI is an AI product studio. We design, build and support production-ready AI products for startups and growing businesses.