{
  "schema_version": 1,
  "checked": "2026-10-22",
  "currency": "USD",
  "price_source_priority": [
    "feed",
    "manual",
    "lowest_online"
  ],
  "price_source_labels": {
    "feed": "Retailer product feed",
    "manual": "Checked by hand",
    "lowest_online": "Lowest online price found",
    "pending_feed": "Waiting on retailer feed"
  },
  "excluded_retailers": [
    "Five Below (no yarn line found)",
    "Kmart (no meaningful US presence)"
  ],
  "categories": [
    {
      "id": "yarn",
      "name": "Yarn",
      "status": "active",
      "unit_metrics": [
        "per_100_yd",
        "per_100_g"
      ],
      "subcategories": [
        {
          "id": "worsted-acrylic",
          "name": "Medium (#4) acrylic",
          "blurb": "Everyday worsted and aran acrylic for blankets, hats and garments."
        },
        {
          "id": "worsted-cotton",
          "name": "Medium (#4) cotton",
          "blurb": "Cotton for dishcloths, market bags and summer pieces."
        },
        {
          "id": "chenille-medium",
          "name": "Medium (#4) chenille and velvet",
          "blurb": "Thin, velvety chenille for garments and amigurumi."
        },
        {
          "id": "chenille-bulky",
          "name": "Bulky and super bulky (#5–#6) chenille",
          "blurb": "Plush blanket and amigurumi yarns."
        }
      ]
    },
    {
      "id": "hooks",
      "name": "Crochet hooks",
      "status": "coming_soon",
      "unit_metrics": [
        "per_hook"
      ],
      "subcategories": []
    },
    {
      "id": "stuffing",
      "name": "Stuffing and fiberfill",
      "status": "coming_soon",
      "unit_metrics": [
        "per_100_g"
      ],
      "subcategories": []
    },
    {
      "id": "notions",
      "name": "Notions (markers, needles, eyes)",
      "status": "coming_soon",
      "unit_metrics": [
        "per_piece"
      ],
      "subcategories": []
    }
  ],
  "retailers": [
    {
      "id": "michaels",
      "name": "Michaels",
      "status": "open",
      "store_brands": [
        "Loops & Threads",
        "Big Twist (from JOANN, June 2025)"
      ],
      "price_source_plan": [
        "feed (CJ product feed, once approved)",
        "manual",
        "lowest_online (current baseline)"
      ],
      "in_tracker": true,
      "notes": "Michaels.com blocks automated checks."
    },
    {
      "id": "hobby-lobby",
      "name": "Hobby Lobby",
      "status": "open",
      "store_brands": [
        "Yarn Bee",
        "I Love This Yarn / I Love This Cotton"
      ],
      "price_source_plan": [
        "manual"
      ],
      "in_tracker": true,
      "notes": "CJ feed unconfirmed; manual monthly check."
    },
    {
      "id": "dollar-tree",
      "name": "Dollar Tree",
      "status": "open",
      "store_brands": [
        "Crafter's Square"
      ],
      "price_source_plan": [
        "manual"
      ],
      "in_tracker": true,
      "notes": "Awin program has no data feed."
    },
    {
      "id": "lovecrafts",
      "name": "LoveCrafts",
      "status": "open",
      "store_brands": [
        "Paintbox Yarns"
      ],
      "price_source_plan": [
        "manual"
      ],
      "in_tracker": true,
      "notes": "Direct affiliate program; feed unconfirmed."
    },
    {
      "id": "target",
      "name": "Target",
      "status": "open",
      "store_brands": [
        "Mondo Llama (kits and twine, no yarn line)"
      ],
      "price_source_plan": [
        "feed (Impact Merchandiser Datafeed) only"
      ],
      "in_tracker": true,
      "notes": "No scraping. Placeholder until the feed is connected."
    },
    {
      "id": "joann",
      "name": "JOANN",
      "status": "closed",
      "store_brands": [
        "Big Twist (now Michaels)"
      ],
      "price_source_plan": [],
      "in_tracker": false,
      "notes": "All stores closed by May 30, 2025. Michaels bought JOANN's brands and IP on June 5, 2025."
    }
  ],
  "products": [
    {
      "id": "hl-i-love-this-yarn",
      "category": "yarn",
      "subcategory": "worsted-acrylic",
      "role": "store_brand",
      "name": "I Love This Yarn",
      "brand": "I Love This Yarn",
      "brand_note": "Sold only at Hobby Lobby. Hobby Lobby doesn't state on the page that it owns the brand; third-party sources call it a Hobby Lobby house brand.",
      "retailer": "Hobby Lobby",
      "url": "https://www.hobbylobby.com/yarn-needle-art/yarn-tools/yarn/i-love-this-yarn/p/yn20120",
      "affiliate_program": "CJ (Hobby Lobby, not applied)",
      "specs": {
        "fiber": "100% acrylic",
        "weight_class": "4 Medium",
        "grams": 198,
        "oz": 7,
        "yards": 355,
        "meters": null,
        "hook": "5.5 mm (I-9)",
        "grams_note": "Hobby Lobby lists weight in ounces only; grams converted (1 oz = 28.35 g)."
      },
      "unit_amounts": {
        "yd": 355,
        "g": 198
      },
      "spec_source": "https://www.hobbylobby.com/yarn-needle-art/yarn-tools/yarn/i-love-this-yarn/p/yn20120",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 4.99,
          "regular_price": 4.99,
          "on_sale": false,
          "seller": "Hobby Lobby",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Regular price on hobbylobby.com; no sale shown."
        }
      ]
    },
    {
      "id": "hl-yarn-bee-soft-sleek",
      "category": "yarn",
      "subcategory": "worsted-acrylic",
      "role": "store_brand",
      "name": "Yarn Bee Soft & Sleek",
      "brand": "Yarn Bee (Hobby Lobby)",
      "brand_note": null,
      "retailer": "Hobby Lobby",
      "url": "https://www.hobbylobby.com/yarn-needle-art/yarn-tools/yarn/yarn-bee-soft-sleek-yarn/p/ss42114",
      "affiliate_program": "CJ (Hobby Lobby, not applied)",
      "specs": {
        "fiber": "100% low-pill acrylic",
        "weight_class": "4 Medium",
        "grams": 142,
        "oz": 5,
        "yards": 232,
        "meters": null,
        "hook": "6 mm (J-10)",
        "grams_note": "Hobby Lobby lists weight in ounces only; grams converted (1 oz = 28.35 g)."
      },
      "unit_amounts": {
        "yd": 232,
        "g": 142
      },
      "spec_source": "https://www.hobbylobby.com/yarn-needle-art/yarn-tools/yarn/yarn-bee-soft-sleek-yarn/p/ss42114",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 5.49,
          "regular_price": 5.49,
          "on_sale": false,
          "seller": "Hobby Lobby",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Regular price on hobbylobby.com; no sale shown."
        }
      ]
    },
    {
      "id": "mi-impeccable",
      "category": "yarn",
      "subcategory": "worsted-acrylic",
      "role": "store_brand",
      "name": "Loops & Threads Impeccable (solids)",
      "brand": "Loops & Threads (Michaels)",
      "brand_note": null,
      "retailer": "Michaels",
      "url": null,
      "affiliate_program": "CJ (Michaels, not applied)",
      "specs": {
        "fiber": "100% acrylic",
        "weight_class": "4 Medium",
        "grams": 127.5,
        "oz": 4.5,
        "yards": 285,
        "meters": 260,
        "hook": "5 mm (H-8)",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 285,
        "g": 127.5
      },
      "spec_source": "https://www.ravelry.com/yarns/library/loops--threads-impeccable-solids",
      "spec_note": "Specs from Ravelry's copy of the Michaels product details. Michaels.com couldn't be loaded. Michaels notes some packaging may show incorrect yardage.",
      "observations": [
        {
          "price_source": "pending_feed",
          "price": null,
          "regular_price": null,
          "on_sale": false,
          "seller": null,
          "seller_url": null,
          "shipping_included": null,
          "checked_date": null,
          "verified": false,
          "note": "Michaels' CJ product feed replaces this baseline once our CJ application is approved. Michaels.com blocks automated checks."
        },
        {
          "price_source": "lowest_online",
          "price": 4.99,
          "regular_price": 4.99,
          "on_sale": false,
          "seller": "Instacart (Michaels store)",
          "seller_url": "https://www.instacart.com/products/29396605-loops-threads-impeccable-yarn-almond-4-5-oz",
          "shipping_included": false,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Lowest online price we could verify. Instacart delivery and service fees are extra. Amazon showed a robot check and eBay blocked our request, so those couldn't be compared."
        }
      ]
    },
    {
      "id": "mi-big-twist-value",
      "category": "yarn",
      "subcategory": "worsted-acrylic",
      "role": "store_brand",
      "name": "Big Twist Value",
      "brand": "Big Twist (Michaels; formerly JOANN)",
      "brand_note": "Big Twist was JOANN's house brand. Michaels bought JOANN's brands in June 2025, after JOANN closed.",
      "retailer": "Michaels",
      "url": null,
      "affiliate_program": "CJ (Michaels, not applied)",
      "specs": {
        "fiber": "100% acrylic",
        "weight_class": "4 Medium",
        "grams": 170,
        "oz": 6,
        "yards": 380,
        "meters": 347,
        "hook": "5 mm (H-8)",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 380,
        "g": 170
      },
      "spec_source": "https://herrschners.com/big-twist-value-yarn/",
      "spec_note": null,
      "observations": [
        {
          "price_source": "pending_feed",
          "price": null,
          "regular_price": null,
          "on_sale": false,
          "seller": null,
          "seller_url": null,
          "shipping_included": null,
          "checked_date": null,
          "verified": false,
          "note": "Michaels' CJ product feed replaces this baseline once our CJ application is approved. Michaels.com blocks automated checks."
        },
        {
          "price_source": "lowest_online",
          "price": 3.49,
          "regular_price": 4.49,
          "on_sale": true,
          "seller": "Herrschners",
          "seller_url": "https://herrschners.com/big-twist-value-yarn/",
          "shipping_included": false,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Lowest online price we could verify: $3.49 sale (retail $4.49) at Herrschners. A Shipt listing from Michaels showed $5.89. Amazon and eBay couldn't be checked. Shipping extra."
        }
      ]
    },
    {
      "id": "dt-crafters-square-acrylic",
      "category": "yarn",
      "subcategory": "worsted-acrylic",
      "role": "store_brand",
      "name": "Crafter's Square Acrylic Yarn",
      "brand": "Crafter's Square (Dollar Tree)",
      "brand_note": null,
      "retailer": "Dollar Tree",
      "url": null,
      "affiliate_program": "Awin (Dollar Tree, not applied)",
      "specs": {
        "fiber": "100% acrylic",
        "weight_class": "Not stated on label",
        "grams": 60,
        "oz": 2.1,
        "yards": 132,
        "meters": 120,
        "hook": "6 mm (J-10)",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 132,
        "g": 60
      },
      "spec_source": "https://lovelifeyarn.com/dollar-tree-yarn/",
      "spec_note": "Specs from a third-party review of the label, not from Dollar Tree. The label doesn't give a weight category; the reviewer says it works like a light worsted.",
      "observations": [
        {
          "price_source": "manual",
          "price": null,
          "regular_price": null,
          "on_sale": false,
          "seller": null,
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": false,
          "note": "Price not yet verified. Dollar Tree's website didn't list this yarn when we checked, and it has no product feed. Needs an in-store or online manual check."
        }
      ]
    },
    {
      "id": "lc-paintbox-simply-aran",
      "category": "yarn",
      "subcategory": "worsted-acrylic",
      "role": "store_brand",
      "name": "Paintbox Yarns Simply Aran",
      "brand": "Paintbox Yarns (LoveCrafts' own brand)",
      "brand_note": "LoveCrafts calls Paintbox Yarns 'our own brand, designed in house.'",
      "retailer": "LoveCrafts",
      "url": "https://www.lovecrafts.com/en-us/p/paintbox-yarns-simply-aran",
      "affiliate_program": "LoveCrafts direct program (not applied)",
      "specs": {
        "fiber": "100% acrylic",
        "weight_class": "4 Medium (Aran)",
        "grams": 100,
        "oz": 3.53,
        "yards": 201,
        "meters": 184,
        "hook": null,
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 201,
        "g": 100
      },
      "spec_source": "https://www.lovecrafts.com/en-us/p/paintbox-yarns-simply-aran",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 2.93,
          "regular_price": 4.5,
          "on_sale": true,
          "seller": "LoveCrafts",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Sale price (35% off $4.50) on lovecrafts.com, US store."
        }
      ]
    },
    {
      "id": "rh-super-saver",
      "category": "yarn",
      "subcategory": "worsted-acrylic",
      "role": "comparable",
      "name": "Red Heart Super Saver (solids)",
      "brand": "Red Heart",
      "brand_note": null,
      "retailer": "Yarnspirations",
      "url": "https://www.yarnspirations.com/products/red-heart-super-saver-yarn",
      "affiliate_program": "Yarnspirations (CJ)",
      "specs": {
        "fiber": "100% acrylic",
        "weight_class": "4 Medium",
        "grams": 198,
        "oz": 7,
        "yards": 364,
        "meters": 333,
        "hook": "5.5 mm (I-9)",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 364,
        "g": 198
      },
      "spec_source": "https://www.yarnspirations.com/products/red-heart-super-saver-yarn",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 5.99,
          "regular_price": 5.99,
          "on_sale": false,
          "seller": "Yarnspirations",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "List price on yarnspirations.com. Prints and heathers are smaller 141 g / 236 yd skeins."
        }
      ]
    },
    {
      "id": "caron-simply-soft",
      "category": "yarn",
      "subcategory": "worsted-acrylic",
      "role": "comparable",
      "name": "Caron Simply Soft",
      "brand": "Caron",
      "brand_note": null,
      "retailer": "Yarnspirations",
      "url": "https://www.yarnspirations.com/products/caron-simply-soft-yarn",
      "affiliate_program": "Yarnspirations (CJ)",
      "specs": {
        "fiber": "100% acrylic",
        "weight_class": "4 Medium",
        "grams": 170,
        "oz": 6,
        "yards": 315,
        "meters": 288,
        "hook": "5 mm (H-8)",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 315,
        "g": 170
      },
      "spec_source": "https://www.yarnspirations.com/products/caron-simply-soft-yarn",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 6.99,
          "regular_price": 6.99,
          "on_sale": false,
          "seller": "Yarnspirations",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "List price on yarnspirations.com."
        }
      ]
    },
    {
      "id": "lb-vannas-choice",
      "category": "yarn",
      "subcategory": "worsted-acrylic",
      "role": "comparable",
      "name": "Vanna's Choice (solids)",
      "brand": "Lion Brand",
      "brand_note": null,
      "retailer": "Lion Brand",
      "url": "https://www.lionbrand.com/products/vannas-choice-yarn",
      "affiliate_program": "Lion Brand (Impact)",
      "specs": {
        "fiber": "100% acrylic",
        "weight_class": "4 Medium",
        "grams": 100,
        "oz": 3.5,
        "yards": 170,
        "meters": 156,
        "hook": "6 mm (J-10)",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 170,
        "g": 100
      },
      "spec_source": "https://www.lionbrand.com/products/vannas-choice-yarn",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 4.99,
          "regular_price": 4.99,
          "on_sale": false,
          "seller": "Lion Brand",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "List price on lionbrand.com. Prints, heathers and twists come in smaller skeins."
        }
      ]
    },
    {
      "id": "kp-brava-worsted",
      "category": "yarn",
      "subcategory": "worsted-acrylic",
      "role": "comparable",
      "name": "Brava Worsted",
      "brand": "Knit Picks",
      "brand_note": null,
      "retailer": "Knit Picks",
      "url": "https://www.knitpicks.com/yarn/brava-worsted-yarn/c/5420219",
      "affiliate_program": "Crochet.com / Knit Picks (Awin)",
      "specs": {
        "fiber": "100% premium acrylic",
        "weight_class": "4 Medium (Worsted)",
        "grams": 100,
        "oz": null,
        "yards": 218,
        "meters": null,
        "hook": "5.5–6.5 mm (I–K)",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 218,
        "g": 100
      },
      "spec_source": "https://www.knitpicks.com/yarn/brava-worsted-yarn/c/5420219",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 3.99,
          "regular_price": 3.99,
          "on_sale": false,
          "seller": "Knit Picks",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Price on knitpicks.com. Some colors were sold out."
        }
      ]
    },
    {
      "id": "hl-i-love-this-cotton",
      "category": "yarn",
      "subcategory": "worsted-cotton",
      "role": "store_brand",
      "name": "I Love This Cotton",
      "brand": "I Love This Yarn",
      "brand_note": null,
      "retailer": "Hobby Lobby",
      "url": "https://www.hobbylobby.com/yarn-needle-art/yarn-tools/yarn/i-love-this-cotton-yarn/p/yn20330",
      "affiliate_program": "CJ (Hobby Lobby, not applied)",
      "specs": {
        "fiber": "100% cotton",
        "weight_class": "4 Medium",
        "grams": 99,
        "oz": 3.5,
        "yards": 180,
        "meters": null,
        "hook": "5.5 mm (I-9)",
        "grams_note": "Hobby Lobby lists weight in ounces only; grams converted (1 oz = 28.35 g)."
      },
      "unit_amounts": {
        "yd": 180,
        "g": 99
      },
      "spec_source": "https://www.hobbylobby.com/yarn-needle-art/yarn-tools/yarn/i-love-this-cotton-yarn/p/yn20330",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 4.49,
          "regular_price": 4.49,
          "on_sale": false,
          "seller": "Hobby Lobby",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Regular price on hobbylobby.com; no sale shown."
        }
      ]
    },
    {
      "id": "lc-paintbox-cotton-aran",
      "category": "yarn",
      "subcategory": "worsted-cotton",
      "role": "store_brand",
      "name": "Paintbox Yarns Cotton Aran",
      "brand": "Paintbox Yarns (LoveCrafts' own brand)",
      "brand_note": null,
      "retailer": "LoveCrafts",
      "url": "https://www.lovecrafts.com/en-us/p/paintbox-yarns-cotton-aran",
      "affiliate_program": "LoveCrafts direct program (not applied)",
      "specs": {
        "fiber": "100% cotton",
        "weight_class": "4 Medium (Aran)",
        "grams": 50,
        "oz": 1.76,
        "yards": 93,
        "meters": 85,
        "hook": null,
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 93,
        "g": 50
      },
      "spec_source": "https://www.lovecrafts.com/en-us/p/paintbox-yarns-cotton-aran",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 3.09,
          "regular_price": 4.75,
          "on_sale": true,
          "seller": "LoveCrafts",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Sale price (35% off $4.75) on lovecrafts.com, US store."
        }
      ]
    },
    {
      "id": "lily-sugarn-cream",
      "category": "yarn",
      "subcategory": "worsted-cotton",
      "role": "comparable",
      "name": "Lily Sugar'n Cream The Original (solids)",
      "brand": "Lily Sugar'n Cream",
      "brand_note": null,
      "retailer": "Yarnspirations",
      "url": "https://www.yarnspirations.com/products/lily-sugarn-cream-the-original-yarn",
      "affiliate_program": "Yarnspirations (CJ)",
      "specs": {
        "fiber": "100% cotton",
        "weight_class": "4 Medium",
        "grams": 71,
        "oz": 2.5,
        "yards": 120,
        "meters": 109,
        "hook": "5 mm (H-8)",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 120,
        "g": 71
      },
      "spec_source": "https://www.yarnspirations.com/products/lily-sugarn-cream-the-original-yarn",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 3.99,
          "regular_price": 3.99,
          "on_sale": false,
          "seller": "Yarnspirations",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "List price on yarnspirations.com. Ombres are 57 g / 95 yd."
        }
      ]
    },
    {
      "id": "kp-dishie",
      "category": "yarn",
      "subcategory": "worsted-cotton",
      "role": "comparable",
      "name": "Dishie",
      "brand": "Knit Picks",
      "brand_note": null,
      "retailer": "Knit Picks",
      "url": "https://www.knitpicks.com/yarn/dishie/c/5420207",
      "affiliate_program": "Crochet.com / Knit Picks (Awin)",
      "specs": {
        "fiber": "100% cotton",
        "weight_class": "4 Medium (Worsted)",
        "grams": 100,
        "oz": null,
        "yards": 190,
        "meters": null,
        "hook": "5.5–6.5 mm (I–K)",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 190,
        "g": 100
      },
      "spec_source": "https://www.knitpicks.com/yarn/dishie/c/5420207",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 4.99,
          "regular_price": 4.99,
          "on_sale": false,
          "seller": "Knit Picks",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Price on knitpicks.com."
        }
      ]
    },
    {
      "id": "mi-petite-purl",
      "category": "yarn",
      "subcategory": "chenille-medium",
      "role": "store_brand",
      "name": "Loops & Threads Petite Purl",
      "brand": "Loops & Threads (Michaels)",
      "brand_note": null,
      "retailer": "Michaels",
      "url": "https://www.michaels.com/product/petite-purl-yarn-by-loops-threads-10750795",
      "affiliate_program": "CJ (Michaels, not applied)",
      "specs": {
        "fiber": "100% polyester",
        "weight_class": "4 Medium",
        "grams": 250,
        "oz": 8.75,
        "yards": 537,
        "meters": 491,
        "hook": "4.5 mm (7)",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 537,
        "g": 250
      },
      "spec_source": "https://www.ravelry.com/yarns/library/loops--threads-petite-purl",
      "spec_note": "Specs from Ravelry's copy of the Michaels label.",
      "observations": [
        {
          "price_source": "pending_feed",
          "price": null,
          "regular_price": null,
          "on_sale": false,
          "seller": null,
          "seller_url": null,
          "shipping_included": null,
          "checked_date": null,
          "verified": false,
          "note": "Michaels' CJ product feed replaces this baseline once our CJ application is approved. Michaels.com blocks automated checks."
        },
        {
          "price_source": "lowest_online",
          "price": 11.59,
          "regular_price": 11.59,
          "on_sale": false,
          "seller": "Shipt (Michaels store)",
          "seller_url": "https://www.shipt.com/shop/products/7d8004e0-9842-11f0-af5c-a313cf7abe6c",
          "shipping_included": false,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Lowest online price we could verify (Mauve, shown for ZIP 85032). Shipt adds a delivery fee for non-members. Amazon listings showed in search results but blocked us with a robot check, so they couldn't be verified. A $7.49 regular price was reported earlier but isn't verified."
        }
      ]
    },
    {
      "id": "hl-yarn-bee-velvety-smooth-aran",
      "category": "yarn",
      "subcategory": "chenille-medium",
      "role": "store_brand",
      "name": "Yarn Bee Velvety Smooth Aran",
      "brand": "Yarn Bee (Hobby Lobby)",
      "brand_note": null,
      "retailer": "Hobby Lobby",
      "url": "https://www.hobbylobby.com/yarn-needle-art/yarn-tools/yarn/yarn-bee-velvety-smooth-aran-yarn/p/art49yarn",
      "affiliate_program": "CJ (Hobby Lobby, not applied)",
      "specs": {
        "fiber": "100% polyester",
        "weight_class": "4 Medium",
        "grams": 99,
        "oz": 3.5,
        "yards": 161,
        "meters": null,
        "hook": "6.5 mm (K-10½)",
        "grams_note": "Hobby Lobby lists weight in ounces only; grams converted (1 oz = 28.35 g)."
      },
      "unit_amounts": {
        "yd": 161,
        "g": 99
      },
      "spec_source": "https://www.hobbylobby.com/yarn-needle-art/yarn-tools/yarn/yarn-bee-velvety-smooth-aran-yarn/p/art49yarn",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 5.49,
          "regular_price": 5.49,
          "on_sale": false,
          "seller": "Hobby Lobby",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Regular price on hobbylobby.com; no sale shown."
        }
      ]
    },
    {
      "id": "hobbii-toucan-fine",
      "category": "yarn",
      "subcategory": "chenille-medium",
      "role": "comparable",
      "name": "Toucan Fine",
      "brand": "Hobbii",
      "brand_note": null,
      "retailer": "Hobbii",
      "url": "https://hobbii.com/toucan-fine",
      "affiliate_program": "Hobbii (Shopify Collabs)",
      "specs": {
        "fiber": "100% polyester",
        "weight_class": "4 Medium",
        "grams": 100,
        "oz": 3.53,
        "yards": 196.85,
        "meters": 180,
        "hook": "6 mm (J-10)",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 196.85,
        "g": 100
      },
      "spec_source": "https://hobbii.com/toucan-fine",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 7.7,
          "regular_price": 7.7,
          "on_sale": false,
          "seller": "Hobbii",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Single-skein price on hobbii.com (US), excluding sales tax."
        }
      ]
    },
    {
      "id": "bernat-future-hope",
      "category": "yarn",
      "subcategory": "chenille-medium",
      "role": "comparable",
      "name": "Bernat Future Hope",
      "brand": "Bernat",
      "brand_note": null,
      "retailer": "Yarnspirations",
      "url": "https://www.yarnspirations.com/products/bernat-future-recycled-chenille-yarn-170g-6oz",
      "affiliate_program": "Yarnspirations (CJ)",
      "specs": {
        "fiber": "100% recycled polyester",
        "weight_class": "4 Medium",
        "grams": 170,
        "oz": 6,
        "yards": 333,
        "meters": 305,
        "hook": "5 mm (H-8)",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 333,
        "g": 170
      },
      "spec_source": "https://www.yarnspirations.com/products/bernat-future-recycled-chenille-yarn-170g-6oz",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 11.99,
          "regular_price": 11.99,
          "on_sale": false,
          "seller": "Yarnspirations",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "List price on yarnspirations.com."
        }
      ]
    },
    {
      "id": "goh-boheme-velvet-double",
      "category": "yarn",
      "subcategory": "chenille-medium",
      "role": "comparable",
      "name": "Go Handmade Bohème Velvet Double",
      "brand": "Go Handmade (sold by Hobbii)",
      "brand_note": null,
      "retailer": "Hobbii",
      "url": "https://hobbii.com/boheme-velvet-double",
      "affiliate_program": "Hobbii (Shopify Collabs)",
      "specs": {
        "fiber": "100% polyester",
        "weight_class": "4 Medium",
        "grams": 50,
        "oz": 1.76,
        "yards": 76.55,
        "meters": 70,
        "hook": "Not listed",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 76.55,
        "g": 50
      },
      "spec_source": "https://hobbii.com/boheme-velvet-double",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 7.2,
          "regular_price": 7.2,
          "on_sale": false,
          "seller": "Hobbii",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Price for 1–3 skeins on hobbii.com (US)."
        }
      ]
    },
    {
      "id": "hl-yarn-bee-velvety-smooth",
      "category": "yarn",
      "subcategory": "chenille-bulky",
      "role": "store_brand",
      "name": "Yarn Bee Velvety Smooth",
      "brand": "Yarn Bee (Hobby Lobby)",
      "brand_note": null,
      "retailer": "Hobby Lobby",
      "url": "https://www.hobbylobby.com/yarn-needle-art/yarn-tools/yarn/yarn-bee-velvety-smooth-yarn/p/vs92612",
      "affiliate_program": "CJ (Hobby Lobby, not applied)",
      "specs": {
        "fiber": "100% polyester",
        "weight_class": "5 Bulky",
        "grams": 99,
        "oz": 3.5,
        "yards": 80,
        "meters": null,
        "hook": "9 mm (M-13)",
        "grams_note": "Hobby Lobby lists weight in ounces only; grams converted (1 oz = 28.35 g)."
      },
      "unit_amounts": {
        "yd": 80,
        "g": 99
      },
      "spec_source": "https://www.hobbylobby.com/yarn-needle-art/yarn-tools/yarn/yarn-bee-velvety-smooth-yarn/p/vs92612",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 5.49,
          "regular_price": 5.49,
          "on_sale": false,
          "seller": "Hobby Lobby",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Regular price on hobbylobby.com; no sale shown."
        }
      ]
    },
    {
      "id": "lb-cover-story-posh-twist",
      "category": "yarn",
      "subcategory": "chenille-bulky",
      "role": "comparable",
      "name": "Cover Story Posh Twist",
      "brand": "Lion Brand",
      "brand_note": null,
      "retailer": "Lion Brand",
      "url": "https://www.lionbrand.com/products/cover-story-posh-twist-yarn",
      "affiliate_program": "Lion Brand (Impact)",
      "specs": {
        "fiber": "100% polyester",
        "weight_class": "5 Bulky",
        "grams": 200,
        "oz": 7.05,
        "yards": 232,
        "meters": 213,
        "hook": "8 mm (L-11)",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 232,
        "g": 200
      },
      "spec_source": "https://www.lionbrand.com/products/cover-story-posh-twist-yarn",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 9.99,
          "regular_price": 9.99,
          "on_sale": false,
          "seller": "Lion Brand",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "List price on lionbrand.com."
        }
      ]
    },
    {
      "id": "kc-yummy",
      "category": "yarn",
      "subcategory": "chenille-bulky",
      "role": "comparable",
      "name": "King Cole Yummy",
      "brand": "King Cole (sold by Knit Picks)",
      "brand_note": null,
      "retailer": "Knit Picks",
      "url": "https://www.knitpicks.com/yarn/king-cole-yummy/c/5420543",
      "affiliate_program": "Crochet.com / Knit Picks (Awin)",
      "specs": {
        "fiber": "100% polyester",
        "weight_class": "5 Bulky",
        "grams": 100,
        "oz": null,
        "yards": 131,
        "meters": null,
        "hook": "6.5–9 mm (K–M)",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 131,
        "g": 100
      },
      "spec_source": "https://www.knitpicks.com/yarn/king-cole-yummy/c/5420543",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 9.26,
          "regular_price": 9.26,
          "on_sale": false,
          "seller": "Knit Picks",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Price on knitpicks.com. Some shades showed no price."
        }
      ]
    },
    {
      "id": "hobbii-honey-bunny",
      "category": "yarn",
      "subcategory": "chenille-bulky",
      "role": "comparable",
      "name": "Honey Bunny",
      "brand": "Hobbii",
      "brand_note": null,
      "retailer": "Hobbii",
      "url": "https://hobbii.com/honey-bunny",
      "affiliate_program": "Hobbii (Shopify Collabs)",
      "specs": {
        "fiber": "100% polyester",
        "weight_class": "6 Super Bulky",
        "grams": 100,
        "oz": 3.53,
        "yards": 131.23,
        "meters": 120,
        "hook": "7 mm",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 131.23,
        "g": 100
      },
      "spec_source": "https://hobbii.com/honey-bunny",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 7.7,
          "regular_price": 7.7,
          "on_sale": false,
          "seller": "Hobbii",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Single-skein price on hobbii.com (US), excluding sales tax."
        }
      ]
    },
    {
      "id": "bernat-blanket",
      "category": "yarn",
      "subcategory": "chenille-bulky",
      "role": "comparable",
      "name": "Bernat Blanket (300 g)",
      "brand": "Bernat",
      "brand_note": null,
      "retailer": "Yarnspirations",
      "url": "https://www.yarnspirations.com/products/bernat-blanket-yarn-300g-10-5oz",
      "affiliate_program": "Yarnspirations (CJ)",
      "specs": {
        "fiber": "100% polyester",
        "weight_class": "6 Super Bulky",
        "grams": 300,
        "oz": 10.5,
        "yards": 220,
        "meters": 201,
        "hook": "8 mm (L-11)",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 220,
        "g": 300
      },
      "spec_source": "https://www.yarnspirations.com/products/bernat-blanket-yarn-300g-10-5oz",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 14.99,
          "regular_price": 14.99,
          "on_sale": false,
          "seller": "Yarnspirations",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "List price on yarnspirations.com."
        }
      ]
    },
    {
      "id": "premier-parfait-plush",
      "category": "yarn",
      "subcategory": "chenille-bulky",
      "role": "comparable",
      "name": "Premier Parfait Plush",
      "brand": "Premier (sold by Mary Maxim)",
      "brand_note": null,
      "retailer": "Mary Maxim",
      "url": "https://www.marymaxim.com/products/premier-parfait-plush-yarn",
      "affiliate_program": "Mary Maxim (Awin)",
      "specs": {
        "fiber": "100% polyester",
        "weight_class": "6 Super Bulky",
        "grams": 200,
        "oz": 7,
        "yards": 174,
        "meters": null,
        "hook": "Not listed",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 174,
        "g": 200
      },
      "spec_source": "https://www.marymaxim.com/products/premier-parfait-plush-yarn",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 7.99,
          "regular_price": 7.99,
          "on_sale": false,
          "seller": "Mary Maxim",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "Listed at $7.99 but marked Unavailable on marymaxim.com."
        }
      ]
    },
    {
      "id": "lb-cover-story",
      "category": "yarn",
      "subcategory": "chenille-bulky",
      "role": "comparable",
      "name": "Cover Story (1000 g)",
      "brand": "Lion Brand",
      "brand_note": null,
      "retailer": "Lion Brand",
      "url": "https://www.lionbrand.com/products/cover-story-yarn",
      "affiliate_program": "Lion Brand (Impact)",
      "specs": {
        "fiber": "100% polyester",
        "weight_class": "6 Super Bulky",
        "grams": 1000,
        "oz": null,
        "yards": 547,
        "meters": 500,
        "hook": "9 mm (N-13)",
        "grams_note": null
      },
      "unit_amounts": {
        "yd": 547,
        "g": 1000
      },
      "spec_source": "https://www.lionbrand.com/products/cover-story-yarn",
      "spec_note": null,
      "observations": [
        {
          "price_source": "manual",
          "price": 39.99,
          "regular_price": 39.99,
          "on_sale": false,
          "seller": "Lion Brand",
          "seller_url": null,
          "shipping_included": null,
          "checked_date": "2026-10-22",
          "verified": true,
          "note": "List price on lionbrand.com."
        }
      ]
    }
  ],
  "placeholders": [
    {
      "id": "target-feed",
      "category": "yarn",
      "subcategory": null,
      "role": "placeholder",
      "name": "Yarn sold at Target",
      "retailer": "Target",
      "url": null,
      "affiliate_program": "Target Partners (Impact, not applied)",
      "observations": [
        {
          "price_source": "pending_feed",
          "price": null,
          "regular_price": null,
          "on_sale": false,
          "seller": null,
          "seller_url": null,
          "shipping_included": null,
          "checked_date": null,
          "verified": false,
          "note": "Target only allows prices from its Impact Merchandiser Datafeed, and scraping its website is banned. No Target prices appear until that feed is connected. Target's own craft brand, Mondo Llama, sells crochet kits and craft twine, not a yarn line."
        }
      ]
    },
    {
      "id": "michaels-feed",
      "category": "yarn",
      "subcategory": null,
      "role": "placeholder",
      "name": "Loops & Threads and Big Twist at Michaels",
      "retailer": "Michaels",
      "url": null,
      "affiliate_program": "Michaels (CJ, not applied)",
      "observations": [
        {
          "price_source": "pending_feed",
          "price": null,
          "regular_price": null,
          "on_sale": false,
          "seller": null,
          "seller_url": null,
          "shipping_included": null,
          "checked_date": null,
          "verified": false,
          "note": "Once Michaels approves us on CJ, its product feed becomes the main Michaels price source and replaces the lowest-online baseline."
        }
      ]
    }
  ]
}
