{
 "state": "ready",
 "domain": "Example Plumbing & HVAC Distributor",
 "index_score_pct": 55,
 "grade": null,
 "quality_score_pct": 78,
 "headline_method": "readiness-v1",
 "channel_ready": {
  "count": 0,
  "total": 2192,
  "pct": 0
 },
 "readiness_levers": [],
 "confidence_band": "±2",
 "sample_size": 2192,
 "product_count": 2192,
 "page_count": 2192,
 "agent_reachability_gap_pct": 0.01,
 "sub_indices": [
  {
   "key": "A",
   "label": "Catalog Quality & Discoverability",
   "score_pct": 69.4
  },
  {
   "key": "B",
   "label": "AI Commerce Readiness",
   "score_pct": 90.7
  }
 ],
 "dimensions": [
  {
   "key": "technical_documentation",
   "display_name": "Technical Documentation",
   "category": "customer_experience",
   "pillar": "Customer Experience",
   "score_pct": 30.8,
   "explainer": {
    "plain_name": "Technical documents",
    "subtitle": "Can buyers get the spec sheets and guides they need?",
    "definition": "Whether products link to real documents: spec or data sheets, installation guides, safety data sheets, and CAD drawings.",
    "shopper_impact": "Professional buyers often won't order a technical product without its spec sheet or installation guide.",
    "agent_impact": "AI assistants pull specifications and compatibility details from these documents when they answer buyers' questions.",
    "band_meaning": "Most products have no documents.",
    "category_label": "Shopper experience"
   },
   "for_your_store": {
    "human": "91% of products fall short of having 3 or more document links, 77% are missing an installation guide, and 54% are missing a spec sheet, so shoppers can't find what they need.",
    "machine": "AI assistants read specs and compatibility from these documents. With most products missing guides or spec sheets, they can't answer buyer questions."
   },
   "caveat": null,
   "tone_pct": null,
   "measured": null
  },
  {
   "key": "return_risk_score",
   "display_name": "Return Risk",
   "category": "customer_experience",
   "pillar": "Customer Experience",
   "score_pct": 44.7,
   "explainer": {
    "plain_name": "Return-risk protection",
    "subtitle": "Do your listings give shoppers enough to buy the right thing?",
    "definition": "How well your listings answer the questions that prevent returns: enough details, sizing and dimensions, photos, and description. A higher score means a lower return risk.",
    "shopper_impact": "When a listing leaves out its size, materials or other key details, shoppers guess, and wrong guesses come back as returns.",
    "agent_impact": "AI assistants recommend products they can describe with confidence. Listings with gaps get recommended less often.",
    "band_meaning": "Many listings leave out details shoppers need. Return risk is high.",
    "category_label": "Shopper experience"
   },
   "for_your_store": {
    "human": "79% of products have descriptions under 100 words, so shoppers often guess at size or materials, which raises the chance of a wrong order.",
    "machine": "AI assistants recommend products they can describe with confidence. Thin descriptions on 79% of products make them less likely to be recommended."
   },
   "caveat": null,
   "tone_pct": null,
   "measured": null
  },
  {
   "key": "attribute_completeness",
   "display_name": "Attribute Completeness",
   "category": "foundational",
   "pillar": "Content Quality",
   "score_pct": 44.8,
   "explainer": {
    "plain_name": "Product details",
    "subtitle": "Does each product's data name its key details?",
    "definition": "Whether each product's data names the details expected for its category, such as dimensions, material, voltage, or connection type, as details shopping channels and AI assistants can read, with real values instead of blanks or placeholders.",
    "shopper_impact": "Shopping channels build their filters from these details. One that isn't in the product data can knock a product out of a filtered search, even when its page shows it.",
    "agent_impact": "AI assistants answer questions like \"which of these is rated for 240V?\" from these details. If a detail isn't in the product data, they can't recommend the product for that question.",
    "band_meaning": "Key details are missing from most products' product data.",
    "category_label": "Product data"
   },
   "for_your_store": {
    "human": "Key details are missing from most products' product data, even though the pages may show them, so filtered searches on shopping channels can miss these products.",
    "machine": "AI assistants answer spec questions from the product data. When a detail isn't there, they can't recommend the product for that question."
   },
   "caveat": "We don't list fixes for this check yet. It's being improved to read every detail your pages show.",
   "tone_pct": null,
   "measured": null
  },
  {
   "key": "findability",
   "display_name": "Findability",
   "category": "customer_experience",
   "pillar": "Customer Experience",
   "score_pct": 54.6,
   "explainer": {
    "plain_name": "Search findability",
    "subtitle": "Can shoppers find your products with the words they search for?",
    "definition": "Whether titles and descriptions use the words buyers search for, whether titles describe the product instead of just a part number, and whether part numbers and cross-references (compatible or replacement parts) are listed.",
    "shopper_impact": "Buyers often search by part number or by what a part replaces. Products that don't list them are hard to find, on your site and on Google.",
    "agent_impact": "AI assistants match a shopper's question to your wording. Missing search terms mean missed recommendations.",
    "band_meaning": "Some products miss common search terms.",
    "category_label": "Shopper experience"
   },
   "for_your_store": {
    "human": "1% of products have a title that's only a part number, not a description, making them harder for shoppers to find by searching what the part does.",
    "machine": "AI assistants match shopper questions to your wording. Titles that are only part numbers give them less to match on."
   },
   "caveat": null,
   "tone_pct": null,
   "measured": null
  },
  {
   "key": "descriptions",
   "display_name": "Descriptions",
   "category": "customer_experience",
   "pillar": "Customer Experience",
   "score_pct": 55.0,
   "explainer": {
    "plain_name": "Product descriptions",
    "subtitle": "Are your descriptions complete and free of errors?",
    "definition": "How complete and correct your product descriptions are: length, spelling, grammar, and repeated text.",
    "shopper_impact": "Clear, well-written descriptions help shoppers understand a product quickly and trust the store.",
    "agent_impact": "AI assistants quote and summarize your descriptions, so errors and repetition carry into their answers.",
    "band_meaning": "Some descriptions have spelling, grammar, or repetition problems.",
    "category_label": "Shopper experience"
   },
   "for_your_store": {
    "human": "Under 1% of products (1 product) have spelling errors, which can make shoppers trust the listing less.",
    "machine": "AI assistants quote your descriptions directly, so any spelling errors carry into their answers."
   },
   "caveat": null,
   "tone_pct": null,
   "measured": null
  },
  {
   "key": "feed_protocol_compliance",
   "display_name": "Feed Protocol Compliance",
   "category": "strategic",
   "pillar": "Strategic Readiness",
   "score_pct": 84.0,
   "explainer": {
    "plain_name": "Shopping-channel readiness",
    "subtitle": "Do your products meet what Google Shopping and marketplaces require?",
    "definition": "Whether each product has the fields shopping channels require: a product ID (a barcode number, manufacturer part number, or SKU), price, currency, stock status, and condition.",
    "shopper_impact": "Products that fail these checks don't appear on Google Shopping and similar channels, so shoppers there never see them.",
    "agent_impact": "Shopping channels and AI shopping assistants reject or rank down products that are missing required fields.",
    "band_meaning": "Most products would be rejected or limited by shopping channels.",
    "category_label": "Google & AI readiness"
   },
   "for_your_store": {
    "human": "All products are missing a barcode in the feed, which can limit how they're shown on Google Shopping and similar channels.",
    "machine": "Shopping channels and AI assistants rank down products missing required fields like barcodes, affecting all 2,192 products here."
   },
   "caveat": "This score gives credit for each required field a product has, but a channel takes a product only when it has them all. As they are, none of your products are ready for Google Shopping.",
   "tone_pct": 0.0,
   "measured": null
  },
  {
   "key": "nl_parseability",
   "display_name": "Natural-Language Parseability",
   "category": "strategic",
   "pillar": "Strategic Readiness",
   "score_pct": 87.6,
   "explainer": {
    "plain_name": "AI readability",
    "subtitle": "Can an AI assistant pull clear facts from your pages?",
    "definition": "Whether your pages state facts plainly (specs in a list or table instead of buried in paragraphs, FAQs, uses, and a clearly named brand and model) and show them without waiting for scripts to load.",
    "shopper_impact": "Pages with clear facts and FAQs answer shoppers' questions before they have to ask.",
    "agent_impact": "AI assistants answer shopper questions from these facts. If they can't pull them out, they recommend a product they can.",
    "band_meaning": "Some facts are buried in paragraphs or missing.",
    "category_label": "Google & AI readiness"
   },
   "for_your_store": {
    "human": "62% of products don't say what job or equipment they're for, and 5% lack concrete facts like sizes or materials, leaving shoppers without answers.",
    "machine": "AI assistants pull facts from descriptions. With 62% missing use-case content, they recommend products they can describe instead."
   },
   "caveat": null,
   "tone_pct": null,
   "measured": null
  },
  {
   "key": "imagery",
   "display_name": "Imagery",
   "category": "customer_experience",
   "pillar": "Customer Experience",
   "score_pct": 92.7,
   "explainer": {
    "plain_name": "Product images",
    "subtitle": "Do shoppers get enough good photos?",
    "definition": "Whether each product has images, how many, whether they are sharp enough, and whether they have alt text (a short written description of the image).",
    "shopper_impact": "Shoppers can't touch the product, so photos do the selling. Too few or blurry images cost sales and lead to returns.",
    "agent_impact": "Google Shopping and AI assistants need a working image to show a product at all, and they read alt text to understand it.",
    "band_meaning": "Some products are short on images, image quality, or alt text.",
    "category_label": "Shopper experience"
   },
   "for_your_store": {
    "human": "Some products are short on images, image quality, or alt text, which can cost shoppers confidence and lead to more returns.",
    "machine": "Google Shopping and AI assistants need a working image and alt text to show and understand a product."
   },
   "caveat": null,
   "tone_pct": null,
   "measured": null
  },
  {
   "key": "agent_required_attrs",
   "display_name": "Agent-Required Attributes",
   "category": "strategic",
   "pillar": "Strategic Readiness",
   "score_pct": 93.7,
   "explainer": {
    "plain_name": "AI shopping essentials",
    "subtitle": "Do AI shopping assistants get the basics for every product?",
    "definition": "The core facts AI shopping assistants need for every product: brand, price with currency, stock status, a product ID (such as a barcode number), a working image, and the page link.",
    "shopper_impact": "These basics are what shoppers see first in an AI assistant's answer.",
    "agent_impact": "Without them, AI shopping assistants can't recommend or link to the product with confidence.",
    "band_meaning": "Some products are missing basics AI assistants need.",
    "category_label": "Google & AI readiness"
   },
   "for_your_store": {
    "human": "2% of products are missing a brand and 2% are missing one of the 9 core AI commerce facts, which are what shoppers first see in an AI answer.",
    "machine": "All products are missing a barcode, and 2% are missing brand or core facts, so AI assistants can't recommend them with confidence."
   },
   "caveat": null,
   "tone_pct": null,
   "measured": null
  },
  {
   "key": "structured_data",
   "display_name": "Structured Data",
   "category": "strategic",
   "pillar": "Strategic Readiness",
   "score_pct": 96.7,
   "explainer": {
    "plain_name": "Product markup",
    "subtitle": "Can Google and AI assistants read your product pages?",
    "definition": "Hidden code on each product page that tells Google and AI assistants the product's name, price, stock, IDs, and ratings in a standard format.",
    "shopper_impact": "This markup powers the richer Google results that show price, stock, and star ratings right in search.",
    "agent_impact": "It is the main way Google Shopping and AI assistants read your product facts. Without it they have to guess or skip the product.",
    "band_meaning": "Most product pages carry complete markup.",
    "category_label": "Google & AI readiness"
   },
   "for_your_store": {
    "human": "2% of products are missing a star rating in their markup, so they miss out on richer search listings with ratings.",
    "machine": "Google Shopping and AI assistants read this markup to get product facts. Missing star ratings on 2% of products mean they have to guess."
   },
   "caveat": null,
   "tone_pct": null,
   "measured": null
  },
  {
   "key": "classification_correctness",
   "display_name": "Classification Correctness",
   "category": "foundational",
   "pillar": "Content Quality",
   "score_pct": 98.0,
   "explainer": {
    "plain_name": "Product categories",
    "subtitle": "Is each product filed in the right, specific category?",
    "definition": "Whether each product sits in a recognizable, specific category (for example \"Ball valves\" rather than just \"Plumbing\") and whether its breadcrumb trail agrees.",
    "shopper_impact": "Clear categories help shoppers browse to a product and find similar ones.",
    "agent_impact": "Google and AI assistants use the category to decide which searches a product can appear in.",
    "band_meaning": "Products are filed in clear, specific categories.",
    "category_label": "Product data"
   },
   "for_your_store": {
    "human": "Products are filed in clear, specific categories, making it easy for shoppers to browse and find similar items.",
    "machine": "Google and AI assistants use these categories to decide which searches a product can appear in."
   },
   "caveat": null,
   "tone_pct": null,
   "measured": null
  },
  {
   "key": "specification_accuracy",
   "display_name": "Specification Accuracy",
   "category": "foundational",
   "pillar": "Content Quality",
   "score_pct": 98.8,
   "explainer": {
    "plain_name": "Data accuracy",
    "subtitle": "Does your product information agree with itself?",
    "definition": "Whether a product's title, details, price, and product markup agree. For example, a title that says \"Large\" while the size detail says \"Small\", or two different prices on one page.",
    "shopper_impact": "Contradictions make shoppers doubt the listing and lead to wrong orders and returns.",
    "agent_impact": "When sources disagree, Google and AI assistants may distrust the product or drop it rather than guess.",
    "band_meaning": "Product information agrees across the page.",
    "category_label": "Product data"
   },
   "for_your_store": {
    "human": "Product information agrees across the page, so shoppers aren't misled into wrong orders.",
    "machine": "Consistent information means Google and AI assistants don't have to guess or drop the product due to disagreement."
   },
   "caveat": null,
   "tone_pct": null,
   "measured": null
  },
  {
   "key": "attribute_value_consistency",
   "display_name": "Attribute Value Consistency",
   "category": "foundational",
   "pillar": "Content Quality",
   "score_pct": 100.0,
   "explainer": {
    "plain_name": "Consistent product details",
    "subtitle": "Are details written the same way across products?",
    "definition": "Whether the same kind of detail is written the same way everywhere: units (\"10 in\" vs \"10 inches\"), detail names (\"Colour\" vs \"Color\"), and standard values.",
    "shopper_impact": "Inconsistent details break filters and make products hard to compare side by side.",
    "agent_impact": "Machines match exact values, so \"10in\" and \"10 inches\" look like two different things to them.",
    "band_meaning": "Details are written consistently.",
    "category_label": "Product data"
   },
   "for_your_store": {
    "human": "Details are written consistently, so shoppers can compare products side by side without confusion.",
    "machine": "Consistent values let AI assistants match products accurately instead of treating variations as different items."
   },
   "caveat": null,
   "tone_pct": null,
   "measured": null
  }
 ],
 "problems_summary": {
  "by_category": {
   "strategic": 11,
   "foundational": 7,
   "customer_experience": 18
  },
  "by_severity": {
   "low": 18,
   "high": 5,
   "medium": 11,
   "critical": 2
  },
  "by_dimension": {
   "imagery": 2,
   "findability": 5,
   "descriptions": 2,
   "merchant_data": 1,
   "agent_readiness": 1,
   "nl_parseability": 4,
   "structured_data": 2,
   "return_risk_score": 4,
   "agent_required_attrs": 3,
   "attribute_completeness": 2,
   "specification_accuracy": 2,
   "technical_documentation": 5,
   "feed_protocol_compliance": 2,
   "attribute_value_consistency": 1
  },
  "total_problems": 36,
  "total_products": 2192
 },
 "top_problems": [
  {
   "dimension_key": "findability",
   "dimension_display_name": "Findability",
   "label": "Product title is a part number, not descriptive",
   "metric_key": "title_quality",
   "severity": "critical",
   "category": "quality_issue",
   "affected_count": 29,
   "affected_pct": 1.3,
   "why_it_matters": "When the product title is just a code (e.g., \"EX7731PN04\" instead of \"4-Ton Evaporator Coil Assembly\"), the product is invisible in natural language searches, unfindable by non-technical buyers, and cannot be meaningfully indexed by AI commerce agents. Descriptive titles are the single highest-impact SEO and discoverability signal.",
   "remediation": "Replace part-number-only titles with descriptive product names that include the product type, key specifications, and brand. Keep the part number in a dedicated SKU field and in the description — it should supplement the title, not replace it. Example: \"Example Brand EX7731PN04 — 4-Ton Evaporator Coil Assembly with Drain Pan\".",
   "deprioritized": false,
   "avg_metric_value": 0.0,
   "sample_products": [
    {
     "url": null,
     "product_name": "Cond.Coil Cu/Al, EX40032",
     "metric_value": 0
    },
    {
     "url": null,
     "product_name": "Flame Cell, EX-FC2207",
     "metric_value": 0
    },
    {
     "url": null,
     "product_name": "Panel,Gas Sect, EX48T50",
     "metric_value": 0
    }
   ],
   "view_counts": {}
  },
  {
   "dimension_key": "agent_required_attrs",
   "dimension_display_name": "Agent Required Attributes",
   "label": "Missing brand for AI commerce",
   "metric_key": "has_brand",
   "severity": "high",
   "category": "missing_content",
   "affected_count": 39,
   "affected_pct": 1.8,
   "why_it_matters": "Brand is a primary filter for AI shopping queries.",
   "remediation": "Ensure every product has a brand field.",
   "deprioritized": false,
   "avg_metric_value": 0.0,
   "sample_products": [
    {
     "url": null,
     "product_name": "PVC double wye drain fitting",
     "metric_value": 0
    },
    {
     "url": null,
     "product_name": "CPVC pipe transition bushing",
     "metric_value": 0
    },
    {
     "url": null,
     "product_name": "Large fabricated PVC drain wye",
     "metric_value": 0
    }
   ],
   "view_counts": {}
  },
  {
   "dimension_key": "agent_required_attrs",
   "dimension_display_name": "Agent Required Attributes",
   "label": "Incomplete core AI commerce attributes",
   "metric_key": "core_attrs_present_pct",
   "severity": "high",
   "category": "ai_readiness",
   "affected_count": 39,
   "affected_pct": 1.8,
   "why_it_matters": "AI shopping agents rely on a core set of 9 attributes (a product identifier — GTIN, or MPN with brand — brand, price, availability, image, product URL, category, description, title) to include products in recommendations. Incomplete coverage reduces visibility in AI-generated shopping results.",
   "remediation": "Ensure all products have: GTIN (or MPN+brand), price with currency, availability status, at least one image URL, and a valid product URL. Focus on the most impactful missing fields first.",
   "deprioritized": false,
   "avg_metric_value": 77.8,
   "sample_products": [
    {
     "url": null,
     "product_name": "PVC double wye drain fitting",
     "metric_value": 77.8
    },
    {
     "url": null,
     "product_name": "CPVC pipe transition bushing",
     "metric_value": 77.8
    },
    {
     "url": null,
     "product_name": "Large fabricated PVC drain wye",
     "metric_value": 77.8
    }
   ],
   "view_counts": {}
  },
  {
   "dimension_key": "technical_documentation",
   "dimension_display_name": "Technical Documentation",
   "label": "Insufficient documentation links",
   "metric_key": "doc_link_count",
   "severity": "medium",
   "category": "below_threshold",
   "affected_count": 1990,
   "affected_pct": 90.8,
   "why_it_matters": "B2B products benefit from multiple documentation types. More documentation reduces support burden and increases buyer confidence.",
   "remediation": "Add additional documentation links: spec sheet, installation guide, wiring diagram, and application guide.",
   "deprioritized": false,
   "avg_metric_value": 0.34,
   "sample_products": [
    {
     "url": null,
     "product_name": "Eight-light bathroom vanity fixture",
     "metric_value": 1
    },
    {
     "url": null,
     "product_name": "Shallow-well pump jet assembly",
     "metric_value": 0
    },
    {
     "url": null,
     "product_name": "Condenser fan venturi ring",
     "metric_value": 0
    }
   ],
   "view_counts": {}
  },
  {
   "dimension_key": "technical_documentation",
   "dimension_display_name": "Technical Documentation",
   "label": "Missing installation guide",
   "metric_key": "has_installation_guide",
   "severity": "medium",
   "category": "missing_content",
   "affected_count": 1691,
   "affected_pct": 77.1,
   "why_it_matters": "Installation documentation reduces post-purchase support requests and returns. For installed products, this is often a requirement for the purchasing decision.",
   "remediation": "Link installation guides and manuals from product pages.",
   "deprioritized": false,
   "avg_metric_value": 0.0,
   "sample_products": [
    {
     "url": null,
     "product_name": "Eight-light bathroom vanity fixture",
     "metric_value": 0
    },
    {
     "url": null,
     "product_name": "Shallow-well pump jet assembly",
     "metric_value": 0
    },
    {
     "url": null,
     "product_name": "Condenser fan venturi ring",
     "metric_value": 0
    }
   ],
   "view_counts": {}
  },
  {
   "dimension_key": "nl_parseability",
   "dimension_display_name": "Natural Language Parseability",
   "label": "No use case content",
   "metric_key": "has_use_case_content",
   "severity": "medium",
   "category": "ai_readiness",
   "affected_count": 1356,
   "affected_pct": 61.9,
   "why_it_matters": "AI shopping assistants match products to buyer intent. Use case content is how AI understands when to recommend your product.",
   "remediation": "Add use case sections describing typical applications, ideal scenarios, and customer types.",
   "deprioritized": false,
   "avg_metric_value": 0.0,
   "sample_products": [
    {
     "url": null,
     "product_name": "Condenser fan venturi ring",
     "metric_value": 0
    },
    {
     "url": null,
     "product_name": "Two-stage gas furnace parts list",
     "metric_value": 0
    },
    {
     "url": null,
     "product_name": "Three-ton rooftop unit parts list",
     "metric_value": 0
    }
   ],
   "view_counts": {}
  },
  {
   "dimension_key": "technical_documentation",
   "dimension_display_name": "Technical Documentation",
   "label": "Missing specification sheet",
   "metric_key": "has_spec_sheet_link",
   "severity": "medium",
   "category": "missing_content",
   "affected_count": 1182,
   "affected_pct": 53.9,
   "why_it_matters": "Specification sheets are critical for B2B purchase decisions — engineers and specifiers need detailed technical data beyond what product pages typically contain.",
   "remediation": "Link manufacturer specification sheets (PDF) from product pages.",
   "deprioritized": false,
   "avg_metric_value": 0.0,
   "sample_products": [
    {
     "url": null,
     "product_name": "Condenser fan venturi ring",
     "metric_value": 0
    },
    {
     "url": null,
     "product_name": "Two-stage gas furnace parts list",
     "metric_value": 0
    },
    {
     "url": null,
     "product_name": "Outdoor unit condenser coil",
     "metric_value": 0
    }
   ],
   "view_counts": {}
  },
  {
   "dimension_key": "structured_data",
   "dimension_display_name": "Structured Data",
   "label": "Missing aggregate rating in structured data",
   "metric_key": "has_aggregate_rating",
   "severity": "medium",
   "category": "missing_content",
   "affected_count": 43,
   "affected_pct": 2.0,
   "why_it_matters": "Products with star ratings in search results see 20-30% higher click-through rates.",
   "remediation": "If your products have reviews, add aggregateRating schema with ratingValue and reviewCount.",
   "deprioritized": false,
   "avg_metric_value": 0.0,
   "sample_products": [
    {
     "url": null,
     "product_name": "Four-ton gas packaged unit parts list",
     "metric_value": 0
    },
    {
     "url": null,
     "product_name": "Single-stage gas furnace parts list",
     "metric_value": 0
    },
    {
     "url": null,
     "product_name": "Downflow gas furnace parts list",
     "metric_value": 0
    }
   ],
   "view_counts": {}
  },
  {
   "dimension_key": "technical_documentation",
   "dimension_display_name": "Technical Documentation",
   "label": "Missing safety data",
   "metric_key": "has_safety_data",
   "severity": "medium",
   "category": "missing_content",
   "affected_count": 40,
   "affected_pct": 1.8,
   "why_it_matters": "Safety data is a regulatory requirement for many B2B products. Its absence can prevent procurement approval in regulated environments.",
   "remediation": "Link safety data sheets for applicable products.",
   "deprioritized": false,
   "avg_metric_value": 0.0,
   "sample_products": [
    {
     "url": null,
     "product_name": "Insulated mini-split line set, 25 feet",
     "metric_value": 0
    },
    {
     "url": null,
     "product_name": "Two-gang blank wall plate in black",
     "metric_value": 0
    },
    {
     "url": null,
     "product_name": "Two-gang outlet wall plate in white",
     "metric_value": 0
    }
   ],
   "view_counts": {}
  },
  {
   "dimension_key": "descriptions",
   "dimension_display_name": "Descriptions",
   "label": "Spelling errors in descriptions",
   "metric_key": "spelling_accuracy_min",
   "severity": "medium",
   "category": "quality_issue",
   "affected_count": 1,
   "affected_pct": 0.0,
   "why_it_matters": "Spelling errors undermine credibility and professionalism. For B2B catalogs where trust is essential for large purchase decisions, typos signal carelessness that buyers associate with unreliable data overall.",
   "remediation": "Run automated spell-check across all product descriptions. Review flagged terms — some may be valid technical terms or brand names that need dictionary exceptions.",
   "deprioritized": false,
   "avg_metric_value": 96.67,
   "sample_products": [
    {
     "url": null,
     "product_name": "Single-gang cast iron device box",
     "metric_value": 96.66666666666667
    }
   ],
   "view_counts": {}
  }
 ],
 "findings": [
  {
   "root_cause": "title_quality",
   "title": "Product titles don't say what the product is",
   "view": null,
   "severity": "critical",
   "affected_count": 29,
   "affected_pct": 1.3,
   "reach_label": null,
   "members": [
    {
     "label": "Product title is a part number, not descriptive",
     "dimension_key": "findability",
     "dimension_display_name": "Findability",
     "metric_key": "title_quality",
     "severity": "critical",
     "affected_count": 29,
     "affected_pct": 1.3,
     "deprioritized": false
    }
   ],
   "evidence": {
    "kind": "measured_value",
    "target_text": "A title that names the product, not only a model number or SKU",
    "samples": [
     {
      "url": null,
      "product_name": "Cond.Coil Cu/Al, EX40032",
      "markup_found": null,
      "agent_view": false,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": null,
      "fields": [],
      "snippet": null,
      "prose": [],
      "measured": null,
      "category": "Miscellaneous HVAC Parts"
     },
     {
      "url": null,
      "product_name": "Flame Cell, EX-FC2207",
      "markup_found": null,
      "agent_view": false,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": null,
      "fields": [],
      "snippet": null,
      "prose": [],
      "measured": null,
      "category": "Boiler Parts"
     },
     {
      "url": null,
      "product_name": "Panel,Gas Sect, EX48T50",
      "markup_found": null,
      "agent_view": false,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": null,
      "fields": [],
      "snippet": null,
      "prose": [],
      "measured": null,
      "category": "Miscellaneous HVAC Parts"
     }
    ],
    "jsonld_example": null
   },
   "action_ref": 6,
   "typical_measured": null,
   "meaning": "Some product titles are too short, too long, or leave out the words that describe the product: its type, brand, and key details.",
   "why_it_matters": "The title is the most important text for search. Shoppers and AI assistants decide from it whether a product matches what they asked for.",
   "fallback": "Some product titles don't clearly describe what the product is.",
   "muted": false,
   "gate_reason": null,
   "writeup": {
    "headline": "Some product titles are only part numbers, not product names.",
    "what_we_found": "1% of your products have titles that don't describe the product, including “Cond.Coil Cu/Al, EX40032” and “Flame Cell, EX-FC2207”. These titles show a model number instead of naming what the product is.",
    "looks_wrong_because": "",
    "why_it_matters_to_you": "Shoppers and AI assistants read the title first to judge whether a product matches a search. A title that's only a part number gives them nothing to match on, which hurts most in replacement-parts and boiler-parts categories."
   }
  },
  {
   "root_cause": "brand",
   "title": "The brand isn't stated in your product data",
   "view": null,
   "severity": "high",
   "affected_count": 39,
   "affected_pct": 1.8,
   "reach_label": null,
   "members": [
    {
     "label": "Missing brand for AI commerce",
     "dimension_key": "agent_required_attrs",
     "dimension_display_name": "Agent Required Attributes",
     "metric_key": "has_brand",
     "severity": "high",
     "affected_count": 39,
     "affected_pct": 1.8,
     "deprioritized": false
    }
   ],
   "evidence": {
    "kind": "structured_field_absence",
    "target_text": null,
    "samples": [
     {
      "url": null,
      "product_name": "PVC double wye drain fitting",
      "markup_found": true,
      "agent_view": true,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": false,
      "fields": [
       {
        "label": "Brand",
        "present": false
       }
      ],
      "snippet": null,
      "prose": [],
      "measured": null,
      "category": "PVC Schedule 40 Double Wyes"
     },
     {
      "url": null,
      "product_name": "CPVC pipe transition bushing",
      "markup_found": true,
      "agent_view": true,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": false,
      "fields": [
       {
        "label": "Brand",
        "present": false
       }
      ],
      "snippet": null,
      "prose": [],
      "measured": null,
      "category": "CPVC Transition Bushings"
     },
     {
      "url": null,
      "product_name": "Large fabricated PVC drain wye",
      "markup_found": true,
      "agent_view": true,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": false,
      "fields": [
       {
        "label": "Brand",
        "present": false
       }
      ],
      "snippet": null,
      "prose": [],
      "measured": null,
      "category": "PVC Schedule 40 Wyes"
     }
    ],
    "jsonld_example": {
     "product_name": "PVC double wye drain fitting",
     "url": null,
     "current": "{\n  \"mpn\": \"EX-4076-528\",\n  \"sku\": \"EX-4076-528\",\n  \"url\": \"https://www.example.com/products/pvc-double-wye-drain-fitting\",\n  \"name\": \"PVC double wye drain fitting\",\n  \"@type\": \"Product\",\n  \"image\": \"https://www.example.com/images/product.jpg\",\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"price\": \"129.00\",\n    \"seller\": {\n      \"name\": \"Example Plumbing & HVAC Distributor\",\n      \"@type\": \"Organization\"\n    },\n    \"availability\": \"https://schema.org/OutOfStock\",\n    \"priceCurrency\": \"USD\"\n  },\n  \"@context\": \"http://schema.org\",\n  \"description\": \"PVC double wye drain fitting. Specifications and installation notes from the product data.\"\n}",
     "corrected": "{\n  \"mpn\": \"EX-4076-528\",\n  \"sku\": \"EX-4076-528\",\n  \"url\": \"https://www.example.com/products/pvc-double-wye-drain-fitting\",\n  \"name\": \"PVC double wye drain fitting\",\n  \"@type\": \"Product\",\n  \"image\": \"https://www.example.com/images/product.jpg\",\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"price\": \"129.00\",\n    \"seller\": {\n      \"name\": \"Example Plumbing & HVAC Distributor\",\n      \"@type\": \"Organization\"\n    },\n    \"availability\": \"https://schema.org/OutOfStock\",\n    \"priceCurrency\": \"USD\"\n  },\n  \"@context\": \"https://schema.org\",\n  \"description\": \"PVC double wye drain fitting. Specifications and installation notes from the product data.\",\n  \"brand\": {\n    \"@type\": \"Brand\",\n    \"name\": \"<brand name>\"\n  },\n  \"gtin\": \"00012345678905\"\n}"
    }
   },
   "action_ref": 3,
   "typical_measured": null,
   "meaning": "The hidden product information on your pages doesn't name the brand. Shoppers may see your logo, but Google and AI assistants read the brand from this data, not from the page design.",
   "why_it_matters": "Many shoppers search by brand, and shopping channels require it. Without it your products miss brand searches and can be turned away by shopping feeds.",
   "fallback": "Your product data doesn't name the brand, so brand searches and shopping feeds miss your products.",
   "muted": false,
   "gate_reason": null,
   "writeup": {
    "headline": "Brand isn't stated in your product data for some products.",
    "what_we_found": "2% of your products are missing a brand in the product information your pages publish for search engines, including “PVC double wye drain fitting” and “CPVC pipe transition bushing”.",
    "looks_wrong_because": "Shoppers may see your logo on the page, but Google and AI assistants read the brand from this hidden product information, not from the page design.",
    "why_it_matters_to_you": "Many shoppers search by brand, and shopping channels require it. Without it, these PVC fittings and transition bushings miss brand searches and can be turned away by shopping feeds."
   }
  },
  {
   "root_cause": "feed_coverage",
   "title": "Products are missing fields shopping channels require",
   "view": null,
   "severity": "high",
   "affected_count": 39,
   "affected_pct": 1.8,
   "reach_label": null,
   "members": [
    {
     "label": "Incomplete core AI commerce attributes",
     "dimension_key": "agent_required_attrs",
     "dimension_display_name": "Agent Required Attributes",
     "metric_key": "core_attrs_present_pct",
     "severity": "high",
     "affected_count": 39,
     "affected_pct": 1.8,
     "deprioritized": false
    }
   ],
   "evidence": {
    "kind": "value_threshold",
    "target_text": "All 9 core facts AI shopping assistants look for, present on every product",
    "samples": [
     {
      "url": null,
      "product_name": "PVC double wye drain fitting",
      "markup_found": null,
      "agent_view": false,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": null,
      "fields": [],
      "snippet": null,
      "prose": [],
      "measured": "77.8% of the core facts AI shopping assistants look for; missing a product identifier (a barcode, or a brand and part number) and brand",
      "category": "PVC Schedule 40 Double Wyes"
     },
     {
      "url": null,
      "product_name": "CPVC pipe transition bushing",
      "markup_found": null,
      "agent_view": false,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": null,
      "fields": [],
      "snippet": null,
      "prose": [],
      "measured": "77.8% of the core facts AI shopping assistants look for; missing a product identifier (a barcode, or a brand and part number) and brand",
      "category": "CPVC Transition Bushings"
     },
     {
      "url": null,
      "product_name": "Large fabricated PVC drain wye",
      "markup_found": null,
      "agent_view": false,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": null,
      "fields": [],
      "snippet": null,
      "prose": [],
      "measured": "77.8% of the core facts AI shopping assistants look for; missing a product identifier (a barcode, or a brand and part number) and brand",
      "category": "PVC Schedule 40 Wyes"
     }
    ],
    "jsonld_example": null
   },
   "action_ref": 3,
   "typical_measured": "77.8% of the core facts AI shopping assistants look for",
   "meaning": "Google Merchant Center, marketplaces, and AI shopping assistants each require a set of product facts, such as brand, price, identifiers, category, and key details. Some of your products are missing some of them.",
   "why_it_matters": "A product missing a required field can be rejected or shown less often in shopping feeds, and AI assistants skip products they can't describe completely.",
   "fallback": "Some products lack fields that Google Shopping and AI shopping assistants require.",
   "muted": false,
   "gate_reason": null,
   "writeup": {
    "headline": "Some products are missing fields shopping channels require.",
    "what_we_found": "2% of your products are missing fields shopping channels require, including “PVC double wye drain fitting” and “CPVC pipe transition bushing”. On average these products carry 77.8% of the core facts AI shopping assistants look for, missing a product identifier and brand.",
    "looks_wrong_because": "",
    "why_it_matters_to_you": "A product missing a required field can be shown less often, or rejected, in shopping feeds, and AI assistants skip products they can't describe completely. That's a real risk for these PVC fittings and transition bushings."
   }
  },
  {
   "root_cause": "product_docs",
   "title": "Technical documents are missing",
   "view": null,
   "severity": "medium",
   "affected_count": 1990,
   "affected_pct": 90.8,
   "reach_label": null,
   "members": [
    {
     "label": "Insufficient documentation links",
     "dimension_key": "technical_documentation",
     "dimension_display_name": "Technical Documentation",
     "metric_key": "doc_link_count",
     "severity": "medium",
     "affected_count": 1990,
     "affected_pct": 90.8,
     "deprioritized": false
    },
    {
     "label": "Missing installation guide",
     "dimension_key": "technical_documentation",
     "dimension_display_name": "Technical Documentation",
     "metric_key": "has_installation_guide",
     "severity": "medium",
     "affected_count": 1691,
     "affected_pct": 77.1,
     "deprioritized": false
    },
    {
     "label": "Missing specification sheet",
     "dimension_key": "technical_documentation",
     "dimension_display_name": "Technical Documentation",
     "metric_key": "has_spec_sheet_link",
     "severity": "medium",
     "affected_count": 1182,
     "affected_pct": 53.9,
     "deprioritized": false
    },
    {
     "label": "Missing safety data",
     "dimension_key": "technical_documentation",
     "dimension_display_name": "Technical Documentation",
     "metric_key": "has_safety_data",
     "severity": "medium",
     "affected_count": 40,
     "affected_pct": 1.8,
     "deprioritized": false
    },
    {
     "label": "Missing CAD or 3D files",
     "dimension_key": "technical_documentation",
     "dimension_display_name": "Technical Documentation",
     "metric_key": "has_cad_files",
     "severity": "low",
     "affected_count": 162,
     "affected_pct": 7.4,
     "deprioritized": false
    }
   ],
   "evidence": {
    "kind": "value_threshold",
    "target_text": "At least 3 distinct document links per product",
    "samples": [
     {
      "url": null,
      "product_name": "Eight-light bathroom vanity fixture",
      "markup_found": null,
      "agent_view": false,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": null,
      "fields": [],
      "snippet": null,
      "prose": [],
      "measured": "1 document link(s)",
      "category": "Lighting Fixtures"
     },
     {
      "url": null,
      "product_name": "Shallow-well pump jet assembly",
      "markup_found": null,
      "agent_view": false,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": null,
      "fields": [],
      "snippet": null,
      "prose": [],
      "measured": "0 document link(s)",
      "category": "Pump Accessories"
     },
     {
      "url": null,
      "product_name": "Condenser fan venturi ring",
      "markup_found": null,
      "agent_view": false,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": null,
      "fields": [],
      "snippet": null,
      "prose": [],
      "measured": "0 document link(s)",
      "category": "Miscellaneous HVAC Parts"
     }
    ],
    "jsonld_example": null
   },
   "action_ref": 1,
   "typical_measured": "0.3 document link(s)",
   "meaning": "Product pages don't link to spec sheets, installation guides, safety data sheets, or CAD drawings.",
   "why_it_matters": "Engineers and buyers need spec sheets and installation guides to specify a product. Without them, they buy from a supplier who has them.",
   "fallback": "Product pages don't link to spec sheets, manuals, or safety documents.",
   "muted": false,
   "gate_reason": null,
   "writeup": {
    "headline": "Most products are missing the technical documents buyers need.",
    "what_we_found": "91% of your products fall short of having at least 3 document links, including “Eight-light bathroom vanity fixture” with 1 link and “Shallow-well pump jet assembly” with 0 links. On average, affected products carry only 0.3 document links.",
    "looks_wrong_because": "",
    "why_it_matters_to_you": "Engineers and buyers need spec sheets and installation guides to specify lighting fixtures, pump accessories and parts. Without these documents, they buy from a supplier who provides them."
   }
  },
  {
   "root_cause": "descriptive_content",
   "title": "Descriptions don't answer shoppers' questions",
   "view": null,
   "severity": "medium",
   "affected_count": 1356,
   "affected_pct": 61.9,
   "reach_label": null,
   "members": [
    {
     "label": "No use case content",
     "dimension_key": "nl_parseability",
     "dimension_display_name": "Natural Language Parseability",
     "metric_key": "has_use_case_content",
     "severity": "medium",
     "affected_count": 1356,
     "affected_pct": 61.9,
     "deprioritized": false
    },
    {
     "label": "Low fact density in descriptions",
     "dimension_key": "nl_parseability",
     "dimension_display_name": "Natural Language Parseability",
     "metric_key": "fact_density",
     "severity": "low",
     "affected_count": 100,
     "affected_pct": 4.6,
     "deprioritized": false
    }
   ],
   "evidence": {
    "kind": "measured_value",
    "target_text": "Copy that says what job or equipment the product is for, or how it's installed or used (a \"replaces or fits\" statement counts; a bare name or a spec list doesn't)",
    "samples": [
     {
      "url": null,
      "product_name": "Condenser fan venturi ring",
      "markup_found": null,
      "agent_view": false,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": null,
      "fields": [],
      "snippet": null,
      "prose": [],
      "measured": null,
      "category": "Miscellaneous HVAC Parts"
     },
     {
      "url": null,
      "product_name": "Two-stage gas furnace parts list",
      "markup_found": null,
      "agent_view": false,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": null,
      "fields": [],
      "snippet": null,
      "prose": [],
      "measured": null,
      "category": "Obsolete HVAC Equipment"
     },
     {
      "url": null,
      "product_name": "Three-ton rooftop unit parts list",
      "markup_found": null,
      "agent_view": false,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": null,
      "fields": [],
      "snippet": null,
      "prose": [],
      "measured": null,
      "category": "Obsolete HVAC Equipment"
     }
    ],
    "jsonld_example": null
   },
   "action_ref": 4,
   "typical_measured": null,
   "meaning": "Your descriptions say little about concrete facts, who or what the product is for, or common questions, and some don't clearly name the product and its brand.",
   "why_it_matters": "AI shopping assistants answer shoppers' questions from your page text. If the answer isn't there, they recommend a product whose page has it.",
   "fallback": "Descriptions lack concrete facts, uses, or answers to common questions.",
   "muted": false,
   "gate_reason": null,
   "writeup": {
    "headline": "Descriptions don't say what the product is for or how it's used.",
    "what_we_found": "62% of your products fall short of having copy that explains the job, equipment, or installation the product is for, including “Condenser fan venturi ring” and “Two-stage gas furnace parts list”.",
    "looks_wrong_because": "",
    "why_it_matters_to_you": "AI shopping assistants answer shoppers' questions from your page text. If the answer isn't there for these HVAC equipment parts, they recommend a product whose page has it."
   }
  },
  {
   "root_cause": "ratings",
   "title": "Your star ratings aren't visible to search engines",
   "view": null,
   "severity": "medium",
   "affected_count": 43,
   "affected_pct": 2.0,
   "reach_label": null,
   "members": [
    {
     "label": "Missing aggregate rating in structured data",
     "dimension_key": "structured_data",
     "dimension_display_name": "Structured Data",
     "metric_key": "has_aggregate_rating",
     "severity": "medium",
     "affected_count": 43,
     "affected_pct": 2.0,
     "deprioritized": false
    }
   ],
   "evidence": {
    "kind": "structured_field_absence",
    "target_text": null,
    "samples": [
     {
      "url": null,
      "product_name": "Four-ton gas packaged unit parts list",
      "markup_found": true,
      "agent_view": true,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": false,
      "fields": [
       {
        "label": "Star rating",
        "present": false
       }
      ],
      "snippet": null,
      "prose": [],
      "measured": null,
      "category": "Obsolete HVAC Equipment"
     },
     {
      "url": null,
      "product_name": "Single-stage gas furnace parts list",
      "markup_found": true,
      "agent_view": true,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": false,
      "fields": [
       {
        "label": "Star rating",
        "present": false
       }
      ],
      "snippet": null,
      "prose": [],
      "measured": null,
      "category": "Obsolete HVAC Equipment"
     },
     {
      "url": null,
      "product_name": "Downflow gas furnace parts list",
      "markup_found": true,
      "agent_view": true,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": false,
      "fields": [
       {
        "label": "Star rating",
        "present": false
       }
      ],
      "snippet": null,
      "prose": [],
      "measured": null,
      "category": "Obsolete HVAC Equipment"
     }
    ],
    "jsonld_example": null
   },
   "action_ref": 7,
   "typical_measured": null,
   "meaning": "Your product pages don't publish a star rating or review count in the product information search engines read. If you collect reviews, they aren't reaching Google or AI assistants.",
   "why_it_matters": "Star ratings shown in search results draw more clicks, and AI assistants favor products with visible reviews.",
   "fallback": "No star ratings or review counts reach search engines from your product pages.",
   "muted": false,
   "gate_reason": null,
   "writeup": {
    "headline": "Your star ratings aren't visible to search engines",
    "what_we_found": "No star ratings or review counts reach search engines from your product pages. It affects 2% of your products.",
    "looks_wrong_because": "",
    "why_it_matters_to_you": "Star ratings shown in search results draw more clicks, and AI assistants favor products with visible reviews."
   }
  },
  {
   "root_cause": "descriptions",
   "title": "Product descriptions are too thin or contain errors",
   "view": null,
   "severity": "medium",
   "affected_count": 1724,
   "affected_pct": 78.6,
   "reach_label": null,
   "members": [
    {
     "label": "Spelling errors in descriptions",
     "dimension_key": "descriptions",
     "dimension_display_name": "Descriptions",
     "metric_key": "spelling_accuracy_min",
     "severity": "medium",
     "affected_count": 1,
     "affected_pct": 0.0,
     "deprioritized": false
    },
    {
     "label": "Thin descriptions increase return risk",
     "dimension_key": "return_risk_score",
     "dimension_display_name": "Return Risk",
     "metric_key": "description_depth",
     "severity": "low",
     "affected_count": 1724,
     "affected_pct": 78.6,
     "deprioritized": false
    }
   ],
   "evidence": {
    "kind": "value_threshold",
    "target_text": "A description of at least 100 words",
    "samples": [
     {
      "url": null,
      "product_name": "Condenser fan venturi ring",
      "markup_found": null,
      "agent_view": false,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": null,
      "fields": [],
      "snippet": null,
      "prose": [],
      "measured": "25 words of description",
      "category": "Miscellaneous HVAC Parts"
     },
     {
      "url": null,
      "product_name": "Two-stage gas furnace parts list",
      "markup_found": null,
      "agent_view": false,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": null,
      "fields": [],
      "snippet": null,
      "prose": [],
      "measured": "28 words of description",
      "category": "Obsolete HVAC Equipment"
     },
     {
      "url": null,
      "product_name": "Outdoor unit condenser coil",
      "markup_found": null,
      "agent_view": false,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": null,
      "fields": [],
      "snippet": null,
      "prose": [],
      "measured": "25 words of description",
      "category": "Condenser Parts"
     }
    ],
    "jsonld_example": null
   },
   "action_ref": 9,
   "typical_measured": "33.7 words of description",
   "meaning": "Some descriptions are too short, contain spelling or grammar mistakes, or repeat sentences.",
   "why_it_matters": "The description is where shoppers decide. Thin or error-filled copy lowers trust and sales, and gives AI assistants little to work with.",
   "fallback": "Some product descriptions are too short or contain errors.",
   "muted": false,
   "gate_reason": null,
   "writeup": {
    "headline": "Product descriptions are too thin to answer buyer questions.",
    "what_we_found": "79% of your products fall short of a 100-word description, including “Condenser fan venturi ring” with 25 words and “Two-stage gas furnace parts list” with 28 words. Affected products average 33.7 words of description.",
    "looks_wrong_because": "",
    "why_it_matters_to_you": "A short description leaves buyers guessing about size and what the part fits for these replacement parts, obsolete HVAC equipment and condenser parts, and that guessing drives returns and gives AI assistants little to work with."
   }
  },
  {
   "root_cause": "identifiers",
   "title": "Product identifiers are missing from your product pages",
   "view": null,
   "severity": "low",
   "affected_count": 2192,
   "affected_pct": 100.0,
   "reach_label": null,
   "members": [
    {
     "label": "No GTIN (MPN+brand substitute may apply)",
     "dimension_key": "agent_required_attrs",
     "dimension_display_name": "Agent Required Attributes",
     "metric_key": "has_gtin",
     "severity": "low",
     "affected_count": 2192,
     "affected_pct": 100.0,
     "deprioritized": false
    },
    {
     "label": "No GTIN in feed (MPN+brand substitute may apply)",
     "dimension_key": "feed_protocol_compliance",
     "dimension_display_name": "Feed Protocol Compliance",
     "metric_key": "gtin_present",
     "severity": "low",
     "affected_count": 2192,
     "affected_pct": 100.0,
     "deprioritized": false
    }
   ],
   "evidence": {
    "kind": "structured_field_absence",
    "target_text": null,
    "samples": [
     {
      "url": null,
      "product_name": "Eight-light bathroom vanity fixture",
      "markup_found": true,
      "agent_view": true,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": false,
      "fields": [
       {
        "label": "Barcode (GTIN / UPC / EAN)",
        "present": false
       }
      ],
      "snippet": null,
      "prose": [],
      "measured": null,
      "category": "Lighting Fixtures"
     },
     {
      "url": null,
      "product_name": "Shallow-well pump jet assembly",
      "markup_found": true,
      "agent_view": true,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": false,
      "fields": [
       {
        "label": "Barcode (GTIN / UPC / EAN)",
        "present": false
       }
      ],
      "snippet": null,
      "prose": [],
      "measured": null,
      "category": "Pump Accessories"
     },
     {
      "url": null,
      "product_name": "Condenser fan venturi ring",
      "markup_found": true,
      "agent_view": true,
      "variant_count": 0,
      "page_shows_missing": false,
      "scripts_add_markup": false,
      "fields": [
       {
        "label": "Barcode (GTIN / UPC / EAN)",
        "present": false
       }
      ],
      "snippet": null,
      "prose": [],
      "measured": null,
      "category": "Miscellaneous HVAC Parts"
     }
    ],
    "jsonld_example": null
   },
   "action_ref": 2,
   "typical_measured": null,
   "meaning": "Your product pages' structured data (the hidden product information search engines and purchasing systems read) is missing some of the numbers buyers match on: manufacturer part numbers (MPN), barcodes (GTIN or UPC), or SKUs — the examples show which ones. Having them in your ERP or product database doesn't count until they appear on the page.",
   "why_it_matters": "Trade buyers search by manufacturer part number, and marketplaces, distributor feeds, and AI purchasing agents match products by GTIN or MPN. Missing numbers mean missed searches and products that can't be matched or compared.",
   "fallback": "Your product pages are missing some of the part numbers or barcodes that buyers and purchasing systems match products on.",
   "muted": false,
   "gate_reason": null,
   "writeup": {
    "headline": "No product pages publish a barcode for shoppers or channels.",
    "what_we_found": "100% of your products are missing a barcode (GTIN / UPC / EAN) in the product information your pages publish, including “Eight-light bathroom vanity fixture” and “Shallow-well pump jet assembly”.",
    "looks_wrong_because": "Having these numbers in your own product database doesn't count until they appear on the page itself.",
    "why_it_matters_to_you": "Trade buyers search by manufacturer part number, and marketplaces, distributor feeds, and AI purchasing agents match products by GTIN or MPN. Missing these numbers means missed searches for lighting fixtures, pump accessories and replacement parts."
   }
  }
 ],
 "action_plan": [
  {
   "title": "Improve your technical documents",
   "dimension_key": "technical_documentation",
   "dimension_display_name": "Technical Documentation",
   "problem_count": 5,
   "problem_labels": [
    "Insufficient documentation links",
    "Missing installation guide",
    "Missing specification sheet",
    "Missing safety data",
    "Missing CAD or 3D files"
   ],
   "remediations": [
    "Add additional documentation links: spec sheet, installation guide, wiring diagram, and application guide.",
    "Link installation guides and manuals from product pages.",
    "Link manufacturer specification sheets (PDF) from product pages.",
    "Link safety data sheets for applicable products.",
    "Make manufacturer CAD files (DWG, STEP, STL) available for download."
   ],
   "platform_steps": [],
   "affected_pct": 90.8,
   "affected_count": 1990,
   "reach_label": "Insufficient documentation links",
   "estimated_lift_pts": null,
   "effort": "medium",
   "spec": {
    "goal": "Fixed means every product links at least 3 documents a tradesperson needs — spec sheet, installation guide, and safety data where one exists.",
    "requirements": [
     {
      "check": "Insufficient documentation links",
      "current": "1990 of 2192 products fall short (affected products average: 0.3 document link(s))",
      "target": "At least 3 distinct document links per product",
      "covered_by": null
     },
     {
      "check": "Missing installation guide",
      "current": "1691 of 2192 products fall short",
      "target": "An installation guide or manual linked from the product page",
      "covered_by": null
     },
     {
      "check": "Missing specification sheet",
      "current": "1182 of 2192 products fall short",
      "target": "A specification sheet linked from the product page",
      "covered_by": null
     },
     {
      "check": "Missing safety data",
      "current": "40 of 2192 products fall short",
      "target": "A safety data sheet or safety warnings linked from the product page",
      "covered_by": null
     },
     {
      "check": "Missing CAD or 3D files",
      "current": "162 of 2192 products fall short",
      "target": "CAD files, 3D models, or dimensional drawings linked from the product page",
      "covered_by": null
     }
    ],
    "affected_count": 1990,
    "affected_widest": true,
    "example_products": [
     {
      "name": "Eight-light bathroom vanity fixture",
      "url": null,
      "product_name": "Eight-light bathroom vanity fixture"
     },
     {
      "name": "Shallow-well pump jet assembly",
      "url": null,
      "product_name": "Shallow-well pump jet assembly"
     },
     {
      "name": "Condenser fan venturi ring",
      "url": null,
      "product_name": "Condenser fan venturi ring"
     }
    ],
    "content_tasks": [
     "Upload and link a specification sheet for every product, starting with “Condenser fan venturi ring”, which currently has none.",
     "Upload and link an installation guide or manual for every product that has one, such as “Shallow-well pump jet assembly”.",
     "Upload and link a safety data sheet or safety warnings where one exists.",
     "Upload CAD files, 3D models, or dimensional drawings where they exist."
    ],
    "developer_tasks": [
     "Make document links appear as plain links in the page HTML, not only inside a script-driven tab, and label each link with the document type (for example, “Installation guide (PDF)”)."
    ],
    "snippet": null,
    "acceptance": [
     "Every product that has a spec sheet, guide, or safety data sheet links it from its page."
    ],
    "verify": [
     "Open three product pages and follow each document link; each should open the right file."
    ],
    "platform": null,
    "source": "llm",
    "covered_by": []
   },
   "check_keys": [
    "technical_documentation.doc_link_count",
    "technical_documentation.has_installation_guide",
    "technical_documentation.has_spec_sheet_link",
    "technical_documentation.has_safety_data",
    "technical_documentation.has_cad_files"
   ]
  },
  {
   "title": "Improve your shopping-channel readiness",
   "dimension_key": "feed_protocol_compliance",
   "dimension_display_name": "Feed Protocol Compliance",
   "problem_count": 2,
   "problem_labels": [
    "No GTIN in feed (MPN+brand substitute may apply)",
    "Missing product condition"
   ],
   "remediations": [
    "Publish the GTIN where the manufacturer assigned one; otherwise ensure brand + MPN are present so the feed carries a valid substitute identifier.",
    "Set condition to \"new\" for all new products in structured data and feed exports."
   ],
   "platform_steps": [],
   "affected_pct": 100.0,
   "affected_count": 2192,
   "reach_label": "No GTIN in feed (MPN+brand substitute may apply)",
   "estimated_lift_pts": null,
   "effort": "high",
   "spec": {
    "goal": "Fixed means every product in your feed carries a barcode or brand-and-SKU and a stated condition, so shopping channels and AI assistants can read them.",
    "requirements": [
     {
      "check": "No GTIN in feed (MPN+brand substitute may apply)",
      "current": "Missing on 2192 of 2192 products",
      "target": "Every product with a barcode publishes it; one without (own brand, made to order) gives its brand and SKU, and the feed says it has no identifier",
      "covered_by": null
     },
     {
      "check": "Missing product condition",
      "current": "Missing on 2192 of 2192 products",
      "target": "Every product page publishes: Condition (new or used)",
      "covered_by": null
     }
    ],
    "affected_count": 2192,
    "affected_widest": true,
    "example_products": [
     {
      "name": "Condenser fan venturi ring",
      "url": null,
      "product_name": "Condenser fan venturi ring"
     },
     {
      "name": "Two-stage gas furnace parts list",
      "url": null,
      "product_name": "Two-stage gas furnace parts list"
     },
     {
      "name": "Outdoor unit condenser coil",
      "url": null,
      "product_name": "Outdoor unit condenser coil"
     }
    ],
    "content_tasks": [
     "Add the barcode (GTIN, UPC, or EAN) for every product that has one, starting with “Condenser fan venturi ring”.",
     "For own-brand products with no barcode, make sure each has a brand and a unique SKU entered."
    ],
    "developer_tasks": [
     "Map the store's product data to the feed fields: id, title, description, link, image_link, price, availability, brand, gtin, and mpn.",
     "Publish the same identifiers (gtin) in the product markup so the feed and the page agree.",
     "Publish itemCondition on the offers of the product and every variant (NewCondition, UsedCondition, or RefurbishedCondition, as applies), so the page states what the feed sends."
    ],
    "snippet": null,
    "acceptance": [
     "Every product in the feed has title, description, link, image, price, stock status, and brand.",
     "Products with a barcode send it in the feed; products without one send brand and a part number or SKU.",
     "The price and stock status in the feed match the product page."
    ],
    "verify": [
     "In Google Merchant Center, open the product diagnostics and check that no products are disapproved for missing identifiers, price, or availability."
    ],
    "platform": null,
    "source": "llm",
    "covered_by": []
   },
   "check_keys": [
    "feed_protocol_compliance.gtin_present",
    "feed_protocol_compliance.condition_present"
   ]
  },
  {
   "title": "Improve your AI shopping essentials",
   "dimension_key": "agent_required_attrs",
   "dimension_display_name": "Agent-Required Attributes",
   "problem_count": 3,
   "problem_labels": [
    "Missing brand for AI commerce",
    "Incomplete core AI commerce attributes",
    "No GTIN (MPN+brand substitute may apply)"
   ],
   "remediations": [
    "Ensure every product has a brand field.",
    "Ensure all products have: GTIN (or MPN+brand), price with currency, availability status, at least one image URL, and a valid product URL. Focus on the most impactful missing fields first.",
    "Publish the GTIN where the manufacturer assigned one. For private-label or GTIN-exempt products, ensure MPN + brand are present as the substitute."
   ],
   "platform_steps": [],
   "affected_pct": 100.0,
   "affected_count": 2192,
   "reach_label": "No GTIN (MPN+brand substitute may apply)",
   "estimated_lift_pts": null,
   "effort": "medium",
   "spec": {
    "goal": "Fixed means every product publishes the 9 core facts AI shopping assistants check for, including brand, on every product page.",
    "requirements": [
     {
      "check": "Missing brand for AI commerce",
      "current": "Missing on 39 of 2192 products",
      "target": "Every product page publishes: Brand",
      "covered_by": null
     },
     {
      "check": "Incomplete core AI commerce attributes",
      "current": "39 of 2192 products fall short (affected products average: 77.8% of the core facts AI shopping assistants look for)",
      "target": "All 9 core facts AI shopping assistants look for, present on every product",
      "covered_by": null
     },
     {
      "check": "No GTIN (MPN+brand substitute may apply)",
      "current": "Missing on 2192 of 2192 products",
      "target": "Every product with a barcode publishes it; one without (own brand, made to order) gives its brand and SKU, and the feed says it has no identifier",
      "covered_by": 2
     }
    ],
    "affected_count": 2192,
    "affected_widest": true,
    "example_products": [
     {
      "name": "PVC double wye drain fitting",
      "url": null,
      "product_name": "PVC double wye drain fitting"
     },
     {
      "name": "CPVC pipe transition bushing",
      "url": null,
      "product_name": "CPVC pipe transition bushing"
     },
     {
      "name": "Large fabricated PVC drain wye",
      "url": null,
      "product_name": "Large fabricated PVC drain wye"
     }
    ],
    "content_tasks": [
     "Fill in the brand field for every product, starting with “PVC double wye drain fitting”.",
     "Check products missing a brand also have a product identifier (barcode, or brand and part number) filled in."
    ],
    "developer_tasks": [
     "Make sure the product markup of every product page carries image and brand, on each variant too, while keeping every property it already publishes."
    ],
    "snippet": null,
    "acceptance": [
     "Each product page publishes price, currency, stock status, brand, an image, and an identifier in its product markup."
    ],
    "verify": [
     "Paste three product page addresses into Google's Rich Results Test (search.google.com/test/rich-results); each Product item should list the price, currency, stock status, and brand."
    ],
    "platform": null,
    "source": "llm",
    "covered_by": []
   },
   "check_keys": [
    "agent_required_attrs.has_brand",
    "agent_required_attrs.core_attrs_present_pct",
    "agent_required_attrs.has_gtin"
   ]
  },
  {
   "title": "Improve your AI readability",
   "dimension_key": "nl_parseability",
   "dimension_display_name": "Natural-Language Parseability",
   "problem_count": 2,
   "problem_labels": [
    "No use case content",
    "Low fact density in descriptions"
   ],
   "remediations": [
    "Add use case sections describing typical applications, ideal scenarios, and customer types.",
    "Enrich descriptions with specific, citable facts: dimensions, capacity ratings, efficiency numbers, and performance specifications."
   ],
   "platform_steps": [],
   "affected_pct": 61.9,
   "affected_count": 1356,
   "reach_label": "No use case content",
   "estimated_lift_pts": null,
   "effort": "medium",
   "spec": {
    "goal": "Fixed means every product description explains what the product is for or how it's used, and states concrete facts, not only marketing copy.",
    "requirements": [
     {
      "check": "No use case content",
      "current": "1356 of 2192 products fall short",
      "target": "Copy that says what job or equipment the product is for, or how it's installed or used (a \"replaces or fits\" statement counts; a bare name or a spec list doesn't)",
      "covered_by": null
     },
     {
      "check": "Low fact density in descriptions",
      "current": "100 of 2192 products fall short (affected products average: 1.5 numbers per 100 words of description)",
      "target": "Descriptions that state concrete facts (sizes, materials, specs), not only marketing copy",
      "covered_by": null
     }
    ],
    "affected_count": 1356,
    "affected_widest": true,
    "example_products": [
     {
      "name": "Three-ton rooftop unit parts list",
      "url": null,
      "product_name": "Three-ton rooftop unit parts list"
     },
     {
      "name": "Spring-return damper actuator",
      "url": null,
      "product_name": "Spring-return damper actuator"
     },
     {
      "name": "Five-ton heat pump parts list",
      "url": null,
      "product_name": "Five-ton heat pump parts list"
     }
    ],
    "content_tasks": [
     "Add a short “what it's for and how to use it” passage and an FAQ to each product description, starting with “Condenser fan venturi ring”.",
     "Rewrite descriptions to state concrete facts — sizes, materials, capacities, what's included — for products like “Two-stage gas furnace parts list”."
    ],
    "developer_tasks": [],
    "snippet": null,
    "acceptance": [
     "Each description states concrete facts about the product."
    ],
    "verify": [
     "Re-read three product descriptions: each should state at least a few concrete facts."
    ],
    "platform": null,
    "source": "llm",
    "covered_by": []
   },
   "check_keys": [
    "nl_parseability.has_use_case_content",
    "nl_parseability.fact_density"
   ]
  },
  {
   "title": "Improve your product images",
   "dimension_key": "imagery",
   "dimension_display_name": "Imagery",
   "problem_count": 2,
   "problem_labels": [
    "Too few product images",
    "Low image resolution"
   ],
   "remediations": [
    "Add additional product images. Prioritize: hero shot, alternate angle, detail/closeup, and application/in-use photos.",
    "Replace thumbnail/low-resolution images with higher quality versions. Most manufacturers provide high-resolution product images on request."
   ],
   "platform_steps": [],
   "affected_pct": 44.9,
   "affected_count": 985,
   "reach_label": "Too few product images",
   "estimated_lift_pts": null,
   "effort": "medium",
   "spec": {
    "goal": "Fixed means every product shows at least 3 sharp, full-size images, each with descriptive alt text.",
    "requirements": [
     {
      "check": "Too few product images",
      "current": "985 of 2192 products fall short (affected products average: 1.6 image(s))",
      "target": "At least 3 images per product",
      "covered_by": null
     },
     {
      "check": "Low image resolution",
      "current": "174 of 2192 products fall short",
      "target": "Full-size product images, not thumbnails",
      "covered_by": null
     }
    ],
    "affected_count": 985,
    "affected_widest": true,
    "example_products": [
     {
      "name": "Outdoor unit condenser coil",
      "url": null,
      "product_name": "Outdoor unit condenser coil"
     },
     {
      "name": "Crimping die for aluminum cable",
      "url": null,
      "product_name": "Crimping die for aluminum cable"
     },
     {
      "name": "Air handler air-stop baffle",
      "url": null,
      "product_name": "Air handler air-stop baffle"
     }
    ],
    "content_tasks": [
     "Add at least 3 high-resolution images to every product, starting with those that have fewer than 2.",
     "Make the first image on each product a clean, clear main image.",
     "Replace any thumbnail-only images with full-size versions."
    ],
    "developer_tasks": [
     "Make sure the theme outputs each image's alt text in the img tag.",
     "Publish each image in the product markup's image property."
    ],
    "snippet": null,
    "acceptance": [
     "Every product has at least the number of images in this step's requirements."
    ],
    "verify": [],
    "platform": null,
    "source": "llm",
    "covered_by": []
   },
   "check_keys": [
    "imagery.image_count",
    "imagery.resolution_adequacy"
   ]
  },
  {
   "title": "Improve your search findability",
   "dimension_key": "findability",
   "dimension_display_name": "Findability",
   "problem_count": 1,
   "problem_labels": [
    "Product title is a part number, not descriptive"
   ],
   "remediations": [
    "Replace part-number-only titles with descriptive product names that include the product type, key specifications, and brand. Keep the part number in a dedicated SKU field and in the description — it should supplement the title, not replace it. Example: \"Example Brand EX7731PN04 — 4-Ton Evaporator Coil Assembly with Drain Pan\"."
   ],
   "platform_steps": [],
   "affected_pct": 1.3,
   "affected_count": 29,
   "reach_label": "Product title is a part number, not descriptive",
   "estimated_lift_pts": null,
   "effort": "medium",
   "spec": {
    "goal": "Fixed means every product title names the product, not only a part number, so shoppers and search tools can find it.",
    "requirements": [
     {
      "check": "Product title is a part number, not descriptive",
      "current": "29 of 2192 products fall short",
      "target": "A title that names the product, not only a model number or SKU",
      "covered_by": null
     }
    ],
    "affected_count": 29,
    "affected_widest": false,
    "example_products": [
     {
      "name": "Cond.Coil Cu/Al, EX40032",
      "url": null,
      "product_name": "Cond.Coil Cu/Al, EX40032"
     },
     {
      "name": "Flame Cell, EX-FC2207",
      "url": null,
      "product_name": "Flame Cell, EX-FC2207"
     },
     {
      "name": "Panel,Gas Sect, EX48T50",
      "url": null,
      "product_name": "Panel,Gas Sect, EX48T50"
     }
    ],
    "content_tasks": [
     "Rewrite titles that are only a code or part number, such as “Cond.Coil Cu/Al, EX40032”, to include brand, product type, and the key specification.",
     "Do the same for “Flame Cell, EX-FC2207” and “Panel,Gas Sect, EX48T50”."
    ],
    "developer_tasks": [],
    "snippet": null,
    "acceptance": [
     "No title is only a code or part number."
    ],
    "verify": [
     "Search your own store for a product the way a customer would (by what it is, not its code); it should come up."
    ],
    "platform": null,
    "source": "llm",
    "covered_by": []
   },
   "check_keys": [
    "findability.title_quality"
   ]
  },
  {
   "title": "Improve your product markup",
   "dimension_key": "structured_data",
   "dimension_display_name": "Structured Data",
   "problem_count": 2,
   "problem_labels": [
    "Missing aggregate rating in structured data",
    "Low rich snippet readiness"
   ],
   "remediations": [
    "If your products have reviews, add aggregateRating schema with ratingValue and reviewCount.",
    "Ensure Product schema includes: aggregateRating (with ratingValue and reviewCount), offers.price, offers.availability, and image."
   ],
   "platform_steps": [],
   "affected_pct": 10.5,
   "reach_label": "Low rich snippet readiness",
   "estimated_lift_pts": null,
   "effort": "high",
   "spec": {
    "goal": "Every product page publishes complete product information that search engines and AI shopping assistants can read.",
    "requirements": [
     {
      "check": "Missing aggregate rating in structured data",
      "current": "Missing on 43 of 2192 products",
      "target": "Every product page publishes: Star rating",
      "covered_by": null
     },
     {
      "check": "Low rich snippet readiness",
      "current": "231 of 2192 products fall short (affected products average: 50% of the richer-listing elements published (rating, offer, review, breadcrumb))",
      "target": "Rating, offer, review, and breadcrumb markup present (the parts Google uses for richer search results)",
      "covered_by": null
     }
    ],
    "affected_count": 231,
    "affected_widest": true,
    "example_products": [
     {
      "name": "Four-ton gas packaged unit parts list",
      "url": null,
      "product_name": "Four-ton gas packaged unit parts list"
     },
     {
      "name": "Single-stage gas furnace parts list",
      "url": null,
      "product_name": "Single-stage gas furnace parts list"
     },
     {
      "name": "Downflow gas furnace parts list",
      "url": null,
      "product_name": "Downflow gas furnace parts list"
     }
    ],
    "content_tasks": [
     "Collect customer reviews with a reviews tool that publishes star ratings on the product page."
    ],
    "developer_tasks": [
     "Make sure every product page carries one Product (or ProductGroup, for products with options) JSON-LD script in the page HTML, rendered by the server rather than added later by JavaScript. Extend the one the page already has rather than adding a second.",
     "Output aggregateRating (ratingValue and reviewCount) from the reviews data, only on products that actually have reviews.",
     "Publish the star rating and the reviews inside the product markup (aggregateRating and review, from the reviews data), only on products that actually have reviews."
    ],
    "snippet": {
     "language": "html",
     "code": "<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"ProductGroup\",\n  \"name\": \"{product title}\",\n  \"productGroupID\": \"{product id}\",\n  \"brand\": { \"@type\": \"Brand\", \"name\": \"{brand}\" },\n  \"hasVariant\": [\n    {\n      \"@type\": \"Product\",\n      \"name\": \"{product title} - {option name}\",\n      \"sku\": \"{your SKU}\",\n      \"mpn\": \"{manufacturer part number}\",\n      \"gtin\": \"{barcode}\",\n      \"offers\": {\n        \"@type\": \"Offer\",\n        \"price\": \"{price}\",\n        \"priceCurrency\": \"{currency code}\",\n        \"availability\": \"https://schema.org/{InStock or OutOfStock — the real stock status}\"\n      }\n    }\n  ]\n}\n</script>\n",
     "note": "Structure for a product with options. Merge it into the product markup the page already publishes rather than replacing it: replace each {placeholder} with the value from your product data, and leave out any line whose value is empty."
    },
    "acceptance": [
     "Every product page carries exactly one Product or ProductGroup entry in its page source.",
     "Products with reviews publish their star rating and review count.",
     "No field holds a placeholder such as \"N/A\" or an empty value."
    ],
    "verify": [
     "Paste three product page addresses (include one with size or color options) into Google's Rich Results Test (search.google.com/test/rich-results); each should show a valid Product item with no errors.",
     "Open a product page, view the page source, and search for \"application/ld+json\"; the product's details should appear inside it."
    ],
    "platform": null,
    "source": "knowledge",
    "covered_by": []
   },
   "check_keys": [
    "structured_data.has_aggregate_rating",
    "structured_data.rich_snippet_rate"
   ]
  },
  {
   "title": "Improve your product descriptions",
   "dimension_key": "descriptions",
   "dimension_display_name": "Descriptions",
   "problem_count": 1,
   "problem_labels": [
    "Spelling errors in descriptions"
   ],
   "remediations": [
    "Run automated spell-check across all product descriptions. Review flagged terms — some may be valid technical terms or brand names that need dictionary exceptions."
   ],
   "platform_steps": [],
   "affected_pct": 0.0,
   "reach_label": "Spelling errors in descriptions",
   "estimated_lift_pts": null,
   "effort": "low",
   "spec": {
    "goal": "Product descriptions are complete and free of errors.",
    "requirements": [
     {
      "check": "Spelling errors in descriptions",
      "current": "1 of 2192 products fall short (affected products average: 96.7% of words spelled correctly)",
      "target": "At least 98% of words spelled correctly",
      "covered_by": null
     }
    ],
    "affected_count": 1,
    "affected_widest": false,
    "example_products": [
     {
      "name": "Single-gang cast iron device box",
      "url": null,
      "product_name": "Single-gang cast iron device box"
     }
    ],
    "content_tasks": [
     "Fix spelling and grammar, and remove sentences repeated within a description.",
     "Lead with what the product is and what it's for, then the key details."
    ],
    "developer_tasks": [],
    "snippet": null,
    "acceptance": [
     "Descriptions in this step's list meet the targets in its requirements."
    ],
    "verify": [
     "Re-read three product descriptions: no spelling or grammar mistakes and no sentence said twice."
    ],
    "platform": null,
    "source": "knowledge",
    "covered_by": []
   },
   "check_keys": [
    "descriptions.spelling_accuracy_min"
   ]
  },
  {
   "title": "Improve your return-risk protection",
   "dimension_key": "return_risk_score",
   "dimension_display_name": "Return Risk",
   "problem_count": 2,
   "problem_labels": [
    "Thin descriptions increase return risk",
    "Insufficient images increases return risk"
   ],
   "remediations": [
    "Expand short product descriptions. Say what the product is, what it is made of, its size and how it is used, and list its key specifications, typical applications and compatibility as separate details.",
    "Add additional product images showing different angles, scale reference, and installation context. Target at least 4 images per SKU."
   ],
   "platform_steps": [],
   "affected_pct": 78.6,
   "reach_label": "Thin descriptions increase return risk",
   "estimated_lift_pts": null,
   "effort": "medium",
   "spec": {
    "goal": "Every product carries the details, images, and description shoppers need to buy the right thing the first time.",
    "requirements": [
     {
      "check": "Thin descriptions increase return risk",
      "current": "1724 of 2192 products fall short (affected products average: 33.7 words of description)",
      "target": "A description of at least 100 words",
      "covered_by": null
     },
     {
      "check": "Insufficient images increases return risk",
      "current": "985 of 2192 products fall short (affected products average: 1.6 image(s))",
      "target": "At least 3 images per product",
      "covered_by": 5
     }
    ],
    "affected_count": 1724,
    "affected_widest": true,
    "example_products": [
     {
      "name": "Air handler air-stop baffle",
      "url": null,
      "product_name": "Air handler air-stop baffle"
     },
     {
      "name": "Condenser fan venturi ring",
      "url": null,
      "product_name": "Condenser fan venturi ring"
     },
     {
      "name": "Two-stage gas furnace parts list",
      "url": null,
      "product_name": "Two-stage gas furnace parts list"
     }
    ],
    "content_tasks": [
     "Make sure every product has a full description stating what it is and what's included."
    ],
    "developer_tasks": [],
    "snippet": null,
    "acceptance": [
     "Every product has its key details, several images, and a full description."
    ],
    "verify": [
     "Open three of the example products and ask: could a shopper tell the size, material, and what's included without contacting you?"
    ],
    "platform": null,
    "source": "knowledge",
    "covered_by": []
   },
   "check_keys": [
    "return_risk_score.description_depth",
    "return_risk_score.image_completeness"
   ]
  }
 ],
 "compliance": {
  "combined": {
   "pct_matched": 0.3741,
   "total_products": 2192,
   "matched_products": 820
  },
  "by_standard": {
   "etim": {
    "standard": "etim",
    "confidence": {
     "avg_confidence": 0.8535,
     "method_distribution": {
      "stem": 55,
      "exact": 3,
      "fuzzy": 24,
      "token_ngram": 21,
      "semantic_llm": 231
     },
     "low_confidence_count": 409
    },
    "match_rate": 0.1524,
    "by_classification": [
     {
      "name": "Accessories/spare parts for heat pump",
      "sku_count": 46
     },
     {
      "name": "Accessories/spare parts for boilers",
      "sku_count": 33
     },
     {
      "name": "Push button",
      "sku_count": 9
     },
     {
      "name": "Band saw blade",
      "sku_count": 9
     },
     {
      "name": "Wall plate",
      "sku_count": 9
     },
     {
      "name": "Dimmer",
      "sku_count": 9
     },
     {
      "name": "Protective glove",
      "sku_count": 9
     },
     {
      "name": "Water filter",
      "sku_count": 7
     },
     {
      "name": "Ballast (electrical)",
      "sku_count": 7
     },
     {
      "name": "Pressure switch",
      "sku_count": 7
     },
     {
      "name": "Shower head",
      "sku_count": 6
     },
     {
      "name": "backflow preventer",
      "sku_count": 4
     },
     {
      "name": "Pressure reducing valve",
      "sku_count": 4
     },
     {
      "name": "Hole saw",
      "sku_count": 4
     },
     {
      "name": "Spanner/socket wrench",
      "sku_count": 4
     },
     {
      "name": "Core drill bit",
      "sku_count": 4
     },
     {
      "name": "Jacket/coat",
      "sku_count": 4
     },
     {
      "name": "ball valve",
      "sku_count": 3
     },
     {
      "name": "Dehumidifier",
      "sku_count": 3
     },
     {
      "name": "Thermostatic steam trap",
      "sku_count": 3
     },
     {
      "name": "Tap for commercial kitchen",
      "sku_count": 3
     },
     {
      "name": "Hand shower",
      "sku_count": 3
     },
     {
      "name": "End cutting pliers",
      "sku_count": 3
     },
     {
      "name": "Replacement blade",
      "sku_count": 3
     },
     {
      "name": "Accessories/spare parts for condensate pump steam operated",
      "sku_count": 3
     },
     {
      "name": "Stainless steel pipe",
      "sku_count": 3
     },
     {
      "name": "Protective glasses",
      "sku_count": 3
     },
     {
      "name": "Thread cutting die",
      "sku_count": 3
     },
     {
      "name": "burner assembly",
      "sku_count": 3
     },
     {
      "name": "Gas valve",
      "sku_count": 2
     },
     {
      "name": "Drain valve (radiator and tap water)",
      "sku_count": 2
     },
     {
      "name": "black pipe",
      "sku_count": 2
     },
     {
      "name": "riser clamp",
      "sku_count": 2
     },
     {
      "name": "Cable tie",
      "sku_count": 2
     },
     {
      "name": "Appliance connector",
      "sku_count": 2
     },
     {
      "name": "Mixing tap for commercial kitchen",
      "sku_count": 2
     },
     {
      "name": "Anode",
      "sku_count": 2
     },
     {
      "name": "Air-conditioning split system - multi-split, complete",
      "sku_count": 2
     },
     {
      "name": "Oil nozzle",
      "sku_count": 2
     },
     {
      "name": "Bit",
      "sku_count": 2
     },
     {
      "name": "Switch disconnector (AC)",
      "sku_count": 2
     },
     {
      "name": "Soap/disinfectant dispenser",
      "sku_count": 2
     },
     {
      "name": "Water dispenser",
      "sku_count": 2
     },
     {
      "name": "Tweezers",
      "sku_count": 2
     },
     {
      "name": "Water pump pliers",
      "sku_count": 2
     },
     {
      "name": "Orifice",
      "sku_count": 2
     },
     {
      "name": "Globe valve",
      "sku_count": 2
     },
     {
      "name": "pressure regulating valve",
      "sku_count": 2
     },
     {
      "name": "isolation valve",
      "sku_count": 2
     },
     {
      "name": "Air compressor",
      "sku_count": 1
     }
    ],
    "products_measured": 334
   },
   "amazon": {
    "standard": "amazon",
    "confidence": {
     "avg_confidence": 0.948,
     "method_distribution": {
      "stem": 10,
      "exact": 109,
      "token_ngram": 53
     },
     "low_confidence_count": 185
    },
    "match_rate": 0.0785,
    "by_classification": [
     {
      "name": "replacement parts",
      "sku_count": 37
     },
     {
      "name": "faucets",
      "sku_count": 27
     },
     {
      "name": "drills",
      "sku_count": 20
     },
     {
      "name": "LIGHTING",
      "sku_count": 18
     },
     {
      "name": "power tools",
      "sku_count": 14
     },
     {
      "name": "towel bars",
      "sku_count": 10
     },
     {
      "name": "light fixtures",
      "sku_count": 10
     },
     {
      "name": "wrenches",
      "sku_count": 9
     },
     {
      "name": "hand tools",
      "sku_count": 8
     },
     {
      "name": "pliers",
      "sku_count": 7
     },
     {
      "name": "screwdrivers",
      "sku_count": 4
     },
     {
      "name": "socket sets",
      "sku_count": 3
     },
     {
      "name": "pendant lights",
      "sku_count": 2
     },
     {
      "name": "chandeliers",
      "sku_count": 1
     },
     {
      "name": "sanders",
      "sku_count": 1
     },
     {
      "name": "bathroom hardware",
      "sku_count": 1
     }
    ],
    "products_measured": 172
   },
   "google": {
    "standard": "google",
    "confidence": {
     "avg_confidence": 0.9333,
     "method_distribution": {
      "exact": 16,
      "semantic_llm": 11
     },
     "low_confidence_count": 22
    },
    "match_rate": 0.0123,
    "by_classification": [
     {
      "name": "Lighting Fixtures",
      "sku_count": 17
     },
     {
      "name": "pendant lights",
      "sku_count": 2
     },
     {
      "name": "Tweezers",
      "sku_count": 2
     },
     {
      "name": "Vests",
      "sku_count": 2
     },
     {
      "name": "Emergency Lighting",
      "sku_count": 1
     },
     {
      "name": "Ceiling Light Fixtures",
      "sku_count": 1
     },
     {
      "name": "Chandeliers",
      "sku_count": 1
     },
     {
      "name": "Wall Light Fixtures",
      "sku_count": 1
     }
    ],
    "products_measured": 27
   },
   "unspsc": {
    "standard": "unspsc",
    "confidence": {
     "avg_confidence": 0.8317,
     "method_distribution": {
      "stem": 2,
      "fuzzy": 4,
      "token_ngram": 1,
      "semantic_llm": 274
     },
     "low_confidence_count": 100
    },
    "match_rate": 0.1282,
    "by_classification": [
     {
      "name": "Boiler parts and accessories",
      "sku_count": 69
     },
     {
      "name": "HVAC motor",
      "sku_count": 67
     },
     {
      "name": "Heating equipment parts and accessories",
      "sku_count": 19
     },
     {
      "name": "Heat exchanger parts",
      "sku_count": 16
     },
     {
      "name": "HVAC control or circuit board",
      "sku_count": 14
     },
     {
      "name": "HVAC gas valve",
      "sku_count": 12
     },
     {
      "name": "HVAC belt or drive component",
      "sku_count": 12
     },
     {
      "name": "HVAC repair or maintenance kit",
      "sku_count": 9
     },
     {
      "name": "HVAC ignition component",
      "sku_count": 9
     },
     {
      "name": "Pump parts and accessories",
      "sku_count": 7
     },
     {
      "name": "HVAC fan blade or wheel",
      "sku_count": 6
     },
     {
      "name": "Pipe clamp",
      "sku_count": 5
     },
     {
      "name": "Water heater element or anode",
      "sku_count": 5
     },
     {
      "name": "HVAC sensor or switch",
      "sku_count": 5
     },
     {
      "name": "HVAC thermostat accessory",
      "sku_count": 4
     },
     {
      "name": "HVAC capacitor or relay",
      "sku_count": 4
     },
     {
      "name": "Gas leak detector",
      "sku_count": 3
     },
     {
      "name": "Backflow preventer repair kit",
      "sku_count": 2
     },
     {
      "name": "Pipe hanger or support",
      "sku_count": 2
     },
     {
      "name": "Carbon water filter",
      "sku_count": 2
     },
     {
      "name": "Pipe coupling or adapter",
      "sku_count": 2
     },
     {
      "name": "Faucet cartridge or part",
      "sku_count": 2
     },
     {
      "name": "Expansion tank",
      "sku_count": 1
     },
     {
      "name": "HVAC conversion kit",
      "sku_count": 1
     },
     {
      "name": "Differential pressure switch",
      "sku_count": 1
     },
     {
      "name": "Low water cutoff probe or sensor",
      "sku_count": 1
     },
     {
      "name": "Fire sprinkler",
      "sku_count": 1
     }
    ],
    "products_measured": 281
   },
   "gs1_gpc": {
    "standard": "gs1_gpc",
    "confidence": {
     "avg_confidence": 0.8598,
     "method_distribution": {
      "exact": 29,
      "fuzzy": 2,
      "semantic": 18,
      "token_ngram": 13,
      "semantic_llm": 212,
      "exact_context_confirmed": 3
     },
     "low_confidence_count": 85
    },
    "match_rate": 0.1264,
    "by_classification": [
     {
      "name": "Sockets/Receptacles/Outlets",
      "sku_count": 25
     },
     {
      "name": "Switches",
      "sku_count": 24
     },
     {
      "name": "Central Heating Replacement Parts/Accessories",
      "sku_count": 22
     },
     {
      "name": "Plugs",
      "sku_count": 18
     },
     {
      "name": "Refrigerating/Freezing Appliances Replacement Parts/Accessories",
      "sku_count": 14
     },
     {
      "name": "Faucets/Taps",
      "sku_count": 14
     },
     {
      "name": "Saws Blades",
      "sku_count": 14
     },
     {
      "name": "Basins/Sinks",
      "sku_count": 11
     },
     {
      "name": "Fuses",
      "sku_count": 11
     },
     {
      "name": "Shower Heads",
      "sku_count": 9
     },
     {
      "name": "Relays/Contactors",
      "sku_count": 7
     },
     {
      "name": "Pumps",
      "sku_count": 7
     },
     {
      "name": "Ballasts/Starters",
      "sku_count": 7
     },
     {
      "name": "Gloves",
      "sku_count": 6
     },
     {
      "name": "Grab Bars",
      "sku_count": 5
     },
     {
      "name": "Hole Saw (Powered)",
      "sku_count": 5
     },
     {
      "name": "Dimmers",
      "sku_count": 5
     },
     {
      "name": "Pliers/Pincers/Grabbers (Non Powered)",
      "sku_count": 4
     },
     {
      "name": "Reciprocating Saws",
      "sku_count": 4
     },
     {
      "name": "Wall Plates",
      "sku_count": 3
     },
     {
      "name": "Water Filters/Water Filter Cartridges",
      "sku_count": 3
     },
     {
      "name": "Electrical Wires",
      "sku_count": 3
     },
     {
      "name": "Thermostats",
      "sku_count": 3
     },
     {
      "name": "Tool Carrybags/Wallets",
      "sku_count": 3
     },
     {
      "name": "Protective Handwear",
      "sku_count": 3
     },
     {
      "name": "Safety Glasses/Goggles",
      "sku_count": 3
     },
     {
      "name": "Valves/Fittings - Water and Gas",
      "sku_count": 2
     },
     {
      "name": "Cable Clips/Grommets/Ties",
      "sku_count": 2
     },
     {
      "name": "Chimney Cap/Rain Cap",
      "sku_count": 2
     },
     {
      "name": "Cable Conduit Fittings",
      "sku_count": 2
     },
     {
      "name": "Electronic Testers",
      "sku_count": 2
     },
     {
      "name": "Dispensers for Cleaning/Hygiene Products",
      "sku_count": 2
     },
     {
      "name": "Hose Connectors",
      "sku_count": 2
     },
     {
      "name": "Electrical Distribution Accessories/Fittings",
      "sku_count": 2
     },
     {
      "name": "Distribution Boards/Boxes",
      "sku_count": 2
     },
     {
      "name": "Converters/Transformers",
      "sku_count": 2
     },
     {
      "name": "Toilets",
      "sku_count": 2
     },
     {
      "name": "Tankless Water Heaters",
      "sku_count": 1
     },
     {
      "name": "Toilet Seats/Lids",
      "sku_count": 1
     },
     {
      "name": "Room Heaters",
      "sku_count": 1
     },
     {
      "name": "Fans - Extractor",
      "sku_count": 1
     },
     {
      "name": "Surface Cleaners",
      "sku_count": 1
     },
     {
      "name": "Caulking Guns (Powered)",
      "sku_count": 1
     },
     {
      "name": "Laser Levels (Powered)",
      "sku_count": 1
     },
     {
      "name": "Surge Suppressors/Protectors",
      "sku_count": 1
     },
     {
      "name": "Tool Carts",
      "sku_count": 1
     },
     {
      "name": "Circuit Breakers",
      "sku_count": 1
     },
     {
      "name": "Connectors (Electrical)",
      "sku_count": 1
     },
     {
      "name": "Saws (Non Powered)",
      "sku_count": 1
     },
     {
      "name": "Chargers",
      "sku_count": 1
     }
    ],
    "products_measured": 277
   }
  },
  "standards_priority": [
   "etim",
   "gs1_gpc",
   "unspsc",
   "google",
   "amazon"
  ]
 },
 "crawl_diagnostics": {
  "sitemap_url": "https://www.example.com/sitemap.xml",
  "dead_url_count": 0,
  "dead_url_ratio": 0.0,
  "total_products": 2192,
  "urls_attempted": 2192,
  "duplicate_pages": 0,
  "js_rendered_pct": 0.0,
  "products_scored": 2192,
  "discovery_method": "sitemap",
  "js_rendered_count": 0,
  "non_product_pages": 0,
  "products_unscored": 0,
  "tier_distribution": {
   "patchright": 2192
  },
  "friendliness_label": "moderate_barriers",
  "friendliness_score": 50,
  "structured_data_pct": 100.0,
  "sitemap_nested_index": false,
  "structured_data_count": 2192
 },
 "platform": null,
 "jsonld_example": {
  "product_name": "PVC double wye drain fitting",
  "url": null,
  "current": "{\n  \"mpn\": \"EX-4076-528\",\n  \"sku\": \"EX-4076-528\",\n  \"url\": \"https://www.example.com/products/pvc-double-wye-drain-fitting\",\n  \"name\": \"PVC double wye drain fitting\",\n  \"@type\": \"Product\",\n  \"image\": \"https://www.example.com/images/product.jpg\",\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"price\": \"129.00\",\n    \"seller\": {\n      \"name\": \"Example Plumbing & HVAC Distributor\",\n      \"@type\": \"Organization\"\n    },\n    \"availability\": \"https://schema.org/OutOfStock\",\n    \"priceCurrency\": \"USD\"\n  },\n  \"@context\": \"http://schema.org\",\n  \"description\": \"PVC double wye drain fitting. Specifications and installation notes from the product data.\"\n}",
  "corrected": "{\n  \"mpn\": \"EX-4076-528\",\n  \"sku\": \"EX-4076-528\",\n  \"url\": \"https://www.example.com/products/pvc-double-wye-drain-fitting\",\n  \"name\": \"PVC double wye drain fitting\",\n  \"@type\": \"Product\",\n  \"image\": \"https://www.example.com/images/product.jpg\",\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"price\": \"129.00\",\n    \"seller\": {\n      \"name\": \"Example Plumbing & HVAC Distributor\",\n      \"@type\": \"Organization\"\n    },\n    \"availability\": \"https://schema.org/OutOfStock\",\n    \"priceCurrency\": \"USD\"\n  },\n  \"@context\": \"https://schema.org\",\n  \"description\": \"PVC double wye drain fitting. Specifications and installation notes from the product data.\",\n  \"brand\": {\n    \"@type\": \"Brand\",\n    \"name\": \"<brand name>\"\n  },\n  \"gtin\": \"00012345678905\"\n}"
 },
 "discoverability": [
  {
   "channel_key": "google_shopping",
   "display_name": "Google Shopping",
   "ready_pct": 0,
   "ready_count": 0,
   "total": 2192
  },
  {
   "channel_key": "chatgpt",
   "display_name": "ChatGPT",
   "ready_pct": 0,
   "ready_count": 0,
   "total": 2192
  },
  {
   "channel_key": "perplexity",
   "display_name": "Perplexity",
   "ready_pct": 0,
   "ready_count": 0,
   "total": 2192
  },
  {
   "channel_key": "google_merchant",
   "display_name": "Google Merchant Center",
   "ready_pct": 0,
   "ready_count": 0,
   "total": 2192
  },
  {
   "channel_key": "amazon",
   "display_name": "Amazon",
   "ready_pct": 0,
   "ready_count": 0,
   "total": 2192
  },
  {
   "channel_key": "walmart",
   "display_name": "Walmart Marketplace",
   "ready_pct": 0,
   "ready_count": 0,
   "total": 2192
  }
 ],
 "return_risk": {
  "risk_level": "HIGH",
  "avg_risk_pct": 55,
  "elevated_pct": 57,
  "elevated_count": 1241,
  "total": 2192,
  "drivers": [
   {
    "key": "critical_flags",
    "label": "Dimensions, sizing & specs",
    "coverage_pct": 0,
    "caveat": "We don't list fixes for this check yet. It's being improved to read every detail your pages show."
   },
   {
    "key": "description_depth",
    "label": "Description detail",
    "coverage_pct": 21,
    "caveat": null
   },
   {
    "key": "attribute_coverage",
    "label": "Product details in your product data",
    "coverage_pct": 31,
    "caveat": "We don't list fixes for this check yet. It's being improved to read every detail your pages show."
   },
   {
    "key": "image_completeness",
    "label": "Product images",
    "coverage_pct": 55,
    "caveat": null
   }
  ]
 },
 "narrative": {
  "executive_summary": "Your CatalogIQ Index is 55. None of your 2,192 products are ready for shopping channels and AI assistants as they are — not for Google Shopping, Google Merchant Center, Amazon, Walmart Marketplace, ChatGPT, or Perplexity. This is what is holding your score down: your content quality is 78, well above the overall score, but readiness for these channels is at 0%.\n\nYour biggest problem is missing technical documents. 91% of your products fall short of having enough document links, with an average of only 0.3 links where at least 3 are expected. For example, “Eight-light bathroom vanity fixture” has just 1 document link. Other issues add to the cost: 2% of products are missing the brand in your product data, like “PVC double wye drain fitting”, and 1% have titles that are only a part number, such as “Cond.Coil Cu/Al, EX40032”, instead of naming the product.\n\nStart with step 1: improve your technical documents, which fixes the documentation gap affecting 91% of your products.",
  "priorities": [],
  "quick_wins": [],
  "dimension_insights": {},
  "llm_used": true
 },
 "coverage": {
  "covered": 2192,
  "expected": 2192,
  "pct": 100,
  "band": "near",
  "reason": "didn't load in time",
  "note": "We couldn't confirm your catalog's size ahead of time, so a report covers up to 2,192 products, what one crawl can read."
 },
 "scanned_at": "2026-10-11T14:01:52.068371Z",
 "order": null,
 "preview": {
  "score_pct": 78,
  "sample_size": 20,
  "other_checks": false
 },
 "index_caveat": "None of your 2192 products are ready for shopping channels and AI assistants as they are, so this score is held at 55 until more are. Your content quality is 78.",
 "source": null
}