How I Built a Google UCP Readiness Checker in One Night
How I Built a Google UCP Readiness Checker in One Night
Google shipped something massive in January 2026 and most ecommerce people still don't know about it. The Universal Commerce Protocol (UCP) lets Gemini discover, recommend, and complete purchases — all without the user ever visiting your store. Your product data either meets the bar, or you're invisible.
That's the problem. Most Shopify and WooCommerce stores have product feeds that were optimized for old-school SEO — keyword-stuffed titles, thin descriptions, zero natural-language context. UCP is an AI-first protocol. It needs rich, semantic product data to understand what you're selling and why someone should buy it. If your feed is weak, Gemini ignores you.
The Core Insight
I broke UCP readiness into four scoring dimensions:
- Title & Brand Signal — Does the title include brand, model, and distinguishing features? Or is it just "Black Running Shoe"?
- Natural-Language Attributes — Material, dimensions, weight, use cases, occasion. The stuff that helps an AI understand a product, not just index it.
- Structured Data Compliance — JSON-LD schema, schema.org Product markup, Merchant Center feed spec. The technical foundation.
- Completeness — How many optional-but-important fields are actually filled in?
Each dimension gets a 0–100 score, then they're weighted and combined into a final UCP Readiness Score. The weighting isn't equal — natural-language attributes and structured data matter more than title quality because that's what Gemini actually queries against.
Here's the scoring engine in ~20 lines of TypeScript:
const scoreProduct = (product: ProductData): ScoreResult => {
const dimensions = {
titleSignal: scoreTitle(product.title, product.brand, product.category),
attributes: scoreAttributes(product.attributes, product.description),
schemaCompliance: scoreSchema(product.structuredData),
completeness: scoreCompleteness(product),
};
const weights = { titleSignal: 0.2, attributes: 0.35, schemaCompliance: 0.3, completeness: 0.15 };
const total = Object.entries(dimensions).reduce(
(sum, [key, score]) => sum + score * weights[key as keyof typeof weights], 0
);
return { score: Math.round(total), dimensions, fixes: generateFixes(dimensions, product) };
};
Key Technical Decisions
Client-side scoring. No API calls needed. The entire analysis runs in the browser — paste JSON, get results instantly. This makes it feel fast and keeps it free to operate.
Fix generator, not just a score. A score alone is useless. Each dimension that scores below 70 triggers specific, copy-paste fixes. Not vague advice like "improve your descriptions" — actual JSON-LD snippets and attribute templates you can drop into your feed.
Pre-loaded demo data. Five real-world products spanning scores from 29 (a standing desk with zero UCP attributes) to 96 (near-perfect running shoe). This was the design decision I'm happiest with — the tool looks alive on first load, and users immediately understand what good and bad look like.
What Surprised Me
The score variance across real products is huge. Even well-known brands with good SEO have terrible UCP readiness — their product feeds were built for Google Shopping circa 2020, not AI-driven discovery in 2026. The Merino Wool Beanie example (score: 45) is from a major outdoor brand. Their title was just "Merino Wool Beanie — Black." Gemini has no idea why to recommend that over any other beanie.
The ghosted result cards in the empty state worked way better than I expected. Users see blurred score rings and gap analysis cards behind the drop zone before uploading anything. Zero confusion about what the tool does. I'm stealing this pattern for every tool I build from now on.
What's Next
Three things I'd build with more time:
- Feed-level analysis — not just individual products, but batch scoring an entire XML/CSV feed and showing distribution curves
- CI integration — a GitHub Action that scores your product feed on every deploy and fails the build if UCP readiness drops
- Competitor comparison — paste two product URLs and see which one Gemini would recommend
Try It
The tool is live and free. Paste your product JSON and see where you stand.
→ Try Google UCP Readiness Checker
If you're running a Shopify store and haven't thought about UCP yet — now's the time. Gemini is already recommending products. The question is whether it's recommending yours.