{
 "state": "ready",
 "domain": "Example Plumbing & HVAC Distributor",
 "product_count": 2192,
 "truncated": false,
 "action": null,
 "action_title": null,
 "root_cause": null,
 "guidance": null,
 "fix_plan": [
  {
   "step": 1,
   "title": "Improve your technical documents"
  },
  {
   "step": 2,
   "title": "Improve your shopping-channel readiness"
  },
  {
   "step": 3,
   "title": "Improve your AI shopping essentials"
  },
  {
   "step": 4,
   "title": "Improve your AI readability"
  },
  {
   "step": 5,
   "title": "Improve your product images"
  },
  {
   "step": 6,
   "title": "Improve your search findability"
  },
  {
   "step": 7,
   "title": "Improve your product markup"
  },
  {
   "step": 8,
   "title": "Improve your product descriptions"
  },
  {
   "step": 9,
   "title": "Improve your return-risk protection"
  }
 ],
 "root_causes": {
  "schema_coverage": {
   "title": "Your product data leaves out standard details",
   "why_it_matters": "The more of these details your pages publish, the richer your search listings (price, stock, ratings) and the better AI assistants understand what you sell."
  },
  "identifiers": {
   "title": "Product identifiers are missing from your product pages",
   "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."
  },
  "product_docs": {
   "title": "Technical documents are missing",
   "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."
  },
  "offer_schema": {
   "title": "Price, stock, or condition is missing from your product data",
   "why_it_matters": "Shopping channels need a complete offer to list a product, and AI assistants won't recommend something they can't price or confirm is in stock."
  },
  "imagery": {
   "title": "Product images are missing, too few, or undescribed",
   "why_it_matters": "Shoppers can't buy what they can't see. More and better images raise sales and cut returns, and alt text helps image search and accessibility."
  },
  "descriptive_content": {
   "title": "Descriptions don't answer shoppers' questions",
   "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."
  },
  "descriptions": {
   "title": "Product descriptions are too thin or contain errors",
   "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."
  },
  "brand": {
   "title": "The brand isn't stated in your product data",
   "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."
  },
  "feed_coverage": {
   "title": "Products are missing fields shopping channels require",
   "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."
  },
  "ratings": {
   "title": "Your star ratings aren't visible to search engines",
   "why_it_matters": "Star ratings shown in search results draw more clicks, and AI assistants favor products with visible reviews."
  },
  "title_quality": {
   "title": "Product titles don't say what the product is",
   "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."
  }
 },
 "products": [
  {
   "url": null,
   "product_name": "Eight-light bathroom vanity fixture",
   "index_score_pct": 86,
   "checks_total": 58,
   "checks_failed": 11,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": null,
     "target": "An installation guide or manual linked from the product page",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "schema_coverage",
     "label": "Not ready for Google's rich results",
     "view": null,
     "dimension_key": "structured_data",
     "dimension_name": "Product markup",
     "measured": "rating and review markup missing; offer and breadcrumb present",
     "target": "Rating, offer, review, and breadcrumb markup present (the parts Google uses for richer search results)",
     "fix": "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.",
     "action_refs": [
      7
     ],
     "score_pct": 62,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "structured_data",
       "metric_key": "rich_snippet_rate",
       "label": "Not ready for Google's rich results",
       "value": 50.0,
       "score_pct": 62,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Shallow-well pump jet assembly",
   "index_score_pct": 78,
   "checks_total": 55,
   "checks_failed": 16,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": "0 numbers per 100 words of description",
     "target": "Descriptions that state concrete facts (sizes, materials, specs), not only marketing copy",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "fact_density",
       "label": "Low fact density in descriptions",
       "value": 0.0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Condenser fan venturi ring",
   "index_score_pct": 70,
   "checks_total": 51,
   "checks_failed": 18,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "1 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 33,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "25 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 25,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 25,
       "score_pct": 25,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Two-stage gas furnace parts list",
   "index_score_pct": 72,
   "checks_total": 48,
   "checks_failed": 15,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "28 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 28,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 28,
       "score_pct": 28,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Outdoor unit condenser coil",
   "index_score_pct": 71,
   "checks_total": 51,
   "checks_failed": 17,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "1 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 33,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "25 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 25,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 25,
       "score_pct": 25,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Three-ton rooftop unit parts list",
   "index_score_pct": 80,
   "checks_total": 49,
   "checks_failed": 14,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "28 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 28,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 28,
       "score_pct": 28,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Crimping die for aluminum cable",
   "index_score_pct": 83,
   "checks_total": 57,
   "checks_failed": 15,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Air handler air-stop baffle",
   "index_score_pct": 71,
   "checks_total": 51,
   "checks_failed": 17,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "1 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 33,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "26 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 26,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 26,
       "score_pct": 26,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Spring-return damper actuator",
   "index_score_pct": 69,
   "checks_total": 51,
   "checks_failed": 19,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "1 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 33,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "26 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 26,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 26,
       "score_pct": 26,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Stainless two-way control valve body",
   "index_score_pct": 86,
   "checks_total": 60,
   "checks_failed": 13,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": null,
     "target": "CAD files, 3D models, or dimensional drawings linked from the product page",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_cad_files",
       "label": "Missing CAD or 3D files",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Five-ton heat pump parts list",
   "index_score_pct": 84,
   "checks_total": 52,
   "checks_failed": 14,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": null,
     "target": "A specification sheet linked from the product page",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Images are too small (thumbnails, not full size)",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": null,
     "target": "Full-size product images, not thumbnails",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5
     ],
     "score_pct": 30,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "resolution_adequacy",
       "label": "Images are too small (thumbnails, not full size)",
       "value": 30.0,
       "score_pct": 30,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "schema_coverage",
     "label": "Not ready for Google's rich results",
     "view": null,
     "dimension_key": "structured_data",
     "dimension_name": "Product markup",
     "measured": "rating and review markup missing; offer and breadcrumb present",
     "target": "Rating, offer, review, and breadcrumb markup present (the parts Google uses for richer search results)",
     "fix": "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.",
     "action_refs": [
      7
     ],
     "score_pct": 62,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "structured_data",
       "metric_key": "rich_snippet_rate",
       "label": "Not ready for Google's rich results",
       "value": 50.0,
       "score_pct": 62,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "65 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 65,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 65,
       "score_pct": 65,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Locking flanged power outlet, 30 amp",
   "index_score_pct": 90,
   "checks_total": 59,
   "checks_failed": 11,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "PVC double wye drain fitting",
   "index_score_pct": 82,
   "checks_total": 51,
   "checks_failed": 16,
   "issues": [
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "brand",
     "label": "The brand isn't stated in your product data",
     "view": null,
     "dimension_key": "agent_required_attrs",
     "dimension_name": "AI shopping essentials",
     "measured": null,
     "target": "Every product page publishes: Brand",
     "fix": "Fill in the brand for every product.",
     "action_refs": [
      3
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_brand",
       "label": "Missing brand for AI commerce",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "feed_coverage",
     "label": "Core facts AI shopping assistants need are missing",
     "view": null,
     "dimension_key": "agent_required_attrs",
     "dimension_name": "AI shopping essentials",
     "measured": "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",
     "fix": "Make sure the product markup of every product page carries name, image, brand and gtin — on each variant too — and keeps every property it already publishes.",
     "action_refs": [
      3
     ],
     "score_pct": 78,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "core_attrs_present_pct",
       "label": "Core facts AI shopping assistants need are missing",
       "value": 77.8,
       "score_pct": 78,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "entity_clarity",
       "label": "Low entity clarity",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "schema_coverage",
     "label": "Not ready for Google's rich results",
     "view": null,
     "dimension_key": "structured_data",
     "dimension_name": "Product markup",
     "measured": "rating and review markup missing; offer and breadcrumb present",
     "target": "Rating, offer, review, and breadcrumb markup present (the parts Google uses for richer search results)",
     "fix": "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.",
     "action_refs": [
      7
     ],
     "score_pct": 62,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "structured_data",
       "metric_key": "rich_snippet_rate",
       "label": "Not ready for Google's rich results",
       "value": 50.0,
       "score_pct": 62,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "29 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 29,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 29,
       "score_pct": 29,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Insulated mini-split line set, 25 feet",
   "index_score_pct": 89,
   "checks_total": 56,
   "checks_failed": 14,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": null,
     "target": "A safety data sheet or safety warnings linked from the product page",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_safety_data",
       "label": "Missing safety data",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "CPVC pipe transition bushing",
   "index_score_pct": 82,
   "checks_total": 56,
   "checks_failed": 16,
   "issues": [
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "brand",
     "label": "The brand isn't stated in your product data",
     "view": null,
     "dimension_key": "agent_required_attrs",
     "dimension_name": "AI shopping essentials",
     "measured": null,
     "target": "Every product page publishes: Brand",
     "fix": "Fill in the brand for every product.",
     "action_refs": [
      3
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_brand",
       "label": "Missing brand for AI commerce",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "feed_coverage",
     "label": "Core facts AI shopping assistants need are missing",
     "view": null,
     "dimension_key": "agent_required_attrs",
     "dimension_name": "AI shopping essentials",
     "measured": "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",
     "fix": "Make sure the product markup of every product page carries name, image, brand and gtin — on each variant too — and keeps every property it already publishes.",
     "action_refs": [
      3
     ],
     "score_pct": 78,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "core_attrs_present_pct",
       "label": "Core facts AI shopping assistants need are missing",
       "value": 77.8,
       "score_pct": 78,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "entity_clarity",
       "label": "Low entity clarity",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "schema_coverage",
     "label": "Not ready for Google's rich results",
     "view": null,
     "dimension_key": "structured_data",
     "dimension_name": "Product markup",
     "measured": "rating and review markup missing; offer and breadcrumb present",
     "target": "Rating, offer, review, and breadcrumb markup present (the parts Google uses for richer search results)",
     "fix": "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.",
     "action_refs": [
      7
     ],
     "score_pct": 62,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "structured_data",
       "metric_key": "rich_snippet_rate",
       "label": "Not ready for Google's rich results",
       "value": 50.0,
       "score_pct": 62,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "51 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 51,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 51,
       "score_pct": 51,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Four-ton gas packaged unit parts list",
   "index_score_pct": 81,
   "checks_total": 53,
   "checks_failed": 14,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": null,
     "target": "A specification sheet linked from the product page",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Images are too small (thumbnails, not full size)",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": null,
     "target": "Full-size product images, not thumbnails",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5
     ],
     "score_pct": 30,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "resolution_adequacy",
       "label": "Images are too small (thumbnails, not full size)",
       "value": 30.0,
       "score_pct": 30,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "ratings",
     "label": "No star rating in the product markup",
     "view": null,
     "dimension_key": "structured_data",
     "dimension_name": "Product markup",
     "measured": null,
     "target": "Every product page publishes: Star rating",
     "fix": "Collect customer reviews with a reviews tool that publishes star ratings on the product page.",
     "action_refs": [
      7
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "structured_data",
       "metric_key": "has_aggregate_rating",
       "label": "No star rating in the product markup",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "schema_coverage",
     "label": "Not ready for Google's rich results",
     "view": null,
     "dimension_key": "structured_data",
     "dimension_name": "Product markup",
     "measured": "rating and review markup missing; offer and breadcrumb present",
     "target": "Rating, offer, review, and breadcrumb markup present (the parts Google uses for richer search results)",
     "fix": "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.",
     "action_refs": [
      7
     ],
     "score_pct": 62,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "structured_data",
       "metric_key": "rich_snippet_rate",
       "label": "Not ready for Google's rich results",
       "value": 50.0,
       "score_pct": 62,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "37 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 37,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 37,
       "score_pct": 37,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Two-gang blank wall plate in black",
   "index_score_pct": 88,
   "checks_total": 59,
   "checks_failed": 14,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_safety_data",
       "label": "Missing safety data",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Rectangular HVAC zone damper",
   "index_score_pct": 83,
   "checks_total": 56,
   "checks_failed": 14,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": null,
     "target": "An installation guide or manual linked from the product page",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "37 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 37,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 37,
       "score_pct": 37,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Single-stage gas furnace parts list",
   "index_score_pct": 69,
   "checks_total": 49,
   "checks_failed": 18,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": null,
     "target": "A specification sheet linked from the product page",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Images are too small (thumbnails, not full size)",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": null,
     "target": "Full-size product images, not thumbnails",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5
     ],
     "score_pct": 30,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "resolution_adequacy",
       "label": "Images are too small (thumbnails, not full size)",
       "value": 30.0,
       "score_pct": 30,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "ratings",
     "label": "No star rating in the product markup",
     "view": null,
     "dimension_key": "structured_data",
     "dimension_name": "Product markup",
     "measured": null,
     "target": "Every product page publishes: Star rating",
     "fix": "Collect customer reviews with a reviews tool that publishes star ratings on the product page.",
     "action_refs": [
      7
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "structured_data",
       "metric_key": "has_aggregate_rating",
       "label": "No star rating in the product markup",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "schema_coverage",
     "label": "Not ready for Google's rich results",
     "view": null,
     "dimension_key": "structured_data",
     "dimension_name": "Product markup",
     "measured": "rating and review markup missing; offer and breadcrumb present",
     "target": "Rating, offer, review, and breadcrumb markup present (the parts Google uses for richer search results)",
     "fix": "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.",
     "action_refs": [
      7
     ],
     "score_pct": 62,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "structured_data",
       "metric_key": "rich_snippet_rate",
       "label": "Not ready for Google's rich results",
       "value": 50.0,
       "score_pct": 62,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "61 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 61,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 61,
       "score_pct": 61,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Two-gang outlet wall plate in white",
   "index_score_pct": 88,
   "checks_total": 59,
   "checks_failed": 14,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_safety_data",
       "label": "Missing safety data",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Cond.Coil Cu/Al, EX40032",
   "index_score_pct": 72,
   "checks_total": 51,
   "checks_failed": 17,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "title_quality",
     "label": "Product titles don't say what the product is",
     "view": null,
     "dimension_key": "findability",
     "dimension_name": "Search findability",
     "measured": null,
     "target": "A title that names the product, not only a model number or SKU",
     "fix": "Rewrite titles that are only a code or part number so they say what the product is: brand, product type, and the key specification.",
     "action_refs": [
      6
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "findability",
       "metric_key": "title_quality",
       "label": "Product title is a part number, not descriptive",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "31 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 31,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 31,
       "score_pct": 31,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Large fabricated PVC drain wye",
   "index_score_pct": 83,
   "checks_total": 52,
   "checks_failed": 15,
   "issues": [
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "brand",
     "label": "The brand isn't stated in your product data",
     "view": null,
     "dimension_key": "agent_required_attrs",
     "dimension_name": "AI shopping essentials",
     "measured": null,
     "target": "Every product page publishes: Brand",
     "fix": "Fill in the brand for every product.",
     "action_refs": [
      3
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_brand",
       "label": "Missing brand for AI commerce",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "feed_coverage",
     "label": "Core facts AI shopping assistants need are missing",
     "view": null,
     "dimension_key": "agent_required_attrs",
     "dimension_name": "AI shopping essentials",
     "measured": "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",
     "fix": "Make sure the product markup of every product page carries name, image, brand and gtin — on each variant too — and keeps every property it already publishes.",
     "action_refs": [
      3
     ],
     "score_pct": 78,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "core_attrs_present_pct",
       "label": "Core facts AI shopping assistants need are missing",
       "value": 77.8,
       "score_pct": 78,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "entity_clarity",
       "label": "Low entity clarity",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "34 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 34,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 34,
       "score_pct": 34,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Faucet handle plug button kit",
   "index_score_pct": 72,
   "checks_total": 54,
   "checks_failed": 18,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "25 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 25,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 25,
       "score_pct": 25,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Flame Cell, EX-FC2207",
   "index_score_pct": 45,
   "checks_total": 48,
   "checks_failed": 19,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "title_quality",
     "label": "Product titles don't say what the product is",
     "view": null,
     "dimension_key": "findability",
     "dimension_name": "Search findability",
     "measured": null,
     "target": "A title that names the product, not only a model number or SKU",
     "fix": "Rewrite titles that are only a code or part number so they say what the product is: brand, product type, and the key specification.",
     "action_refs": [
      6
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "findability",
       "metric_key": "title_quality",
       "label": "Product title is a part number, not descriptive",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "22 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 22,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 22,
       "score_pct": 22,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "High-capacity gas furnace parts list",
   "index_score_pct": 80,
   "checks_total": 49,
   "checks_failed": 14,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "25 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 25,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 25,
       "score_pct": 25,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Downflow gas furnace parts list",
   "index_score_pct": 70,
   "checks_total": 49,
   "checks_failed": 16,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": null,
     "target": "A specification sheet linked from the product page",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Images are too small (thumbnails, not full size)",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": null,
     "target": "Full-size product images, not thumbnails",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5
     ],
     "score_pct": 30,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "resolution_adequacy",
       "label": "Images are too small (thumbnails, not full size)",
       "value": 30.0,
       "score_pct": 30,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "ratings",
     "label": "No star rating in the product markup",
     "view": null,
     "dimension_key": "structured_data",
     "dimension_name": "Product markup",
     "measured": null,
     "target": "Every product page publishes: Star rating",
     "fix": "Collect customer reviews with a reviews tool that publishes star ratings on the product page.",
     "action_refs": [
      7
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "structured_data",
       "metric_key": "has_aggregate_rating",
       "label": "No star rating in the product markup",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "schema_coverage",
     "label": "Not ready for Google's rich results",
     "view": null,
     "dimension_key": "structured_data",
     "dimension_name": "Product markup",
     "measured": "rating and review markup missing; offer and breadcrumb present",
     "target": "Rating, offer, review, and breadcrumb markup present (the parts Google uses for richer search results)",
     "fix": "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.",
     "action_refs": [
      7
     ],
     "score_pct": 62,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "structured_data",
       "metric_key": "rich_snippet_rate",
       "label": "Not ready for Google's rich results",
       "value": 50.0,
       "score_pct": 62,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Panel,Gas Sect, EX48T50",
   "index_score_pct": 71,
   "checks_total": 51,
   "checks_failed": 18,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "title_quality",
     "label": "Product titles don't say what the product is",
     "view": null,
     "dimension_key": "findability",
     "dimension_name": "Search findability",
     "measured": null,
     "target": "A title that names the product, not only a model number or SKU",
     "fix": "Rewrite titles that are only a code or part number so they say what the product is: brand, product type, and the key specification.",
     "action_refs": [
      6
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "findability",
       "metric_key": "title_quality",
       "label": "Product title is a part number, not descriptive",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "24 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 24,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 24,
       "score_pct": 24,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Pipe threading die head",
   "index_score_pct": 90,
   "checks_total": 60,
   "checks_failed": 10,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": null,
     "target": "CAD files, 3D models, or dimensional drawings linked from the product page",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_cad_files",
       "label": "Missing CAD or 3D files",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Masonry tunnel drill bit",
   "index_score_pct": 86,
   "checks_total": 59,
   "checks_failed": 14,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Packaged heat pump unit parts list",
   "index_score_pct": 77,
   "checks_total": 52,
   "checks_failed": 16,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": null,
     "target": "A specification sheet linked from the product page",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Images are too small (thumbnails, not full size)",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": null,
     "target": "Full-size product images, not thumbnails",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5
     ],
     "score_pct": 30,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "resolution_adequacy",
       "label": "Images are too small (thumbnails, not full size)",
       "value": 30.0,
       "score_pct": 30,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "schema_coverage",
     "label": "Not ready for Google's rich results",
     "view": null,
     "dimension_key": "structured_data",
     "dimension_name": "Product markup",
     "measured": "rating and review markup missing; offer and breadcrumb present",
     "target": "Rating, offer, review, and breadcrumb markup present (the parts Google uses for richer search results)",
     "fix": "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.",
     "action_refs": [
      7
     ],
     "score_pct": 62,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "structured_data",
       "metric_key": "rich_snippet_rate",
       "label": "Not ready for Google's rich results",
       "value": 50.0,
       "score_pct": 62,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "37 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 37,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 37,
       "score_pct": 37,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Industrial limit switch",
   "index_score_pct": 74,
   "checks_total": 52,
   "checks_failed": 17,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": null,
     "target": "An installation guide or manual linked from the product page",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "27 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 27,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 27,
       "score_pct": 27,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Dual shower head with hand spray",
   "index_score_pct": 91,
   "checks_total": 58,
   "checks_failed": 9,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Condenser outlet tube assembly",
   "index_score_pct": 68,
   "checks_total": 50,
   "checks_failed": 16,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "24 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 24,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 24,
       "score_pct": 24,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Cable cutter replacement blades",
   "index_score_pct": 74,
   "checks_total": 54,
   "checks_failed": 17,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Circulator pump mechanical seal",
   "index_score_pct": 68,
   "checks_total": 49,
   "checks_failed": 17,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "1 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 33,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "28 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 28,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 28,
       "score_pct": 28,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Two-ton packaged unit parts list",
   "index_score_pct": 73,
   "checks_total": 50,
   "checks_failed": 16,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "25 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 25,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 25,
       "score_pct": 25,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Stainless steel farmhouse kitchen sink",
   "index_score_pct": 86,
   "checks_total": 57,
   "checks_failed": 11,
   "issues": [
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "schema_coverage",
     "label": "Not ready for Google's rich results",
     "view": null,
     "dimension_key": "structured_data",
     "dimension_name": "Product markup",
     "measured": "rating and review markup missing; offer and breadcrumb present",
     "target": "Rating, offer, review, and breadcrumb markup present (the parts Google uses for richer search results)",
     "fix": "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.",
     "action_refs": [
      7
     ],
     "score_pct": 62,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "structured_data",
       "metric_key": "rich_snippet_rate",
       "label": "Not ready for Google's rich results",
       "value": 50.0,
       "score_pct": 62,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Commercial heat pump parts list",
   "index_score_pct": 76,
   "checks_total": 48,
   "checks_failed": 15,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "27 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 27,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 27,
       "score_pct": 27,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Small single-phase compressor",
   "index_score_pct": 63,
   "checks_total": 47,
   "checks_failed": 19,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "1 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 33,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "24 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 24,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 24,
       "score_pct": 24,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Dual-spray kitchen faucet, dark finish",
   "index_score_pct": 90,
   "checks_total": 56,
   "checks_failed": 12,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": null,
     "target": "An installation guide or manual linked from the product page",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "44 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 44,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 44,
       "score_pct": 44,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Single-gang cast iron device box",
   "index_score_pct": 89,
   "checks_total": 58,
   "checks_failed": 13,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Product descriptions are too thin or contain errors",
     "view": null,
     "dimension_key": "descriptions",
     "dimension_name": "Product descriptions",
     "measured": "96.7% of words spelled correctly",
     "target": "At least 98% of words spelled correctly",
     "fix": "Fix spelling and grammar, and remove sentences repeated within a description.",
     "action_refs": [
      8
     ],
     "score_pct": 73,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "descriptions",
       "metric_key": "spelling_accuracy_min",
       "label": "Spelling errors in descriptions",
       "value": 96.67,
       "score_pct": 73,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Downflow furnace parts list",
   "index_score_pct": 82,
   "checks_total": 50,
   "checks_failed": 14,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "25 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 25,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 25,
       "score_pct": 25,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Large commercial heat pump parts list",
   "index_score_pct": 79,
   "checks_total": 48,
   "checks_failed": 15,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "27 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 27,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 27,
       "score_pct": 27,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Evaporator coil with drain pan",
   "index_score_pct": 68,
   "checks_total": 50,
   "checks_failed": 19,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "1 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 33,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "25 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 25,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 25,
       "score_pct": 25,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Whole-home dehumidifier control panel",
   "index_score_pct": 84,
   "checks_total": 55,
   "checks_failed": 12,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "34 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 34,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 34,
       "score_pct": 34,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Press-fit pressure reducing valve",
   "index_score_pct": 89,
   "checks_total": 54,
   "checks_failed": 9,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": null,
     "target": "CAD files, 3D models, or dimensional drawings linked from the product page",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_cad_files",
       "label": "Missing CAD or 3D files",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Mini-split indoor unit parts list",
   "index_score_pct": 66,
   "checks_total": 46,
   "checks_failed": 15,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "35 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 35,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 35,
       "score_pct": 35,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Outdoor control box housing",
   "index_score_pct": 77,
   "checks_total": 52,
   "checks_failed": 15,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "imagery",
     "label": "Product images are missing, too few, or undescribed",
     "view": null,
     "dimension_key": "imagery",
     "dimension_name": "Product images",
     "measured": "2 image(s)",
     "target": "At least 3 images per product",
     "fix": "Add several high-resolution images to every product; make the first one a clean, clear main image.",
     "action_refs": [
      5,
      9
     ],
     "score_pct": 67,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "imagery",
       "metric_key": "image_count",
       "label": "Too few product images",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "return_risk_score",
       "metric_key": "image_completeness",
       "label": "Insufficient images increases return risk",
       "value": 2,
       "score_pct": 67,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "26 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 26,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 26,
       "score_pct": 26,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Mid-efficiency furnace parts list",
   "index_score_pct": 80,
   "checks_total": 48,
   "checks_failed": 14,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": "0 document link(s)",
     "target": "At least 3 distinct document links per product",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_spec_sheet_link",
       "label": "Missing specification sheet",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptive_content",
     "label": "Descriptions don't answer shoppers' questions",
     "view": null,
     "dimension_key": "nl_parseability",
     "dimension_name": "AI readability",
     "measured": null,
     "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)",
     "fix": "Add a short \"what it's for and how to use it\" passage and an FAQ to each product's description.",
     "action_refs": [
      4
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "nl_parseability",
       "metric_key": "has_use_case_content",
       "label": "No use case content",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "descriptions",
     "label": "Short description raises return risk",
     "view": null,
     "dimension_key": "return_risk_score",
     "dimension_name": "Return-risk protection",
     "measured": "31 words of description",
     "target": "A description of at least 100 words",
     "fix": "Make sure every product has a full description stating what it is and what's included.",
     "action_refs": [
      9
     ],
     "score_pct": 31,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "return_risk_score",
       "metric_key": "description_depth",
       "label": "Short description raises return risk",
       "value": 31,
       "score_pct": 31,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  },
  {
   "url": null,
   "product_name": "Ventilator filter kit, pack of two",
   "index_score_pct": 85,
   "checks_total": 58,
   "checks_failed": 10,
   "issues": [
    {
     "root_cause": "product_docs",
     "label": "Technical documents are missing",
     "view": null,
     "dimension_key": "technical_documentation",
     "dimension_name": "Technical documents",
     "measured": null,
     "target": "An installation guide or manual linked from the product page",
     "fix": "Upload each product's spec sheet, installation or user guide, and safety data sheet where one exists, and link them from the product page.",
     "action_refs": [
      1
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "technical_documentation",
       "metric_key": "doc_link_count",
       "label": "Insufficient documentation links",
       "value": 1,
       "score_pct": 33,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "technical_documentation",
       "metric_key": "has_installation_guide",
       "label": "Missing installation guide",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "offer_schema",
     "label": "Price, stock, or condition is missing from your product data",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "target": "Every product page publishes: Condition (new or used)",
     "fix": "Publish the condition in the product markup: itemCondition on the offers of the product and every variant (https://schema.org/NewCondition for new goods, UsedCondition or RefurbishedCondition where that's true), so the page states what the feed sends.",
     "action_refs": [
      2
     ],
     "score_pct": 0,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "condition_present",
       "label": "Missing product condition",
       "value": 0,
       "score_pct": 0,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    },
    {
     "root_cause": "identifiers",
     "label": "Product identifiers are missing from your product pages",
     "view": null,
     "dimension_key": "feed_protocol_compliance",
     "dimension_name": "Shopping-channel readiness",
     "measured": null,
     "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",
     "fix": "Add the barcode (GTIN, UPC, or EAN) for every product that has one; for your own-brand items, make sure each has a brand and a unique SKU instead.",
     "action_refs": [
      2,
      3
     ],
     "score_pct": 60,
     "deprioritized": false,
     "checks": [
      {
       "dimension_key": "agent_required_attrs",
       "metric_key": "has_gtin",
       "label": "No barcode for AI shopping assistants",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      },
      {
       "dimension_key": "feed_protocol_compliance",
       "metric_key": "gtin_present",
       "label": "No barcode for shopping feeds",
       "value": 0,
       "score_pct": 60,
       "deprioritized": false,
       "view": null
      }
     ],
     "conflicts": []
    }
   ],
   "rewrites": [],
   "rewrite_status": null,
   "poor_example": false
  }
 ],
 "feed": false,
 "total_product_count": 2192,
 "headline_capped": true,
 "actions": []
}