Your titles and descriptions were probably never written to Google's spec. And the fields AI agents read (material, product details, age group, highlights, FAQ) are sitting empty. Connecting UCP Radar to Merchant Center is one click. It then works through the catalog, flagging what breaks GMC rules and what hides you from AI shopping assistants, rewriting weak titles and filling the blanks. Brand names it leaves alone. Out comes a supplemental feed Google, Perplexity and ChatGPT can read.
Hey Product Hunt.
18 years in digital marketing, most of it running paid ads and Google Shopping for ecommerce clients. Product feeds were always the boring part of that job, and always the part that decided whether a campaign worked.
The pattern I kept hitting: merchants assume the feed is fine because Google accepted it. Accepted is a very low bar. Titles get written for a human browsing a category page, not for how Google matches queries. Descriptions are whatever the CMS spat out. And the attributes that actually carry meaning, material, age group, and the newer AI-facing ones like product highlights, product details, product Q&A, sit empty. Google never rejects you for it. It just shows someone else.
Then last year clients started asking why ChatGPT recommended a competitor instead of them. Same half-empty feed. Except in Shopping you can raise a bid to compensate, and here there's nothing to raise.
So I built UCP Radar. Connect Google Merchant Center in one click and it scores every product against 50+ GMC and +35 UCP (Universal Commerce Protocol) rules, then again on how readable it is to an AI agent. It rewrites the titles and descriptions, fills the empty fields, and publishes a supplemental feed that Google, Perplexity and ChatGPT pick up on their own. Prices and stock still come from your store.
The hard part wasn't getting the AI to write. It was getting it to stop. Early versions would "improve" a brand name or reword a model number, which in a product feed is a disaster. Most of my build time went into the Brand Protector.
Free 7-day trial, up to 50 products, no credit card.
One question for the ecommerce people here: have you checked whether ChatGPT or Perplexity can find your products yet? Curious what you're seeing.
Report
@kamilyu The shift from people browsing to agents shortlisting for them is real, and most catalogs aren't structured for it. Practically, what do I change on my feed for an agent to pick me, schema markup or something you sit on top? Trying to gauge if this is a one-time fix or ongoing upkeep.
@artem_fedorovichShort answer: feed first, schema second, and it's upkeep rather than a fix.
The annoying part is that each agent reads a different source, so there's no single tag that covers all of them. Google's AI Mode and AI Overviews pull from the Shopping Graph, which is built from your Merchant Center feed plus the Product markup on your pages, and it compares the two. If your product page says one price and your feed says another, you get a disapproval, not a boost. ChatGPT doesn't crawl your PDP for this at all. You apply to their merchant program, get verified, and send them a feed in their own format: stable item id, plain-text description, brand, image, price, availability, plus flags for whether the item is eligible for search and for checkout. Perplexity works the same way, apply and submit a feed, and they've said completeness affects what gets surfaced.
On the feed itself, roughly in order of what I've seen matter:
GTIN or MPN, a real brand value, variants grouped. Unidentified products are the first thing an agent drops, because it can't match them to anything it already knows.
Attributes actually filled in. Color, size and size system, material, gender, age group, weight and dimensions. Agents answer filtered questions ("cotton, under $100, ships here"), and an empty field is a quiet disqualification.
A description that answers what it is, what it's made of, who it's for, what it fits. That's the text the model paraphrases back to the shopper, so thin copy gets you skipped even when everything else is clean.
And the conversational attributes almost nobody fills: product_highlight, product_detail, question_and_answer. That's the exact shape an agent quotes.
Schema markup still matters, but as the consistency layer. Product JSON-LD whose offers block matches the feed exactly. Corroboration, not the channel.
One-time or ongoing: the structure is one time, keeping it isn't. Every new SKU arrives raw, stock and price go stale within a day, and the specs move under you (OpenAI has already revised theirs, and Google keeps adding attributes while retiring the old Content API). Nothing tells you when you've drifted.
That drift is really why I ended up building UCP Radar instead of doing this by hand. It watches the catalog daily, only reworks what changed, and pushes it out as a supplemental feed, so prices and stock still come from your store and turning it off changes nothing.
UCP Radar
@kamilyu The shift from people browsing to agents shortlisting for them is real, and most catalogs aren't structured for it. Practically, what do I change on my feed for an agent to pick me, schema markup or something you sit on top? Trying to gauge if this is a one-time fix or ongoing upkeep.
UCP Radar
@artem_fedorovich Short answer: feed first, schema second, and it's upkeep rather than a fix.
The annoying part is that each agent reads a different source, so there's no single tag that covers all of them. Google's AI Mode and AI Overviews pull from the Shopping Graph, which is built from your Merchant Center feed plus the Product markup on your pages, and it compares the two. If your product page says one price and your feed says another, you get a disapproval, not a boost. ChatGPT doesn't crawl your PDP for this at all. You apply to their merchant program, get verified, and send them a feed in their own format: stable item id, plain-text description, brand, image, price, availability, plus flags for whether the item is eligible for search and for checkout. Perplexity works the same way, apply and submit a feed, and they've said completeness affects what gets surfaced.
On the feed itself, roughly in order of what I've seen matter:
GTIN or MPN, a real brand value, variants grouped. Unidentified products are the first thing an agent drops, because it can't match them to anything it already knows.
Attributes actually filled in. Color, size and size system, material, gender, age group, weight and dimensions. Agents answer filtered questions ("cotton, under $100, ships here"), and an empty field is a quiet disqualification.
A description that answers what it is, what it's made of, who it's for, what it fits. That's the text the model paraphrases back to the shopper, so thin copy gets you skipped even when everything else is clean.
And the conversational attributes almost nobody fills: product_highlight, product_detail, question_and_answer. That's the exact shape an agent quotes.
Schema markup still matters, but as the consistency layer. Product JSON-LD whose offers block matches the feed exactly. Corroboration, not the channel.
One-time or ongoing: the structure is one time, keeping it isn't. Every new SKU arrives raw, stock and price go stale within a day, and the specs move under you (OpenAI has already revised theirs, and Google keeps adding attributes while retiring the old Content API). Nothing tells you when you've drifted.
That drift is really why I ended up building UCP Radar instead of doing this by hand. It watches the catalog daily, only reworks what changed, and pushes it out as a supplemental feed, so prices and stock still come from your store and turning it off changes nothing.