[object Object]

← back to Trending Dw

real-image pipeline scaffold: plan/download/qc/attach scripts + fingerprint-keyed ledger (internal-only marketplace images)

c44ad99f40bd9be5f52651d0e731dd7dbfc05ee8 · 2026-07-15 10:42:29 -0700 · Steve Abrams

Files touched

Diff

commit c44ad99f40bd9be5f52651d0e731dd7dbfc05ee8
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Jul 15 10:42:29 2026 -0700

    real-image pipeline scaffold: plan/download/qc/attach scripts + fingerprint-keyed ledger (internal-only marketplace images)
---
 data/real-images/manifest.json  | 3110 +++++++++++++++++++++++++++++++++++++++
 scripts/attach-real-images.js   |   43 +
 scripts/download-real-images.js |   95 ++
 scripts/plan-real-images.js     |   56 +
 scripts/qc-real-images.js       |   72 +
 scripts/real-lib.js             |   51 +
 6 files changed, 3427 insertions(+)

diff --git a/data/real-images/manifest.json b/data/real-images/manifest.json
new file mode 100644
index 0000000..d750d09
--- /dev/null
+++ b/data/real-images/manifest.json
@@ -0,0 +1,3110 @@
+{
+  "plannedAt": "2026-07-15T17:42:17.350Z",
+  "count": 247,
+  "estExaCalls": 491,
+  "estExaCostUsd": 2.46,
+  "batches": [
+    {
+      "batch": "etsy-1",
+      "urlClass": "etsy",
+      "items": [
+        {
+          "id": "TR-001",
+          "fingerprint": "c0f9456906fc21c2",
+          "title": "Dark Botanic: Cheetahs & Monkeys Secret Garden",
+          "company": "xwallcolors",
+          "marketplace": "Etsy",
+          "style": "Animal-Skin Print",
+          "color": "Black",
+          "url": "https://www.etsy.com/shop/xwallcolors",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-002",
+          "fingerprint": "ef4dc765b1ea6850",
+          "title": "Sunrise Landscape Boho Mural",
+          "company": "Wallphy",
+          "marketplace": "Etsy",
+          "style": "Scenic Mural",
+          "color": "Terracotta",
+          "url": "https://www.etsy.com/featured/etsy-wallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-003",
+          "fingerprint": "1fcb172898433b84",
+          "title": "Fern Botanical Naturalist (removable)",
+          "company": "MUSE Wall Studio",
+          "marketplace": "Etsy",
+          "style": "Botanical",
+          "color": "Forest Green",
+          "url": "https://www.etsy.com/featured/etsy-wallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-004",
+          "fingerprint": "4129690cd1352750",
+          "title": "Material Minerals on Brushed Blush",
+          "company": "MUSE Wall Studio",
+          "marketplace": "Etsy",
+          "style": "Texture-Effect",
+          "color": "Blush",
+          "url": "https://www.etsy.com/uk/shop/musewallstudio",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-005",
+          "fingerprint": "3ec28b7873415bc7",
+          "title": "Gray Botanical Ink Leaf",
+          "company": "MUSE Wall Studio",
+          "marketplace": "Etsy",
+          "style": "Botanical",
+          "color": "Greige",
+          "url": "https://www.etsy.com/uk/shop/musewallstudio",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-006",
+          "fingerprint": "fff7613d27edc11a",
+          "title": "Citrus Exotic Fruit Watercolor",
+          "company": "MUSE Wall Studio",
+          "marketplace": "Etsy",
+          "style": "Botanical",
+          "color": "Mustard",
+          "url": "https://www.etsy.com/uk/shop/musewallstudio",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-007",
+          "fingerprint": "ae1e26775eeccb7d",
+          "title": "Snake Botanical Wall Mural",
+          "company": "MUSE Wall Studio",
+          "marketplace": "Etsy",
+          "style": "Botanical",
+          "color": "Pop Pink",
+          "url": "https://www.etsy.com/uk/shop/musewallstudio",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-008",
+          "fingerprint": "c936eb590c093388",
+          "title": "Mineral Science Removable",
+          "company": "MUSE Wall Studio",
+          "marketplace": "Etsy",
+          "style": "Texture-Effect",
+          "color": "Blush",
+          "url": "https://www.etsy.com/uk/shop/musewallstudio",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-009",
+          "fingerprint": "c63e68b01715efd4",
+          "title": "Light Blue Damask",
+          "company": "MUSE Wall Studio",
+          "marketplace": "Etsy",
+          "style": "Damask",
+          "color": "Powder Blue",
+          "url": "https://www.etsy.com/uk/shop/musewallstudio",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-010",
+          "fingerprint": "4a6a4f34c57301bd",
+          "title": "Blue Chevron Watercolor",
+          "company": "MUSE Wall Studio",
+          "marketplace": "Etsy",
+          "style": "Geometric",
+          "color": "Powder Blue",
+          "url": "https://www.etsy.com/uk/shop/musewallstudio",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-011",
+          "fingerprint": "272cfc8f00dd9d4b",
+          "title": "Dalmatian Dot Custom",
+          "company": "MUSE Wall Studio",
+          "marketplace": "Etsy",
+          "style": "Retro Geometric",
+          "color": "Cloud White",
+          "url": "https://www.etsy.com/uk/shop/musewallstudio",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-017",
+          "fingerprint": "68a8100657a9ddd5",
+          "title": "Minimalist Limewash Venetian Plaster",
+          "company": "Livettes",
+          "marketplace": "Etsy",
+          "style": "Texture-Effect",
+          "color": "Greige",
+          "url": "https://www.etsy.com/shop/LivettesWallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        }
+      ]
+    },
+    {
+      "batch": "etsy-2",
+      "urlClass": "etsy",
+      "items": [
+        {
+          "id": "TR-018",
+          "fingerprint": "78c1121be7f943b7",
+          "title": "Gold Chain Metallic",
+          "company": "Livettes",
+          "marketplace": "Etsy",
+          "style": "Art-Deco Geometric",
+          "color": "Gold",
+          "url": "https://www.etsy.com/shop/LivettesWallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-019",
+          "fingerprint": "06354f219cec20b7",
+          "title": "Gold Snake Metallic",
+          "company": "Livettes",
+          "marketplace": "Etsy",
+          "style": "Animal-Skin Print",
+          "color": "Gold",
+          "url": "https://www.etsy.com/shop/LivettesWallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-020",
+          "fingerprint": "330f7e521a9ed495",
+          "title": "Fall Terrazzo",
+          "company": "Livettes",
+          "marketplace": "Etsy",
+          "style": "Abstract Blur",
+          "color": "Rust",
+          "url": "https://www.etsy.com/shop/LivettesWallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-021",
+          "fingerprint": "76512e93c1d2c6cf",
+          "title": "Vintage Botanical Toile (Green)",
+          "company": "Livettes",
+          "marketplace": "Etsy",
+          "style": "Heritage Floral",
+          "color": "Forest Green",
+          "url": "https://www.etsy.com/shop/LivettesWallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-022",
+          "fingerprint": "af8b3c20ff008e91",
+          "title": "Dark Moody Purple Floral",
+          "company": "Livettes",
+          "marketplace": "Etsy",
+          "style": "Dark Floral",
+          "color": "Plum",
+          "url": "https://www.etsy.com/shop/LivettesWallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-023",
+          "fingerprint": "b0f5b9183747fc3e",
+          "title": "Agate Blue Faux Stone",
+          "company": "Livettes",
+          "marketplace": "Etsy",
+          "style": "Texture-Effect",
+          "color": "Powder Blue",
+          "url": "https://www.etsy.com/shop/LivettesWallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-024",
+          "fingerprint": "b3818e9a9baa078f",
+          "title": "Retro Circle Mid-Century (Green/Pink)",
+          "company": "Livettes",
+          "marketplace": "Etsy",
+          "style": "Retro Geometric",
+          "color": "Pop Pink",
+          "url": "https://www.etsy.com/shop/LivettesWallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-025",
+          "fingerprint": "0ab7a0b22c9877fb",
+          "title": "Seamless Crane Chinoiserie (removable)",
+          "company": "WallHalla",
+          "marketplace": "Etsy",
+          "style": "Chinoiserie Mural",
+          "color": "Blush",
+          "url": "https://www.etsy.com/shop/WallHalla",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-026",
+          "fingerprint": "ce3f2fc1cde14615",
+          "title": "Masai Red Zebra (removable)",
+          "company": "WallHalla",
+          "marketplace": "Etsy",
+          "style": "Animal-Skin Print",
+          "color": "Claret",
+          "url": "https://www.etsy.com/shop/WallHalla",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-027",
+          "fingerprint": "427638acec417e9f",
+          "title": "Leopard Jungle Peel & Stick",
+          "company": "WallHalla",
+          "marketplace": "Etsy",
+          "style": "Animal-Skin Print",
+          "color": "Mustard",
+          "url": "https://www.etsy.com/shop/WallHalla",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-028",
+          "fingerprint": "84b85ac096533c4c",
+          "title": "Watercolor Tropical Palm",
+          "company": "WallHalla",
+          "marketplace": "Etsy",
+          "style": "Tropical",
+          "color": "Sage",
+          "url": "https://www.etsy.com/shop/WallHalla",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-029",
+          "fingerprint": "500e54ee3982ccdd",
+          "title": "Abstract Pomegranate (Red & White)",
+          "company": "RoomBloomArt",
+          "marketplace": "Etsy",
+          "style": "Botanical",
+          "color": "Claret",
+          "url": "https://www.etsy.com/featured/etsy-wallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        }
+      ]
+    },
+    {
+      "batch": "etsy-3",
+      "urlClass": "etsy",
+      "items": [
+        {
+          "id": "TR-030",
+          "fingerprint": "a4096c64eca913c0",
+          "title": "Cozy Cottage Floral Scatter (ink & watercolor)",
+          "company": "MerseaHome",
+          "marketplace": "Etsy",
+          "style": "Ditsy Micro-Print",
+          "color": "Sage",
+          "url": "https://www.etsy.com/featured/etsy-wallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-031",
+          "fingerprint": "bc392f61f00f6914",
+          "title": "Fishing Lures (Navy)",
+          "company": "CrabDancer",
+          "marketplace": "Etsy",
+          "style": "Novelty Conversational",
+          "color": "Navy",
+          "url": "https://www.etsy.com/featured/etsy-wallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-032",
+          "fingerprint": "b66cffb3f1b6a5d4",
+          "title": "Dark Galaxy Space Mural",
+          "company": "AccentuWall",
+          "marketplace": "Etsy",
+          "style": "Scenic Mural",
+          "color": "Indigo",
+          "url": "https://www.etsy.com/featured/etsy-wallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-033",
+          "fingerprint": "da4270996bf5bdc1",
+          "title": "Wiggle Harlequin Flower Neckerchief",
+          "company": "KateZarembaCompany",
+          "marketplace": "Etsy",
+          "style": "Retro Psychedelic",
+          "color": "Pop Pink",
+          "url": "https://www.etsy.com/featured/etsy-wallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-034",
+          "fingerprint": "3760902b58c72b1a",
+          "title": "Mexican Embroidery Birds",
+          "company": "TimelessDecorations",
+          "marketplace": "Etsy",
+          "style": "Boho",
+          "color": "Blush",
+          "url": "https://www.etsy.com/uk/shop/TimelessDecorations",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-035",
+          "fingerprint": "43fd6e2f30c8b8a0",
+          "title": "Porcelain Indigo Persian Ikat",
+          "company": "TimelessDecorations",
+          "marketplace": "Etsy",
+          "style": "Paisley / Nomadic",
+          "color": "Indigo",
+          "url": "https://www.etsy.com/uk/shop/TimelessDecorations",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-036",
+          "fingerprint": "7c6082afcc7b1b7d",
+          "title": "Boho Ethnic (Blue & Orange)",
+          "company": "TimelessDecorations",
+          "marketplace": "Etsy",
+          "style": "Boho",
+          "color": "Rust",
+          "url": "https://www.etsy.com/uk/shop/TimelessDecorations",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-037",
+          "fingerprint": "f4c262c6b16f8349",
+          "title": "Mandala Oriental Geometric",
+          "company": "TimelessDecorations",
+          "marketplace": "Etsy",
+          "style": "Paisley / Nomadic",
+          "color": "Teal",
+          "url": "https://www.etsy.com/uk/shop/TimelessDecorations",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-038",
+          "fingerprint": "bf6ce705e04743b1",
+          "title": "Art Deco Texture (Green & White)",
+          "company": "TimelessDecorations",
+          "marketplace": "Etsy",
+          "style": "Art-Deco Geometric",
+          "color": "Forest Green",
+          "url": "https://www.etsy.com/uk/shop/TimelessDecorations",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-039",
+          "fingerprint": "e16bb114addade18",
+          "title": "Tribal African Style (Black & Red)",
+          "company": "TimelessDecorations",
+          "marketplace": "Etsy",
+          "style": "Retro Geometric",
+          "color": "Claret",
+          "url": "https://www.etsy.com/uk/shop/TimelessDecorations",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-040",
+          "fingerprint": "81b92e4bf55f943b",
+          "title": "Gold Ferns & Leaves (dark)",
+          "company": "TimelessDecorations",
+          "marketplace": "Etsy",
+          "style": "Botanical",
+          "color": "Gold",
+          "url": "https://www.etsy.com/uk/shop/TimelessDecorations",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-041",
+          "fingerprint": "b069bcb56698b5db",
+          "title": "Provence Violet Lavender",
+          "company": "TimelessDecorations",
+          "marketplace": "Etsy",
+          "style": "Ditsy Micro-Print",
+          "color": "Plum",
+          "url": "https://www.etsy.com/uk/shop/TimelessDecorations",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        }
+      ]
+    },
+    {
+      "batch": "etsy-4",
+      "urlClass": "etsy",
+      "items": [
+        {
+          "id": "TR-042",
+          "fingerprint": "d71bd6c6ce4c3bff",
+          "title": "Chaotic Dots Monochrome",
+          "company": "TimelessDecorations",
+          "marketplace": "Etsy",
+          "style": "Retro Geometric",
+          "color": "Black",
+          "url": "https://www.etsy.com/uk/shop/TimelessDecorations",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-043",
+          "fingerprint": "dc28bcbe99919878",
+          "title": "Flying Bird Minimalist",
+          "company": "TimelessDecorations",
+          "marketplace": "Etsy",
+          "style": "Ditsy Micro-Print",
+          "color": "Greige",
+          "url": "https://www.etsy.com/uk/shop/TimelessDecorations",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-044",
+          "fingerprint": "7eec936f768dc8e7",
+          "title": "Bee Playground (kids)",
+          "company": "TimelessDecorations",
+          "marketplace": "Etsy",
+          "style": "Novelty Conversational",
+          "color": "Mustard",
+          "url": "https://www.etsy.com/uk/shop/TimelessDecorations",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-045",
+          "fingerprint": "e8234bb26bc85170",
+          "title": "Tropical Flowers (Blue & Green)",
+          "company": "TimelessDecorations",
+          "marketplace": "Etsy",
+          "style": "Tropical",
+          "color": "Teal",
+          "url": "https://www.etsy.com/uk/shop/TimelessDecorations",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-046",
+          "fingerprint": "e01b292ddd4d5ab7",
+          "title": "Fish Pink Under-the-Sea",
+          "company": "SianZeng",
+          "marketplace": "Etsy",
+          "style": "Novelty Conversational",
+          "color": "Blush",
+          "url": "https://www.etsy.com/featured/etsy-wallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-047",
+          "fingerprint": "01fed1ec969baa25",
+          "title": "Garden Party Floral",
+          "company": "Rifle Paper Co (Etsy)",
+          "marketplace": "Etsy",
+          "style": "Heritage Floral",
+          "color": "Blush",
+          "url": "https://www.etsy.com/featured/etsy-wallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-048",
+          "fingerprint": "c7ed7c11bae10431",
+          "title": "Grateful Thread Woven",
+          "company": "Chasing Paper",
+          "marketplace": "Etsy",
+          "style": "Texture-Effect",
+          "color": "Cream",
+          "url": "https://www.etsy.com/featured/etsy-wallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        },
+        {
+          "id": "TR-049",
+          "fingerprint": "929a320faa1ee792",
+          "title": "Vintage Botanical Mural",
+          "company": "Anewall",
+          "marketplace": "Etsy",
+          "style": "Scenic Mural",
+          "color": "Sage",
+          "url": "https://www.etsy.com/featured/etsy-wallpaper",
+          "host": "etsy.com",
+          "urlClass": "etsy"
+        }
+      ]
+    },
+    {
+      "batch": "vendor-1",
+      "urlClass": "vendor",
+      "items": [
+        {
+          "id": "TR-012",
+          "fingerprint": "469112ed0f40143e",
+          "title": "Paintbrush Maze (removable)",
+          "company": "Livettes",
+          "marketplace": "Etsy",
+          "style": "Retro Geometric",
+          "color": "Ombre Blue",
+          "url": "https://livetteswallpaper.com/blogs/interior-blog/meet-our-bestselling-wallpapers",
+          "host": "livetteswallpaper.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-013",
+          "fingerprint": "eada6424bc14e48e",
+          "title": "London Metro Lines",
+          "company": "Livettes",
+          "marketplace": "Etsy",
+          "style": "Retro Geometric",
+          "color": "Black",
+          "url": "https://livetteswallpaper.com/blogs/interior-blog/meet-our-bestselling-wallpapers",
+          "host": "livetteswallpaper.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-014",
+          "fingerprint": "07283c9736eae19a",
+          "title": "Delicate Oversized Floral",
+          "company": "Livettes",
+          "marketplace": "Etsy",
+          "style": "Heritage Floral",
+          "color": "Cloud White",
+          "url": "https://livetteswallpaper.com/blogs/interior-blog/meet-our-bestselling-wallpapers",
+          "host": "livetteswallpaper.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-015",
+          "fingerprint": "951e80bc6fd362ff",
+          "title": "Wildflower Foliage (nursery)",
+          "company": "Livettes",
+          "marketplace": "Etsy",
+          "style": "Ditsy Micro-Print",
+          "color": "Sage",
+          "url": "https://livetteswallpaper.com/blogs/interior-blog/meet-our-bestselling-wallpapers",
+          "host": "livetteswallpaper.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-016",
+          "fingerprint": "c87e268467fa93f8",
+          "title": "Blue Classic Plaid",
+          "company": "Livettes",
+          "marketplace": "Etsy",
+          "style": "Gingham / Check",
+          "color": "Powder Blue",
+          "url": "https://livetteswallpaper.com/blogs/interior-blog/meet-our-bestselling-wallpapers",
+          "host": "livetteswallpaper.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-150",
+          "fingerprint": "3ddd320d8423d628",
+          "title": "Pimpernel",
+          "company": "Morris & Co. (Wallpaperdirect)",
+          "marketplace": "Google / Retail",
+          "style": "Heritage Floral",
+          "color": "Sage",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-151",
+          "fingerprint": "b21164bc3813fbdb",
+          "title": "Strawberry Thief",
+          "company": "William Morris & Co.",
+          "marketplace": "Google / Retail",
+          "style": "Heritage Floral",
+          "color": "Indigo",
+          "url": "https://williammorriswallpaper.co/blogs/guides/wallpaper-trends-2026",
+          "host": "williammorriswallpaper.co",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-152",
+          "fingerprint": "027ad3a070448e21",
+          "title": "Willow Bough",
+          "company": "William Morris at Home",
+          "marketplace": "Google / Retail",
+          "style": "Heritage Floral",
+          "color": "Sage",
+          "url": "https://www.wallpaperdirect.com/us/products/william-morris-at-home/willow-bough/221675",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-153",
+          "fingerprint": "e6e1c1c409ab469f",
+          "title": "Acanthus",
+          "company": "Morris & Co.",
+          "marketplace": "Google / Retail",
+          "style": "Heritage Floral",
+          "color": "Olive",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-154",
+          "fingerprint": "b7a9cd1467d0e97c",
+          "title": "Golden Lily",
+          "company": "Morris & Co.",
+          "marketplace": "Google / Retail",
+          "style": "Heritage Floral",
+          "color": "Forest Green",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-155",
+          "fingerprint": "2a2e3b87075efe46",
+          "title": "Thistle",
+          "company": "Morris & Co.",
+          "marketplace": "Google / Retail",
+          "style": "Heritage Floral",
+          "color": "Claret",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-156",
+          "fingerprint": "0c07236ddf96122f",
+          "title": "Bird & Pomegranate",
+          "company": "Morris & Co.",
+          "marketplace": "Google / Retail",
+          "style": "Botanical",
+          "color": "Teal",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        }
+      ]
+    },
+    {
+      "batch": "vendor-2",
+      "urlClass": "vendor",
+      "items": [
+        {
+          "id": "TR-157",
+          "fingerprint": "af3b4dbde07b8505",
+          "title": "Brer Rabbit",
+          "company": "Morris & Co.",
+          "marketplace": "Google / Retail",
+          "style": "Novelty Conversational",
+          "color": "Peacock Gold",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-158",
+          "fingerprint": "2b2225ba89b375e8",
+          "title": "Morris Seaweed",
+          "company": "Morris & Co.",
+          "marketplace": "Google / Retail",
+          "style": "Botanical",
+          "color": "Olive",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-159",
+          "fingerprint": "f2fd8b44cd969a7e",
+          "title": "Snakeshead",
+          "company": "Morris & Co.",
+          "marketplace": "Google / Retail",
+          "style": "Heritage Floral",
+          "color": "Slate",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-160",
+          "fingerprint": "bc263a7bcd9ab2d7",
+          "title": "Garden (Arts & Crafts damask)",
+          "company": "William Morris at Home",
+          "marketplace": "Google / Retail",
+          "style": "Damask",
+          "color": "Ombre Blue",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-161",
+          "fingerprint": "a8af0db4f6ef427c",
+          "title": "Blackthorn",
+          "company": "William Morris at Home",
+          "marketplace": "Google / Retail",
+          "style": "Botanical",
+          "color": "Charcoal",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-162",
+          "fingerprint": "2cc9bced11bee107",
+          "title": "Honeysuckle",
+          "company": "William Morris at Home",
+          "marketplace": "Google / Retail",
+          "style": "Heritage Floral",
+          "color": "Sage",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-163",
+          "fingerprint": "94d6e549884685a3",
+          "title": "Raphael (Central Park trees)",
+          "company": "Sandberg",
+          "marketplace": "Google / Retail",
+          "style": "Scenic Mural",
+          "color": "Powder Blue",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-164",
+          "fingerprint": "b7e60c0a34ed1144",
+          "title": "Florencecourt",
+          "company": "Cole & Son",
+          "marketplace": "Google / Retail",
+          "style": "Botanical",
+          "color": "Forest Green",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-165",
+          "fingerprint": "99480187e77c2b0d",
+          "title": "Highgrove (peonies & roses)",
+          "company": "Timothy Wilman",
+          "marketplace": "Google / Retail",
+          "style": "Heritage Floral",
+          "color": "Blush",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-166",
+          "fingerprint": "c1608aaa84294d72",
+          "title": "Magnolia Grove",
+          "company": "Laura Ashley",
+          "marketplace": "Google / Retail",
+          "style": "Heritage Floral",
+          "color": "Cream",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-167",
+          "fingerprint": "baaec803e93a4212",
+          "title": "Japanese Garden (birds)",
+          "company": "Arthouse",
+          "marketplace": "Google / Retail",
+          "style": "Chinoiserie Mural",
+          "color": "Teal",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-168",
+          "fingerprint": "434de6d3ae0117a3",
+          "title": "Amelie Texture",
+          "company": "Albany",
+          "marketplace": "Google / Retail",
+          "style": "Texture-Effect",
+          "color": "Greige",
+          "url": "https://www.wallpaperdirect.com/",
+          "host": "wallpaperdirect.com",
+          "urlClass": "vendor"
+        }
+      ]
+    },
+    {
+      "batch": "vendor-3",
+      "urlClass": "vendor",
+      "items": [
+        {
+          "id": "TR-169",
+          "fingerprint": "5638ea6cdccef45a",
+          "title": "Copper Garden",
+          "company": "Wall Blush",
+          "marketplace": "Google / Retail",
+          "style": "Dark Floral",
+          "color": "Oxblood",
+          "url": "https://wallblush.com/collections/best-selling-products",
+          "host": "wallblush.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-170",
+          "fingerprint": "75d516ccacf751ef",
+          "title": "Jagger",
+          "company": "Wall Blush",
+          "marketplace": "Google / Retail",
+          "style": "Retro Geometric",
+          "color": "Charcoal",
+          "url": "https://wallblush.com/collections/best-selling-products",
+          "host": "wallblush.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-171",
+          "fingerprint": "3e0fe463c7d438bc",
+          "title": "Bloom Wild Moody Floral",
+          "company": "The Ania Zwara Line (Wall Blush)",
+          "marketplace": "Google / Retail",
+          "style": "Dark Floral",
+          "color": "Ombre Blue",
+          "url": "https://wallblush.com/products/bloom-wild-wallpaper",
+          "host": "wallblush.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-172",
+          "fingerprint": "8ac260c9c4fdf615",
+          "title": "The Nora Mural",
+          "company": "Wall Blush",
+          "marketplace": "Google / Retail",
+          "style": "Scenic Mural",
+          "color": "Sage",
+          "url": "https://wallblush.com/collections/best-selling-products",
+          "host": "wallblush.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-173",
+          "fingerprint": "1b520f98fd656dc6",
+          "title": "Reality Star (Clay)",
+          "company": "Wall Blush",
+          "marketplace": "Google / Retail",
+          "style": "Texture-Effect",
+          "color": "Terracotta",
+          "url": "https://wallblush.com/collections/best-selling-products",
+          "host": "wallblush.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-174",
+          "fingerprint": "63817889b833cb7e",
+          "title": "Leaf Me Be",
+          "company": "Wall Blush",
+          "marketplace": "Google / Retail",
+          "style": "Botanical",
+          "color": "Sage",
+          "url": "https://wallblush.com/collections/best-selling-products",
+          "host": "wallblush.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-175",
+          "fingerprint": "04152a5bef91827a",
+          "title": "Manhattan Concrete",
+          "company": "Wall Blush",
+          "marketplace": "Google / Retail",
+          "style": "Texture-Effect",
+          "color": "Charcoal",
+          "url": "https://wallblush.com/collections/best-selling-products",
+          "host": "wallblush.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-176",
+          "fingerprint": "cdb37426bf51b786",
+          "title": "Huck & Finn",
+          "company": "Wall Blush",
+          "marketplace": "Google / Retail",
+          "style": "Botanical",
+          "color": "Forest Green",
+          "url": "https://wallblush.com/collections/best-selling-products",
+          "host": "wallblush.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-177",
+          "fingerprint": "d066d461ff6c2eb3",
+          "title": "Selina Boho",
+          "company": "Wall Blush",
+          "marketplace": "Google / Retail",
+          "style": "Boho",
+          "color": "Terracotta",
+          "url": "https://wallblush.com/collections/best-selling-products",
+          "host": "wallblush.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-185",
+          "fingerprint": "01ca889d6eb7af65",
+          "title": "Chinoiserie Garden Mural — Vintage Botanical",
+          "company": "Vivawalls",
+          "marketplace": "Google / Retail",
+          "style": "Chinoiserie Mural",
+          "color": "Plum",
+          "url": "https://vivawalls.com/products/chinoiserie-garden-mural-wallpaper-vintage-botanical-scene",
+          "host": "vivawalls.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-186",
+          "fingerprint": "de79c816aba58aed",
+          "title": "Oriental Garden Crane Mural",
+          "company": "Milton & King",
+          "marketplace": "Google / Retail",
+          "style": "Chinoiserie Mural",
+          "color": "Teal",
+          "url": "https://www.miltonandking.co.uk/product/oriental-garden-mural/",
+          "host": "miltonandking.co.uk",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-187",
+          "fingerprint": "b7e9bcab518245af",
+          "title": "Nijo Saffron Chinoiserie Mural",
+          "company": "Feathr",
+          "marketplace": "Google / Retail",
+          "style": "Chinoiserie Mural",
+          "color": "Mustard",
+          "url": "https://www.feathr.com/global/wall-murals/yellow-floral-chinoiserie-wall-mural-fe48605/",
+          "host": "feathr.com",
+          "urlClass": "vendor"
+        }
+      ]
+    },
+    {
+      "batch": "vendor-4",
+      "urlClass": "vendor",
+      "items": [
+        {
+          "id": "TR-188",
+          "fingerprint": "6543cf4ad46ab0d9",
+          "title": "Botanical Panorama Scenic Mural",
+          "company": "Giffywalls",
+          "marketplace": "Google / Retail",
+          "style": "Scenic Mural",
+          "color": "Teal",
+          "url": "https://www.giffywalls.com/blogs/inspiration-hub/mural-wallpaper-the-biggest-wall-trend-of-2026",
+          "host": "giffywalls.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-189",
+          "fingerprint": "6ee39dbc570d45d2",
+          "title": "Art-Deco Fan & Sunburst Geometric",
+          "company": "MeltFlex trend",
+          "marketplace": "Google / Retail",
+          "style": "Art-Deco Geometric",
+          "color": "Gold",
+          "url": "https://www.meltflexai.com/blog/wallpaper-trends-2026",
+          "host": "meltflexai.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-194",
+          "fingerprint": "33269d2cc3bf54f1",
+          "title": "Oversized Abstract Botanical",
+          "company": "World of Wallpaper",
+          "marketplace": "Google / Retail",
+          "style": "Botanical",
+          "color": "Olive",
+          "url": "https://www.worldofwallpaper.com/us/blog/Wallpaper-Trends-2026-Colours-Textures-Patterns",
+          "host": "worldofwallpaper.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-211",
+          "fingerprint": "2c6dde81a92f60d1",
+          "title": "Weathered Plank Multicolor",
+          "company": "York",
+          "marketplace": "Amazon / Big-box",
+          "style": "Texture-Effect",
+          "color": "Powder Blue",
+          "url": "https://www.decoratorsbest.com/products/york-weathered-plank-multicolor-peel-stick-wallpaper",
+          "host": "decoratorsbest.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-212",
+          "fingerprint": "461d70e2c2863431",
+          "title": "Hadrian Stone Wall",
+          "company": "York",
+          "marketplace": "Amazon / Big-box",
+          "style": "Texture-Effect",
+          "color": "Greige",
+          "url": "https://www.decoratorsbest.com/products/york-hadrian-stone-wall-peel-stick-wallpaper",
+          "host": "decoratorsbest.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-214",
+          "fingerprint": "dfb138fece148019",
+          "title": "Sisal Monochromatic Grasscloth",
+          "company": "Tempaper & Co.",
+          "marketplace": "Amazon / Big-box",
+          "style": "Texture-Effect",
+          "color": "Greige",
+          "url": "https://tempaper.com/",
+          "host": "tempaper.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-215",
+          "fingerprint": "f5a2cdcb39d1d378",
+          "title": "Canopy Toile Faux Grasscloth",
+          "company": "Tempaper & Co.",
+          "marketplace": "Amazon / Big-box",
+          "style": "Texture-Effect",
+          "color": "Sage",
+          "url": "https://tempaper.com/",
+          "host": "tempaper.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-216",
+          "fingerprint": "6373abf85d16c441",
+          "title": "Bursa Stripe Textured",
+          "company": "Tempaper x Pure Salt",
+          "marketplace": "Amazon / Big-box",
+          "style": "Stripe",
+          "color": "Cream",
+          "url": "https://tempaper.com/",
+          "host": "tempaper.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-217",
+          "fingerprint": "e95446e2889253e7",
+          "title": "Strata Mosaic",
+          "company": "Tempaper x Jeremiah Brent",
+          "marketplace": "Amazon / Big-box",
+          "style": "Retro Geometric",
+          "color": "Mushroom",
+          "url": "https://tempaper.com/",
+          "host": "tempaper.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-218",
+          "fingerprint": "5713a30ad823813e",
+          "title": "Hoffmann Faux Sisal",
+          "company": "Tempaper x Jeremiah Brent",
+          "marketplace": "Amazon / Big-box",
+          "style": "Texture-Effect",
+          "color": "Greige",
+          "url": "https://tempaper.com/",
+          "host": "tempaper.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-230",
+          "fingerprint": "7eda28b38208d9f2",
+          "title": "Palm Frond",
+          "company": "Tempaper x Novogratz",
+          "marketplace": "Amazon / Big-box",
+          "style": "Tropical",
+          "color": "Sage",
+          "url": "https://tempaper.com/",
+          "host": "tempaper.com",
+          "urlClass": "vendor"
+        },
+        {
+          "id": "TR-231",
+          "fingerprint": "b8de07f4fac9e68c",
+          "title": "Abstract Wave",
+          "company": "Tempaper x Bobby Berk",
+          "marketplace": "Amazon / Big-box",
+          "style": "Abstract Blur",
+          "color": "Teal",
+          "url": "https://tempaper.com/",
+          "host": "tempaper.com",
+          "urlClass": "vendor"
+        }
+      ]
+    },
+    {
+      "batch": "spoonflower-1",
+      "urlClass": "spoonflower",
+      "items": [
+        {
+          "id": "TR-050",
+          "fingerprint": "993aaac8c8def0da",
+          "title": "Frog Nouveau Art-Nouveau",
+          "company": "Jillian Nichole",
+          "marketplace": "Etsy",
+          "style": "Botanical",
+          "color": "Forest Green",
+          "url": "https://www.spoonflower.com/en/shop/top-sellers",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-054",
+          "fingerprint": "9c0048d9fb9a2d64",
+          "title": "Blush Drift Marble (Soft Futurism)",
+          "company": "yenandpens",
+          "marketplace": "Spoonflower",
+          "style": "Abstract Blur",
+          "color": "Blush",
+          "url": "https://www.spoonflower.com/en/shop/2026-natural-trend",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-055",
+          "fingerprint": "5bd8cbb7bd914b4a",
+          "title": "Goblin’s Grotto (goblincore)",
+          "company": "Jillian Nichole",
+          "marketplace": "Spoonflower",
+          "style": "Mushroom / Goblincore",
+          "color": "Forest Green",
+          "url": "https://www.spoonflower.com/en/shop/top-sellers",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-056",
+          "fingerprint": "b15b3df277a2db2d",
+          "title": "Witch’s Cottage (cozy autumn)",
+          "company": "Jillian Nichole",
+          "marketplace": "Spoonflower",
+          "style": "Botanical",
+          "color": "Rust",
+          "url": "https://www.spoonflower.com/en/shop/top-sellers",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-057",
+          "fingerprint": "987bb21ae141975e",
+          "title": "Sword Garden (pastel recolor)",
+          "company": "Jillian Nichole",
+          "marketplace": "Spoonflower",
+          "style": "Botanical",
+          "color": "Sage",
+          "url": "https://www.spoonflower.com/en/shop/top-sellers",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-058",
+          "fingerprint": "2c162fd83c197fd6",
+          "title": "Feminine Floral Story",
+          "company": "Indy Bloom Designs",
+          "marketplace": "Spoonflower",
+          "style": "Heritage Floral",
+          "color": "Blush",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-059",
+          "fingerprint": "ee4516f3d35fb092",
+          "title": "Stars and Stripes Brown & Cream",
+          "company": "Danika Herrick",
+          "marketplace": "Spoonflower",
+          "style": "Stripe",
+          "color": "Mushroom",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-060",
+          "fingerprint": "4fb2803ada3caaca",
+          "title": "Heritage Charm Plaid & Floral",
+          "company": "Marie Cloud",
+          "marketplace": "Spoonflower",
+          "style": "Gingham / Check",
+          "color": "Sage",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-061",
+          "fingerprint": "fd09ecc4b768fe2a",
+          "title": "Vivid Rhythm Bold Motion",
+          "company": "Marie Cloud",
+          "marketplace": "Spoonflower",
+          "style": "Abstract Blur",
+          "color": "Teal",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-062",
+          "fingerprint": "73feec6a08cf240b",
+          "title": "Hot House Tropical Layered Foliage",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Tropical",
+          "color": "Forest Green",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-063",
+          "fingerprint": "24396bcd51599189",
+          "title": "Artisanal Boho Block & Global Motif",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Boho",
+          "color": "Terracotta",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-064",
+          "fingerprint": "c7fa761cf6f814db",
+          "title": "Romantic Vintage Rococo",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Damask",
+          "color": "Blush",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        }
+      ]
+    },
+    {
+      "batch": "spoonflower-2",
+      "urlClass": "spoonflower",
+      "items": [
+        {
+          "id": "TR-065",
+          "fingerprint": "f4343b2478615104",
+          "title": "Craft Revival Victorian Botanical",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Heritage Floral",
+          "color": "Oxblood",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-066",
+          "fingerprint": "eca58fe40addd80c",
+          "title": "Cottagecore Pastoral Florals",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Ditsy Micro-Print",
+          "color": "Cream",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-067",
+          "fingerprint": "02be936a6c5eb4c9",
+          "title": "Art Deco Roaring-20s",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Art-Deco Geometric",
+          "color": "Gold",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-068",
+          "fingerprint": "e8351fec81a4a574",
+          "title": "Japandi Farmhouse",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Texture-Effect",
+          "color": "Greige",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-069",
+          "fingerprint": "a2bcda7cde8250f2",
+          "title": "Color Confident Conversational",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Novelty Conversational",
+          "color": "Pop Pink",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-070",
+          "fingerprint": "9d0d0eb5ad5bb6a4",
+          "title": "Cabincore Woodland",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Botanical",
+          "color": "Olive",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-071",
+          "fingerprint": "843bf9d1292e3f2c",
+          "title": "Warm Minimalism Soft Hues",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Texture-Effect",
+          "color": "Cream",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-072",
+          "fingerprint": "627b5e32ec097587",
+          "title": "Mid-Century Bold Shapes",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Retro Geometric",
+          "color": "Mustard",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-073",
+          "fingerprint": "d1b48ba902aec415",
+          "title": "William Morris Inspired",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Heritage Floral",
+          "color": "Forest Green",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-074",
+          "fingerprint": "a7956ba04f530fd9",
+          "title": "Chinoiserie Trending Style",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Chinoiserie Mural",
+          "color": "Teal",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-075",
+          "fingerprint": "158f888907834f9e",
+          "title": "Textured & Tonal",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Texture-Effect",
+          "color": "Greige",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-076",
+          "fingerprint": "8cb6f548778a1f92",
+          "title": "Garden Tapestry",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Heritage Floral",
+          "color": "Claret",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        }
+      ]
+    },
+    {
+      "batch": "spoonflower-3",
+      "urlClass": "spoonflower",
+      "items": [
+        {
+          "id": "TR-077",
+          "fingerprint": "6982131ba3588103",
+          "title": "Chintz Revival",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Heritage Floral",
+          "color": "Blush",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-078",
+          "fingerprint": "d36460edcaff7ce7",
+          "title": "Riviera-Inspired Coastal",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Botanical",
+          "color": "Ombre Blue",
+          "url": "https://www.spoonflower.com/en/inspiration/collections",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-079",
+          "fingerprint": "62ef545fc07ab581",
+          "title": "Bazaar Maxima Gator",
+          "company": "holli_zollinger",
+          "marketplace": "Spoonflower",
+          "style": "Boho",
+          "color": "Teal",
+          "url": "https://www.spoonflower.com/en/shop/top-sellers",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-080",
+          "fingerprint": "9ef4585b1cf5c27d",
+          "title": "Marigold Extra-Large",
+          "company": "danika_herrick",
+          "marketplace": "Spoonflower",
+          "style": "Heritage Floral",
+          "color": "Mustard",
+          "url": "https://www.spoonflower.com/en/shop/top-sellers",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-081",
+          "fingerprint": "10fad02e658cbcc2",
+          "title": "William Morris Honeysuckle",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Heritage Floral",
+          "color": "Forest Green",
+          "url": "https://www.spoonflower.com/en/shop/top-sellers",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-082",
+          "fingerprint": "c57865556ef26f09",
+          "title": "Queen Anne’s Lace",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Botanical",
+          "color": "Cloud White",
+          "url": "https://www.spoonflower.com/en/shop/top-sellers",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-083",
+          "fingerprint": "86bb66fb2f551829",
+          "title": "Magical Peony Chintz",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Heritage Floral",
+          "color": "Blush",
+          "url": "https://www.spoonflower.com/en/shop/top-sellers",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-084",
+          "fingerprint": "40ebda2906ee2ba8",
+          "title": "Tropical Blossom Dance",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Tropical",
+          "color": "Sage",
+          "url": "https://www.spoonflower.com/en/shop/top-sellers",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-085",
+          "fingerprint": "cf52bdf4b0fa33bd",
+          "title": "Art Nouveau Honey Bee & Flower",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Botanical",
+          "color": "Mustard",
+          "url": "https://www.spoonflower.com/en/shop/top-sellers",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-086",
+          "fingerprint": "1bed9a6239238c69",
+          "title": "Aegean Stripe Black",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Stripe",
+          "color": "Black",
+          "url": "https://www.spoonflower.com/en/shop/top-sellers",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-087",
+          "fingerprint": "3a27ff59d4436f9e",
+          "title": "Victorian Raspberry",
+          "company": "The Home Edit",
+          "marketplace": "Spoonflower",
+          "style": "Heritage Floral",
+          "color": "Claret",
+          "url": "https://www.spoonflower.com/en/inspiration/collaborations/the-home-edit",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-088",
+          "fingerprint": "3914635e26903f72",
+          "title": "Ivy Tangle (Blue Dusk)",
+          "company": "The Home Edit",
+          "marketplace": "Spoonflower",
+          "style": "Botanical",
+          "color": "Indigo",
+          "url": "https://www.spoonflower.com/en/inspiration/collaborations/the-home-edit",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        }
+      ]
+    },
+    {
+      "batch": "spoonflower-4",
+      "urlClass": "spoonflower",
+      "items": [
+        {
+          "id": "TR-089",
+          "fingerprint": "3534ba9a41e637b6",
+          "title": "Genevieve Olive",
+          "company": "The Home Edit",
+          "marketplace": "Spoonflower",
+          "style": "Ditsy Micro-Print",
+          "color": "Olive",
+          "url": "https://www.spoonflower.com/en/inspiration/collaborations/the-home-edit",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-090",
+          "fingerprint": "41c20256785b99f9",
+          "title": "Kilim Fabric Mushroom",
+          "company": "The Home Edit",
+          "marketplace": "Spoonflower",
+          "style": "Paisley / Nomadic",
+          "color": "Mushroom",
+          "url": "https://www.spoonflower.com/en/inspiration/collaborations/the-home-edit",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-091",
+          "fingerprint": "5a7967bf2be86841",
+          "title": "Rough Stripes Taupe",
+          "company": "The Home Edit",
+          "marketplace": "Spoonflower",
+          "style": "Stripe",
+          "color": "Greige",
+          "url": "https://www.spoonflower.com/en/inspiration/collaborations/the-home-edit",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-092",
+          "fingerprint": "06c2f8602a5212c8",
+          "title": "Block Print Sunflower Blueberry",
+          "company": "The Home Edit",
+          "marketplace": "Spoonflower",
+          "style": "Boho",
+          "color": "Indigo",
+          "url": "https://www.spoonflower.com/en/inspiration/collaborations/the-home-edit",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-093",
+          "fingerprint": "2e0380113d7c4873",
+          "title": "Modern Cinnamon Stripes",
+          "company": "The Home Edit",
+          "marketplace": "Spoonflower",
+          "style": "Stripe",
+          "color": "Rust",
+          "url": "https://www.spoonflower.com/en/inspiration/collaborations/the-home-edit",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-094",
+          "fingerprint": "fe27c5af9266a81e",
+          "title": "New Wildflowers White",
+          "company": "The Home Edit",
+          "marketplace": "Spoonflower",
+          "style": "Ditsy Micro-Print",
+          "color": "Cloud White",
+          "url": "https://www.spoonflower.com/en/inspiration/collaborations/the-home-edit",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-095",
+          "fingerprint": "f538e13eecc01a42",
+          "title": "Cowboy Toile Western",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Novelty Conversational",
+          "color": "Rust",
+          "url": "https://www.spoonflower.com/en/shop/top-sellers",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-096",
+          "fingerprint": "de1c0fd8f7eb45a8",
+          "title": "Pink Parisian Toile",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Heritage Floral",
+          "color": "Blush",
+          "url": "https://www.spoonflower.com/en/shop/top-sellers",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-097",
+          "fingerprint": "81f6efaa9eacdf1f",
+          "title": "Edwina Floral Toss",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Ditsy Micro-Print",
+          "color": "Sage",
+          "url": "https://www.spoonflower.com/en/shop/top-sellers",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-098",
+          "fingerprint": "bb4a0ca36d52e347",
+          "title": "Soft Wildflower Garden Toss",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Ditsy Micro-Print",
+          "color": "Plum",
+          "url": "https://www.spoonflower.com/en/shop/top-sellers",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        },
+        {
+          "id": "TR-099",
+          "fingerprint": "9970fe3f0439dc1b",
+          "title": "Storybook Woodland Toile",
+          "company": "Spoonflower",
+          "marketplace": "Spoonflower",
+          "style": "Novelty Conversational",
+          "color": "Sage",
+          "url": "https://www.spoonflower.com/en/learn/2026-home-and-interior-trends",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower"
+        }
+      ]
+    },
+    {
+      "batch": "spoonflower-product-1",
+      "urlClass": "spoonflower-product",
+      "items": [
+        {
+          "id": "TR-051",
+          "fingerprint": "df2d3ead8272250d",
+          "title": "Pastel Floral Garden — Pantone 2026",
+          "company": "j_couture",
+          "marketplace": "Spoonflower",
+          "style": "Heritage Floral",
+          "color": "Blush",
+          "url": "https://www.spoonflower.com/en/wallpaper/21557185-pastel-floral-garden-pantone-2026-by-j_couture",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower-product"
+        },
+        {
+          "id": "TR-052",
+          "fingerprint": "316cd4c407ba8bd5",
+          "title": "Cloud Dancer Polkadots Tropical — Pantone 2026",
+          "company": "linda-elizabeth",
+          "marketplace": "Spoonflower",
+          "style": "Tropical",
+          "color": "Cloud White",
+          "url": "https://www.spoonflower.com/en/wallpaper/20937145-pantone-color-of-the-year-2026-cloud-dancer-polkadots-large-tropical-by-linda-elizabeth",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower-product"
+        },
+        {
+          "id": "TR-053",
+          "fingerprint": "a310b3e1353e5da4",
+          "title": "Monstera Leaves — Pantone 2026",
+          "company": "tinyisland",
+          "marketplace": "Spoonflower",
+          "style": "Tropical",
+          "color": "Forest Green",
+          "url": "https://www.spoonflower.com/en/wallpaper/21749426-monsteraleaves-pantone2026-bytinyisland-3-by-tinyisland",
+          "host": "spoonflower.com",
+          "urlClass": "spoonflower-product"
+        }
+      ]
+    },
+    {
+      "batch": "patternbank-1",
+      "urlClass": "patternbank",
+      "items": [
+        {
+          "id": "TR-100",
+          "fingerprint": "778396f58b9c14c5",
+          "title": "Abstract Blurs — Ombre Watercolour",
+          "company": "Patternbank AW26-27",
+          "marketplace": "Patternbank",
+          "style": "Abstract Blur",
+          "color": "Ombre Blue",
+          "url": "https://patternbank.com/trends/premiere-vision-AW-26-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-101",
+          "fingerprint": "b0de17862564b239",
+          "title": "Botanical Haze — Floating Florals",
+          "company": "Patternbank AW26-27",
+          "marketplace": "Patternbank",
+          "style": "Botanical",
+          "color": "Sage",
+          "url": "https://patternbank.com/trends/premiere-vision-AW-26-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-102",
+          "fingerprint": "eeefbdb5fcf07cd0",
+          "title": "Nomadic Embellishments — Persian Boteh Paisley",
+          "company": "Patternbank AW26-27",
+          "marketplace": "Patternbank",
+          "style": "Paisley / Nomadic",
+          "color": "Claret",
+          "url": "https://patternbank.com/trends/premiere-vision-AW-26-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-103",
+          "fingerprint": "4a0f21d419b40166",
+          "title": "Painterly Florals — Floral Oil Paintings",
+          "company": "Patternbank AW26-27",
+          "marketplace": "Patternbank",
+          "style": "Heritage Floral",
+          "color": "Oxblood",
+          "url": "https://patternbank.com/trends/premiere-vision-AW-26-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-104",
+          "fingerprint": "bf065dca400c6189",
+          "title": "Interlocking Geometry — Fractal Forms",
+          "company": "Patternbank AW26-27",
+          "marketplace": "Patternbank",
+          "style": "Retro Geometric",
+          "color": "Mustard",
+          "url": "https://patternbank.com/trends/premiere-vision-AW-26-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-105",
+          "fingerprint": "246969b25c3a56fd",
+          "title": "Midnight Flora — Nocturnal Botanicals",
+          "company": "Patternbank AW26-27",
+          "marketplace": "Patternbank",
+          "style": "Dark Floral",
+          "color": "Black",
+          "url": "https://patternbank.com/trends/premiere-vision-AW-26-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-106",
+          "fingerprint": "eb0c2ff2410ba057",
+          "title": "Botanical Haze — Shadow Overlays",
+          "company": "Patternbank AW26-27",
+          "marketplace": "Patternbank",
+          "style": "Abstract Blur",
+          "color": "Greige",
+          "url": "https://patternbank.com/trends/premiere-vision-AW-26-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-107",
+          "fingerprint": "c4d90ed765fefa09",
+          "title": "Nomadic — Kashmiri Paisley",
+          "company": "Patternbank AW26-27",
+          "marketplace": "Patternbank",
+          "style": "Paisley / Nomadic",
+          "color": "Indigo",
+          "url": "https://patternbank.com/trends/premiere-vision-AW-26-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-108",
+          "fingerprint": "3a2a71bc809632f6",
+          "title": "Midnight Flora — Luminous Blooms",
+          "company": "Patternbank AW26-27",
+          "marketplace": "Patternbank",
+          "style": "Dark Floral",
+          "color": "Plum",
+          "url": "https://patternbank.com/trends/premiere-vision-AW-26-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-109",
+          "fingerprint": "9aab8896781c597f",
+          "title": "Interlocking — Loose Linear Outlines",
+          "company": "Patternbank AW26-27",
+          "marketplace": "Patternbank",
+          "style": "Retro Geometric",
+          "color": "Teal",
+          "url": "https://patternbank.com/trends/premiere-vision-AW-26-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-110",
+          "fingerprint": "d58f85305b86f917",
+          "title": "Untamed Garden — Chaotic Ditsy Florals",
+          "company": "Patternbank SS26",
+          "marketplace": "Patternbank",
+          "style": "Ditsy Micro-Print",
+          "color": "Pop Pink",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-26-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-111",
+          "fingerprint": "549a13ede911d908",
+          "title": "Exotic Luxe — Tropical Bird Prints",
+          "company": "Patternbank SS26",
+          "marketplace": "Patternbank",
+          "style": "Tropical",
+          "color": "Teal",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-26-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        }
+      ]
+    },
+    {
+      "batch": "patternbank-2",
+      "urlClass": "patternbank",
+      "items": [
+        {
+          "id": "TR-112",
+          "fingerprint": "d0052ae1696b5676",
+          "title": "Bohemian Summer — Indigo Batik Paisley",
+          "company": "Patternbank SS26",
+          "marketplace": "Patternbank",
+          "style": "Paisley / Nomadic",
+          "color": "Indigo",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-26-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-113",
+          "fingerprint": "6b69f58562d6f762",
+          "title": "Primal Geometry — Totem Graphics",
+          "company": "Patternbank SS26",
+          "marketplace": "Patternbank",
+          "style": "Retro Geometric",
+          "color": "Rust",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-26-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-114",
+          "fingerprint": "76409c16be893cab",
+          "title": "Indigo Escape — Moody Blue Tropicals",
+          "company": "Patternbank SS26",
+          "marketplace": "Patternbank",
+          "style": "Tropical",
+          "color": "Navy",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-26-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-115",
+          "fingerprint": "733af76e5d039099",
+          "title": "Soft Symmetry — Tie-Dye Geometric",
+          "company": "Patternbank SS26",
+          "marketplace": "Patternbank",
+          "style": "Abstract Blur",
+          "color": "Teal",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-26-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-116",
+          "fingerprint": "a86371fffe4a998a",
+          "title": "Exotic Luxe — Saturated Blooms",
+          "company": "Patternbank SS26",
+          "marketplace": "Patternbank",
+          "style": "Tropical",
+          "color": "Claret",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-26-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-117",
+          "fingerprint": "8e5d9f031c89e03f",
+          "title": "Bohemian Summer — Indian Block Prints",
+          "company": "Patternbank SS26",
+          "marketplace": "Patternbank",
+          "style": "Boho",
+          "color": "Terracotta",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-26-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-118",
+          "fingerprint": "9b1e520c4bec6a28",
+          "title": "Untamed Garden — Impressionist Garden",
+          "company": "Patternbank SS26",
+          "marketplace": "Patternbank",
+          "style": "Heritage Floral",
+          "color": "Sage",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-26-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-119",
+          "fingerprint": "532146ae8413b8f9",
+          "title": "Primal Geometry — Tribal Marks",
+          "company": "Patternbank SS26",
+          "marketplace": "Patternbank",
+          "style": "Retro Geometric",
+          "color": "Charcoal",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-26-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-120",
+          "fingerprint": "068e0b639a677ee9",
+          "title": "Dreamy Floral — Ethereal Translucent",
+          "company": "Patternbank SS27",
+          "marketplace": "Patternbank",
+          "style": "Abstract Blur",
+          "color": "Blush",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-121",
+          "fingerprint": "9d13146fca985ed4",
+          "title": "Sweet Motifs — Petite Posies",
+          "company": "Patternbank SS27",
+          "marketplace": "Patternbank",
+          "style": "Ditsy Micro-Print",
+          "color": "Powder Blue",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-122",
+          "fingerprint": "9f68b176082fbd9a",
+          "title": "Retro Geos — Mid-Century Repeats",
+          "company": "Patternbank SS27",
+          "marketplace": "Patternbank",
+          "style": "Retro Geometric",
+          "color": "Mustard",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-123",
+          "fingerprint": "16fc3627eb8ab8e9",
+          "title": "Decorative Paisley Boho Chic",
+          "company": "Patternbank SS27",
+          "marketplace": "Patternbank",
+          "style": "Paisley / Nomadic",
+          "color": "Claret",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        }
+      ]
+    },
+    {
+      "batch": "patternbank-3",
+      "urlClass": "patternbank",
+      "items": [
+        {
+          "id": "TR-124",
+          "fingerprint": "1c40594b9fc4630f",
+          "title": "Large-Scale Statement Florals",
+          "company": "Patternbank SS27",
+          "marketplace": "Patternbank",
+          "style": "Heritage Floral",
+          "color": "Oxblood",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-125",
+          "fingerprint": "469ee232a1f5f8d1",
+          "title": "Distorted Botanicals — Warped Organic",
+          "company": "Patternbank SS27",
+          "marketplace": "Patternbank",
+          "style": "Abstract Blur",
+          "color": "Teal",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-126",
+          "fingerprint": "d8bef40b7c2f3549",
+          "title": "Acid Colour Electric Neons",
+          "company": "Patternbank SS27",
+          "marketplace": "Patternbank",
+          "style": "Retro Psychedelic",
+          "color": "Chartreuse",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-127",
+          "fingerprint": "26547313da484daa",
+          "title": "Kaleidoscopic Geo Mosaic",
+          "company": "Patternbank SS27",
+          "marketplace": "Patternbank",
+          "style": "Retro Geometric",
+          "color": "Teal",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-27-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-128",
+          "fingerprint": "13e4b400744f3afb",
+          "title": "Floaty Florals",
+          "company": "Patternbank Resort26",
+          "marketplace": "Patternbank",
+          "style": "Heritage Floral",
+          "color": "Blush",
+          "url": "https://patternbank.com/catwalk/Resort-2026-print-pattern-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-129",
+          "fingerprint": "d34d044e44405897",
+          "title": "Dotty",
+          "company": "Patternbank Resort26",
+          "marketplace": "Patternbank",
+          "style": "Retro Geometric",
+          "color": "Navy",
+          "url": "https://patternbank.com/catwalk/Resort-2026-print-pattern-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-130",
+          "fingerprint": "612d9d6d4044448c",
+          "title": "Rugs & Blankets (kilim)",
+          "company": "Patternbank Resort26",
+          "marketplace": "Patternbank",
+          "style": "Paisley / Nomadic",
+          "color": "Rust",
+          "url": "https://patternbank.com/catwalk/Resort-2026-print-pattern-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-131",
+          "fingerprint": "8952310482a9f462",
+          "title": "Dreamtime",
+          "company": "Patternbank Resort26",
+          "marketplace": "Patternbank",
+          "style": "Abstract Blur",
+          "color": "Ombre Blue",
+          "url": "https://patternbank.com/catwalk/Resort-2026-print-pattern-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-132",
+          "fingerprint": "945bc43c45c65653",
+          "title": "Artistic Textures — Psychedelic Shibori",
+          "company": "Patternbank Catwalk",
+          "marketplace": "Patternbank",
+          "style": "Retro Psychedelic",
+          "color": "Indigo",
+          "url": "https://patternbank.com/catwalk/spring-summer-2026-catwalk-print-pattern-trend-report",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-133",
+          "fingerprint": "3438400fa94a1819",
+          "title": "Bedtime Florals — Sprigged Cotton",
+          "company": "Patternbank Catwalk",
+          "marketplace": "Patternbank",
+          "style": "Ditsy Micro-Print",
+          "color": "Blush",
+          "url": "https://patternbank.com/catwalk/spring-summer-2026-catwalk-print-pattern-trend-report",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-134",
+          "fingerprint": "793f2dc8b8185e75",
+          "title": "Floral Stencil — Lino Prints",
+          "company": "Patternbank Catwalk",
+          "marketplace": "Patternbank",
+          "style": "Heritage Floral",
+          "color": "Forest Green",
+          "url": "https://patternbank.com/catwalk/spring-summer-2026-catwalk-print-pattern-trend-report",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-135",
+          "fingerprint": "6f1ef4ce853da461",
+          "title": "Painterly Florals — Expressive Roses",
+          "company": "Patternbank Catwalk",
+          "marketplace": "Patternbank",
+          "style": "Heritage Floral",
+          "color": "Claret",
+          "url": "https://patternbank.com/catwalk/spring-summer-2026-catwalk-print-pattern-trend-report",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        }
+      ]
+    },
+    {
+      "batch": "patternbank-4",
+      "urlClass": "patternbank",
+      "items": [
+        {
+          "id": "TR-136",
+          "fingerprint": "f9d478d62d22ef99",
+          "title": "Stripe Variations — Optical Stripe",
+          "company": "Patternbank Catwalk",
+          "marketplace": "Patternbank",
+          "style": "Stripe",
+          "color": "Black",
+          "url": "https://patternbank.com/catwalk/spring-summer-2026-catwalk-print-pattern-trend-report",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-137",
+          "fingerprint": "7919fd38068453e6",
+          "title": "Artistic Textures — Inky Blurs",
+          "company": "Patternbank Catwalk",
+          "marketplace": "Patternbank",
+          "style": "Abstract Blur",
+          "color": "Teal",
+          "url": "https://patternbank.com/catwalk/spring-summer-2026-catwalk-print-pattern-trend-report",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-138",
+          "fingerprint": "8ad2bfc204b3ab62",
+          "title": "Dark Blooms — Gothic Ghostly Flowers",
+          "company": "Patternbank AW25-26",
+          "marketplace": "Patternbank",
+          "style": "Dark Floral",
+          "color": "Black",
+          "url": "https://patternbank.com/trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-139",
+          "fingerprint": "478f38dd7b46394d",
+          "title": "Brushstrokes — Loose Dab Marks",
+          "company": "Patternbank AW25-26",
+          "marketplace": "Patternbank",
+          "style": "Abstract Blur",
+          "color": "Rust",
+          "url": "https://patternbank.com/trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-140",
+          "fingerprint": "47d52ff63c20782f",
+          "title": "Enticing Erosion — Natural Bleed",
+          "company": "Patternbank AW25-26",
+          "marketplace": "Patternbank",
+          "style": "Abstract Blur",
+          "color": "Greige",
+          "url": "https://patternbank.com/trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-141",
+          "fingerprint": "992ef6be03359540",
+          "title": "Linear Traced — Fine Contours",
+          "company": "Patternbank AW25-26",
+          "marketplace": "Patternbank",
+          "style": "Retro Geometric",
+          "color": "Charcoal",
+          "url": "https://patternbank.com/trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-142",
+          "fingerprint": "4829c42b034733c2",
+          "title": "Black & White Impact — Optical Diagonals",
+          "company": "Patternbank AW25-26",
+          "marketplace": "Patternbank",
+          "style": "Retro Geometric",
+          "color": "Black",
+          "url": "https://patternbank.com/trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-143",
+          "fingerprint": "afd6edbdd3087217",
+          "title": "Fall Bouquet — Dark Earthy Florals",
+          "company": "Patternbank AW25-26",
+          "marketplace": "Patternbank",
+          "style": "Dark Floral",
+          "color": "Oxblood",
+          "url": "https://patternbank.com/trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-144",
+          "fingerprint": "3e6d9d93d38f2556",
+          "title": "Maxi Floral",
+          "company": "Patternbank Trends",
+          "marketplace": "Patternbank",
+          "style": "Heritage Floral",
+          "color": "Plum",
+          "url": "https://patternbank.com/trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-145",
+          "fingerprint": "7008229ce0974f5c",
+          "title": "Candy Stripe",
+          "company": "Patternbank Trends",
+          "marketplace": "Patternbank",
+          "style": "Stripe",
+          "color": "Pop Pink",
+          "url": "https://patternbank.com/trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-146",
+          "fingerprint": "8652ed0fd1d1bb56",
+          "title": "Tropical Haze",
+          "company": "Patternbank Trends",
+          "marketplace": "Patternbank",
+          "style": "Tropical",
+          "color": "Sage",
+          "url": "https://patternbank.com/trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-147",
+          "fingerprint": "089376044a2b7896",
+          "title": "Garden Florals",
+          "company": "Patternbank Trends",
+          "marketplace": "Patternbank",
+          "style": "Heritage Floral",
+          "color": "Forest Green",
+          "url": "https://patternbank.com/trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        }
+      ]
+    },
+    {
+      "batch": "patternbank-5",
+      "urlClass": "patternbank",
+      "items": [
+        {
+          "id": "TR-148",
+          "fingerprint": "4ad87c15a83ed808",
+          "title": "Floral Symmetry",
+          "company": "Patternbank Trends",
+          "marketplace": "Patternbank",
+          "style": "Damask",
+          "color": "Claret",
+          "url": "https://patternbank.com/trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-149",
+          "fingerprint": "b32843d1a862c88e",
+          "title": "Monochromatic Minimal",
+          "company": "Patternbank Trends",
+          "marketplace": "Patternbank",
+          "style": "Abstract Blur",
+          "color": "Charcoal",
+          "url": "https://patternbank.com/trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        },
+        {
+          "id": "TR-190",
+          "fingerprint": "aa991f0f35e4a1c9",
+          "title": "Chartreuse Metallic Stepped Deco",
+          "company": "Trend forecast",
+          "marketplace": "Google / Retail",
+          "style": "Art-Deco Geometric",
+          "color": "Chartreuse",
+          "url": "https://patternbank.com/trends/premiere-vision-SS-26-print-trends",
+          "host": "patternbank.com",
+          "urlClass": "patternbank"
+        }
+      ]
+    },
+    {
+      "batch": "listicle-1",
+      "urlClass": "listicle",
+      "items": [
+        {
+          "id": "TR-178",
+          "fingerprint": "f0543df70aec54e2",
+          "title": "Rose-Hued Cheetah Print",
+          "company": "House of Hackney",
+          "marketplace": "Google / Retail",
+          "style": "Animal-Skin Print",
+          "color": "Blush",
+          "url": "https://www.countryandtownhouse.com/interiors/wallpaper-trends-2026/",
+          "host": "countryandtownhouse.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-179",
+          "fingerprint": "ee2850a422177a35",
+          "title": "Verdant Green Tiger Print",
+          "company": "House of Hackney",
+          "marketplace": "Google / Retail",
+          "style": "Animal-Skin Print",
+          "color": "Forest Green",
+          "url": "https://www.countryandtownhouse.com/interiors/wallpaper-trends-2026/",
+          "host": "countryandtownhouse.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-180",
+          "fingerprint": "062be1ea3128c0eb",
+          "title": "Layered Heritage Damask",
+          "company": "House of Hackney",
+          "marketplace": "Google / Retail",
+          "style": "Damask",
+          "color": "Oxblood",
+          "url": "https://www.countryandtownhouse.com/interiors/wallpaper-trends-2026/",
+          "host": "countryandtownhouse.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-181",
+          "fingerprint": "d1d827ca96681405",
+          "title": "Grasscloth with Metallic Threads",
+          "company": "Sasha Bikoff (designer)",
+          "marketplace": "Google / Retail",
+          "style": "Texture-Effect",
+          "color": "Greige",
+          "url": "https://www.goodhousekeeping.com/home/decorating-ideas/g70161758/wallpaper-trends-2026/",
+          "host": "goodhousekeeping.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-182",
+          "fingerprint": "2f14cbc5eded5d7b",
+          "title": "Tweed Faux-Fabric",
+          "company": "Kelsey Deirdre (designer)",
+          "marketplace": "Google / Retail",
+          "style": "Texture-Effect",
+          "color": "Mushroom",
+          "url": "https://www.goodhousekeeping.com/home/decorating-ideas/g70161758/wallpaper-trends-2026/",
+          "host": "goodhousekeeping.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-183",
+          "fingerprint": "29f0d89d086b65d3",
+          "title": "Linen-Weave Embroidery Illusion",
+          "company": "Harlequin (Flora Daly)",
+          "marketplace": "Google / Retail",
+          "style": "Texture-Effect",
+          "color": "Cloud White",
+          "url": "https://www.countryandtownhouse.com/interiors/wallpaper-trends-2026/",
+          "host": "countryandtownhouse.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-184",
+          "fingerprint": "0a3ed5423112c1cf",
+          "title": "1920s Sunflower Vintage Floral",
+          "company": "Peter Dunham (designer)",
+          "marketplace": "Google / Retail",
+          "style": "Heritage Floral",
+          "color": "Mustard",
+          "url": "https://www.goodhousekeeping.com/home/decorating-ideas/g70161758/wallpaper-trends-2026/",
+          "host": "goodhousekeeping.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-191",
+          "fingerprint": "25c0dfea5bd91e7e",
+          "title": "Grasscloth-Effect Textured Plain",
+          "company": "Wallpaperdirect editors",
+          "marketplace": "Google / Retail",
+          "style": "Texture-Effect",
+          "color": "Greige",
+          "url": "https://blog.wallpaperdirect.com/wallpaper-trends-forecast-2025-2/",
+          "host": "blog.wallpaperdirect.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-192",
+          "fingerprint": "55a700ff35cc7288",
+          "title": "Timeless Floral Stripe",
+          "company": "GP&J Baker",
+          "marketplace": "Google / Retail",
+          "style": "Stripe",
+          "color": "Mustard",
+          "url": "https://blog.wallpaperdirect.com/wallpaper-trends-forecast-2025-2/",
+          "host": "blog.wallpaperdirect.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-193",
+          "fingerprint": "b04f47044e009492",
+          "title": "Earthy Statement Stripe",
+          "company": "Josephine Munsey",
+          "marketplace": "Google / Retail",
+          "style": "Stripe",
+          "color": "Mushroom",
+          "url": "https://blog.wallpaperdirect.com/wallpaper-trends-forecast-2025-2/",
+          "host": "blog.wallpaperdirect.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-195",
+          "fingerprint": "1d4948f2492ac3f3",
+          "title": "Conversational Whimsy Print",
+          "company": "Sarah Storms (designer)",
+          "marketplace": "Google / Retail",
+          "style": "Novelty Conversational",
+          "color": "Teal",
+          "url": "https://www.goodhousekeeping.com/home/decorating-ideas/g70161758/wallpaper-trends-2026/",
+          "host": "goodhousekeeping.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-196",
+          "fingerprint": "2bbc6b6a5bb16af7",
+          "title": "Small-Scale Nostalgic Floral",
+          "company": "Jennifer Pacca (designer)",
+          "marketplace": "Google / Retail",
+          "style": "Ditsy Micro-Print",
+          "color": "Blush",
+          "url": "https://www.goodhousekeeping.com/home/decorating-ideas/g70161758/wallpaper-trends-2026/",
+          "host": "goodhousekeeping.com",
+          "urlClass": "listicle"
+        }
+      ]
+    },
+    {
+      "batch": "listicle-2",
+      "urlClass": "listicle",
+      "items": [
+        {
+          "id": "TR-197",
+          "fingerprint": "8e5bade8ba7fbd35",
+          "title": "Painterly Botanical Panorama",
+          "company": "Wallpaperdirect editors",
+          "marketplace": "Google / Retail",
+          "style": "Scenic Mural",
+          "color": "Teal",
+          "url": "https://blog.wallpaperdirect.com/wallpaper-trends-forecast-2025-2/",
+          "host": "blog.wallpaperdirect.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-198",
+          "fingerprint": "7573bfe936792e5a",
+          "title": "Garden Party Floral",
+          "company": "Rifle Paper Co. (York)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Heritage Floral",
+          "color": "Blush",
+          "url": "https://wildfireinteriors.com/i-tested-12-peel-and-stick-wallpapers-on-textured-walls-my-5-month-results/",
+          "host": "wildfireinteriors.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-199",
+          "fingerprint": "d10bec217a482ad8",
+          "title": "Roman Holiday by Barbie™",
+          "company": "Wallshoppe",
+          "marketplace": "Amazon / Big-box",
+          "style": "Novelty Conversational",
+          "color": "Pop Pink",
+          "url": "https://www.bhg.com/home-improvement/walls/wallpapering/best-removable-wallpapers/",
+          "host": "bhg.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-200",
+          "fingerprint": "b54fef657399d16e",
+          "title": "Pink Trellis",
+          "company": "The Pioneer Woman (Walmart)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Heritage Trellis",
+          "color": "Blush",
+          "url": "https://www.bhg.com/home-improvement/walls/wallpapering/best-removable-wallpapers/",
+          "host": "bhg.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-201",
+          "fingerprint": "066190a8c2af2f22",
+          "title": "Modern Peel & Stick",
+          "company": "OSECAGE (Amazon)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Texture-Effect",
+          "color": "Cloud White",
+          "url": "https://www.bhg.com/home-improvement/walls/wallpapering/best-removable-wallpapers/",
+          "host": "bhg.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-202",
+          "fingerprint": "8c3761447e57a811",
+          "title": "Herringbone",
+          "company": "Threshold (Target)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Geometric",
+          "color": "Greige",
+          "url": "https://www.bhg.com/home-improvement/walls/wallpapering/best-removable-wallpapers/",
+          "host": "bhg.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-203",
+          "fingerprint": "1d449661486bd7d3",
+          "title": "Ethan-Jay",
+          "company": "Bungalow Rose (Wayfair)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Botanical",
+          "color": "Sage",
+          "url": "https://www.thespruce.com/best-removable-wallpaper-4165109",
+          "host": "thespruce.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-204",
+          "fingerprint": "3ebc40156bf01f4b",
+          "title": "Modern Delicate Herringbone",
+          "company": "Livettes",
+          "marketplace": "Amazon / Big-box",
+          "style": "Geometric",
+          "color": "Powder Blue",
+          "url": "https://www.thespruce.com/best-removable-wallpaper-4165109",
+          "host": "thespruce.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-205",
+          "fingerprint": "b959314968c73d9f",
+          "title": "Intersections",
+          "company": "Tempaper & Co. (West Elm)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Retro Geometric",
+          "color": "Charcoal",
+          "url": "https://www.thespruce.com/best-removable-wallpaper-4165109",
+          "host": "thespruce.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-206",
+          "fingerprint": "fc81562e25c6d45a",
+          "title": "Arthouse Ochre Bird Garden",
+          "company": "NextWall (Amazon)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Chinoiserie Mural",
+          "color": "Mustard",
+          "url": "https://www.thespruce.com/best-removable-wallpaper-4165109",
+          "host": "thespruce.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-207",
+          "fingerprint": "7877572bf1027326",
+          "title": "Awning Stripe",
+          "company": "RoomMates (Amazon)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Stripe",
+          "color": "Navy",
+          "url": "https://www.realsimple.com/home-organizing/decorating/best-removable-wallpaper",
+          "host": "realsimple.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-208",
+          "fingerprint": "aa5813b12dea036d",
+          "title": "Charcoal Meraki",
+          "company": "NuWallpaper",
+          "marketplace": "Amazon / Big-box",
+          "style": "Retro Geometric",
+          "color": "Charcoal",
+          "url": "https://www.realsimple.com/home-organizing/decorating/best-removable-wallpaper",
+          "host": "realsimple.com",
+          "urlClass": "listicle"
+        }
+      ]
+    },
+    {
+      "batch": "listicle-3",
+      "urlClass": "listicle",
+      "items": [
+        {
+          "id": "TR-209",
+          "fingerprint": "bef79291ebd5f8d6",
+          "title": "Feather Flock (Mid-Century birds)",
+          "company": "Tempaper x Genevieve Gorder",
+          "marketplace": "Amazon / Big-box",
+          "style": "Animal-Skin Print",
+          "color": "Blush",
+          "url": "https://www.realsimple.com/home-organizing/decorating/best-removable-wallpaper",
+          "host": "realsimple.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-210",
+          "fingerprint": "88526bed20161170",
+          "title": "Geometric",
+          "company": "MelunMer (Amazon)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Retro Geometric",
+          "color": "Teal",
+          "url": "https://www.realsimple.com/home-organizing/decorating/best-removable-wallpaper",
+          "host": "realsimple.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-213",
+          "fingerprint": "49d955e4b5a7e038",
+          "title": "Grateful Thread",
+          "company": "Chasing Paper",
+          "marketplace": "Amazon / Big-box",
+          "style": "Texture-Effect",
+          "color": "Cream",
+          "url": "https://www.thespruce.com/best-removable-wallpaper-4165109",
+          "host": "thespruce.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-219",
+          "fingerprint": "256671405f3c91ea",
+          "title": "Vintage Botanical Mural",
+          "company": "Anewall",
+          "marketplace": "Amazon / Big-box",
+          "style": "Scenic Mural",
+          "color": "Sage",
+          "url": "https://wildfireinteriors.com/i-tested-12-peel-and-stick-wallpapers-on-textured-walls-my-5-month-results/",
+          "host": "wildfireinteriors.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-220",
+          "fingerprint": "e267bcff30b9dbb4",
+          "title": "Feather Removable",
+          "company": "Serena & Lily",
+          "marketplace": "Amazon / Big-box",
+          "style": "Novelty Conversational",
+          "color": "Powder Blue",
+          "url": "https://wildfireinteriors.com/i-tested-12-peel-and-stick-wallpapers-on-textured-walls-my-5-month-results/",
+          "host": "wildfireinteriors.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-221",
+          "fingerprint": "217b33c3e564e854",
+          "title": "Painterly Floral",
+          "company": "Love vs. Design",
+          "marketplace": "Amazon / Big-box",
+          "style": "Heritage Floral",
+          "color": "Blush",
+          "url": "https://wildfireinteriors.com/i-tested-12-peel-and-stick-wallpapers-on-textured-walls-my-5-month-results/",
+          "host": "wildfireinteriors.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-222",
+          "fingerprint": "c90f1f20fffda7b5",
+          "title": "Boho Medallion",
+          "company": "Opalhouse (Target)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Boho",
+          "color": "Terracotta",
+          "url": "https://wildfireinteriors.com/i-tested-12-peel-and-stick-wallpapers-on-textured-walls-my-5-month-results/",
+          "host": "wildfireinteriors.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-223",
+          "fingerprint": "ac41cd2e30fc5cbe",
+          "title": "Modern Geometric",
+          "company": "InHome (Amazon)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Retro Geometric",
+          "color": "Navy",
+          "url": "https://wildfireinteriors.com/i-tested-12-peel-and-stick-wallpapers-on-textured-walls-my-5-month-results/",
+          "host": "wildfireinteriors.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-224",
+          "fingerprint": "c2a1f7a46f1e3689",
+          "title": "Grasscloth Natural",
+          "company": "NuWallpaper",
+          "marketplace": "Amazon / Big-box",
+          "style": "Texture-Effect",
+          "color": "Greige",
+          "url": "https://www.realsimple.com/home-organizing/decorating/best-removable-wallpaper",
+          "host": "realsimple.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-225",
+          "fingerprint": "dcb959531834ef71",
+          "title": "Bohemian Wildflower",
+          "company": "NuWallpaper",
+          "marketplace": "Amazon / Big-box",
+          "style": "Boho",
+          "color": "Sage",
+          "url": "https://www.realsimple.com/home-organizing/decorating/best-removable-wallpaper",
+          "host": "realsimple.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-226",
+          "fingerprint": "5f4e05e4950ae73b",
+          "title": "Watercolor Floral",
+          "company": "RoomMates",
+          "marketplace": "Amazon / Big-box",
+          "style": "Heritage Floral",
+          "color": "Blush",
+          "url": "https://www.realsimple.com/home-organizing/decorating/best-removable-wallpaper",
+          "host": "realsimple.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-227",
+          "fingerprint": "0881d0c9c4440aa9",
+          "title": "Marble Contact",
+          "company": "RoomMates",
+          "marketplace": "Amazon / Big-box",
+          "style": "Texture-Effect",
+          "color": "Cloud White",
+          "url": "https://www.realsimple.com/home-organizing/decorating/best-removable-wallpaper",
+          "host": "realsimple.com",
+          "urlClass": "listicle"
+        }
+      ]
+    },
+    {
+      "batch": "listicle-4",
+      "urlClass": "listicle",
+      "items": [
+        {
+          "id": "TR-228",
+          "fingerprint": "1ce6af7bab30d9ac",
+          "title": "Peonies Cream",
+          "company": "York (Rifle Paper Co.)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Heritage Floral",
+          "color": "Cream",
+          "url": "https://wildfireinteriors.com/i-tested-12-peel-and-stick-wallpapers-on-textured-walls-my-5-month-results/",
+          "host": "wildfireinteriors.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-229",
+          "fingerprint": "35fa928dbe91bb8c",
+          "title": "Wildwood",
+          "company": "York (Rifle Paper Co.)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Botanical",
+          "color": "Forest Green",
+          "url": "https://wildfireinteriors.com/i-tested-12-peel-and-stick-wallpapers-on-textured-walls-my-5-month-results/",
+          "host": "wildfireinteriors.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-232",
+          "fingerprint": "1597d04150badcb5",
+          "title": "Deco Palm",
+          "company": "Wallshoppe",
+          "marketplace": "Amazon / Big-box",
+          "style": "Art-Deco Geometric",
+          "color": "Gold",
+          "url": "https://www.bhg.com/home-improvement/walls/wallpapering/best-removable-wallpapers/",
+          "host": "bhg.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-233",
+          "fingerprint": "8b84c1f180cb42e1",
+          "title": "Scallop Stripe",
+          "company": "Wallshoppe",
+          "marketplace": "Amazon / Big-box",
+          "style": "Stripe",
+          "color": "Blush",
+          "url": "https://www.bhg.com/home-improvement/walls/wallpapering/best-removable-wallpapers/",
+          "host": "bhg.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-234",
+          "fingerprint": "b5a6ba09b6610a71",
+          "title": "Terracotta Arch",
+          "company": "Walls Need Love",
+          "marketplace": "Amazon / Big-box",
+          "style": "Abstract Blur",
+          "color": "Terracotta",
+          "url": "https://www.realsimple.com/home-organizing/decorating/best-removable-wallpaper",
+          "host": "realsimple.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-235",
+          "fingerprint": "1b9c0684c6e8c661",
+          "title": "Botanical Trail",
+          "company": "Carter + Main",
+          "marketplace": "Amazon / Big-box",
+          "style": "Botanical",
+          "color": "Sage",
+          "url": "https://www.realsimple.com/home-organizing/decorating/best-removable-wallpaper",
+          "host": "realsimple.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-236",
+          "fingerprint": "5fc82a561414c110",
+          "title": "Grand Palms",
+          "company": "Astek Home",
+          "marketplace": "Amazon / Big-box",
+          "style": "Tropical",
+          "color": "Forest Green",
+          "url": "https://www.realsimple.com/home-organizing/decorating/best-removable-wallpaper",
+          "host": "realsimple.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-237",
+          "fingerprint": "fa9d1580299ac8fd",
+          "title": "Modern Marble",
+          "company": "Scott Living (NuWallpaper)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Texture-Effect",
+          "color": "Charcoal",
+          "url": "https://www.realsimple.com/home-organizing/decorating/best-removable-wallpaper",
+          "host": "realsimple.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-238",
+          "fingerprint": "24d92feb2b760bc0",
+          "title": "Concrete Grey",
+          "company": "d-c-fix (Amazon)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Texture-Effect",
+          "color": "Charcoal",
+          "url": "https://www.bhg.com/home-improvement/walls/wallpapering/best-removable-wallpapers/",
+          "host": "bhg.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-239",
+          "fingerprint": "42c79caea940318a",
+          "title": "Vintage Floral",
+          "company": "HaokHome (Amazon)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Heritage Floral",
+          "color": "Sage",
+          "url": "https://www.bhg.com/home-improvement/walls/wallpapering/best-removable-wallpapers/",
+          "host": "bhg.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-240",
+          "fingerprint": "024e5ded84e6258c",
+          "title": "Grasscloth Faux",
+          "company": "HaokHome (Amazon)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Texture-Effect",
+          "color": "Greige",
+          "url": "https://www.bhg.com/home-improvement/walls/wallpapering/best-removable-wallpapers/",
+          "host": "bhg.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-241",
+          "fingerprint": "6a99e599d9b2d2b3",
+          "title": "Strawberry Fields",
+          "company": "Rifle Paper Co.",
+          "marketplace": "Amazon / Big-box",
+          "style": "Ditsy Micro-Print",
+          "color": "Pop Pink",
+          "url": "https://wildfireinteriors.com/i-tested-12-peel-and-stick-wallpapers-on-textured-walls-my-5-month-results/",
+          "host": "wildfireinteriors.com",
+          "urlClass": "listicle"
+        }
+      ]
+    },
+    {
+      "batch": "listicle-5",
+      "urlClass": "listicle",
+      "items": [
+        {
+          "id": "TR-242",
+          "fingerprint": "9af7b9dd44a38ff8",
+          "title": "Marble Peel & Stick",
+          "company": "Tempaper",
+          "marketplace": "Amazon / Big-box",
+          "style": "Texture-Effect",
+          "color": "Cloud White",
+          "url": "https://www.realsimple.com/home-organizing/decorating/best-removable-wallpaper",
+          "host": "realsimple.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-243",
+          "fingerprint": "fcf2d5d90e793968",
+          "title": "Woodland Fox (kids)",
+          "company": "RoomMates",
+          "marketplace": "Amazon / Big-box",
+          "style": "Novelty Conversational",
+          "color": "Rust",
+          "url": "https://www.realsimple.com/home-organizing/decorating/best-removable-wallpaper",
+          "host": "realsimple.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-244",
+          "fingerprint": "80f8ccbe027cb3a5",
+          "title": "Blush Pink Trellis",
+          "company": "NuWallpaper",
+          "marketplace": "Amazon / Big-box",
+          "style": "Heritage Trellis",
+          "color": "Blush",
+          "url": "https://www.realsimple.com/home-organizing/decorating/best-removable-wallpaper",
+          "host": "realsimple.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-245",
+          "fingerprint": "7e9af9db9e49dd45",
+          "title": "Bloomsbury Floral",
+          "company": "Threshold (Target)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Heritage Floral",
+          "color": "Sage",
+          "url": "https://www.bhg.com/home-improvement/walls/wallpapering/best-removable-wallpapers/",
+          "host": "bhg.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-246",
+          "fingerprint": "845ea368086ce9e3",
+          "title": "Global Stripe",
+          "company": "Opalhouse (Target)",
+          "marketplace": "Amazon / Big-box",
+          "style": "Stripe",
+          "color": "Rust",
+          "url": "https://www.bhg.com/home-improvement/walls/wallpapering/best-removable-wallpapers/",
+          "host": "bhg.com",
+          "urlClass": "listicle"
+        },
+        {
+          "id": "TR-247",
+          "fingerprint": "d88dca0e1fa6ca3f",
+          "title": "Ceiling Star",
+          "company": "Wallshoppe",
+          "marketplace": "Amazon / Big-box",
+          "style": "Novelty Conversational",
+          "color": "Navy",
+          "url": "https://www.bhg.com/home-improvement/walls/wallpapering/best-removable-wallpapers/",
+          "host": "bhg.com",
+          "urlClass": "listicle"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/scripts/attach-real-images.js b/scripts/attach-real-images.js
new file mode 100644
index 0000000..af3511c
--- /dev/null
+++ b/scripts/attach-real-images.js
@@ -0,0 +1,43 @@
+#!/usr/bin/env node
+// attach-real-images.js — merge qc-passed real product images into bestsellers.json.
+// Fingerprint-keyed (survives the TR-id churn scout-to-bestsellers.js causes on refresh).
+// Writes ONLY the realImage* fields. `image`/`imageSource`/`imageDesign`/`isOurOriginal` are
+// our-own-design fields consumed by the Shopify staging flow and are NEVER touched here —
+// competitor marketplace images must never become stageable product images.
+// Run AFTER attach-images.js in any refresh (documented in refresh.sh + README).
+const fs = require('fs');
+const path = require('path');
+const { ASSETS, fingerprint, loadBest, saveBest, loadLedger } = require('./real-lib');
+
+const WRITE = process.argv.includes('--write');
+
+const data = loadBest();
+const ledger = loadLedger();
+
+let attached = 0, cleared = 0, missingFile = 0;
+const byMarket = {};
+for (const it of data.items){
+  const fp = fingerprint(it);
+  const l = ledger[fp];
+  const mk = it.marketplace || '?';
+  byMarket[mk] = byMarket[mk] || { total: 0, real: 0 };
+  byMarket[mk].total++;
+  if (l && l.status === 'qc-pass' && l.file && fs.existsSync(path.join(ASSETS, l.file))){
+    it.realImage = '/assets/real/' + l.file;
+    it.realImageSource = mk + (l.sourceUrl ? ' — ' + new URL(l.sourceUrl).hostname.replace(/^www\./, '') : '');
+    it.realImageUrl = l.sourceUrl || null;
+    it.realImageFetchedAt = l.downloadedAt || l.updatedAt || null;
+    attached++; byMarket[mk].real++;
+  } else {
+    if (l && l.status === 'qc-pass') missingFile++;
+    if (it.realImage){ delete it.realImage; delete it.realImageSource; delete it.realImageUrl; delete it.realImageFetchedAt; cleared++; }
+  }
+}
+data.realImagesAttachedAt = new Date().toISOString();
+
+console.log(`real images attached: ${attached} of ${data.items.length}${cleared ? ` (cleared ${cleared} stale)` : ''}${missingFile ? ` (${missingFile} qc-pass but file MISSING on disk!)` : ''}`);
+console.log('coverage by marketplace:');
+for (const [mk, s] of Object.entries(byMarket)) console.log(`  ${mk.padEnd(20)} ${s.real}/${s.total}`);
+
+if (WRITE){ saveBest(data); console.log('bestsellers.json updated (realImage* fields only).'); }
+else console.log('(dry-run — pass --write to persist)');
diff --git a/scripts/download-real-images.js b/scripts/download-real-images.js
new file mode 100644
index 0000000..18a351f
--- /dev/null
+++ b/scripts/download-real-images.js
@@ -0,0 +1,95 @@
+#!/usr/bin/env node
+// download-real-images.js — pull each resolved candidate image down to public/assets/real/.
+// Reads the fan-out agents' outputs (data/real-images/candidates/*.json), folds them into the
+// ledger, then downloads every entry still at status candidate. $0 (plain HTTPS fetches).
+// Idempotent: qc-pass/downloaded entries are skipped; re-run freely.
+//
+// Guards: browser UA (marketplace CDNs 403 default agents), ≥400px min dimension (sips),
+// sha256 dedupe — the same byte-identical file arriving for >3 different items is a CDN
+// placeholder, not 4 different products, and gets rejected.
+const fs = require('fs');
+const path = require('path');
+const { execFileSync } = require('child_process');
+const { CAND_DIR, ASSETS, loadLedger, saveLedger, sha256 } = require('./real-lib');
+
+const DRY = process.argv.includes('--dry-run');
+const LIMIT = (() => { const i = process.argv.indexOf('--limit'); return i > -1 ? parseInt(process.argv[i + 1], 10) : Infinity; })();
+const UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126 Safari/537.36';
+const EXT = { 'image/png': 'png', 'image/jpeg': 'jpg', 'image/webp': 'webp', 'image/gif': 'gif', 'image/avif': 'avif' };
+const MIN_PX = 400;
+const MAX_SAME_SHA = 3;
+
+fs.mkdirSync(ASSETS, { recursive: true });
+
+// ---- 1. fold candidate files into the ledger (agents never touch the ledger themselves) ----
+const ledger = loadLedger();
+let folded = 0;
+if (fs.existsSync(CAND_DIR)){
+  for (const f of fs.readdirSync(CAND_DIR).filter(f => f.endsWith('.json'))){
+    let c; try { c = JSON.parse(fs.readFileSync(path.join(CAND_DIR, f), 'utf8')); } catch(e){ console.log(`  BAD candidate file ${f}: ${e.message}`); continue; }
+    if (!c.fingerprint) continue;
+    const l = ledger[c.fingerprint] || {};
+    if (l.status === 'qc-pass') continue;                       // already settled — don't churn
+    ledger[c.fingerprint] = { ...l, fingerprint: c.fingerprint, id: c.id, title: c.title || l.title,
+      status: c.candidateImageUrl ? 'candidate' : 'unresolved',
+      candidateUrl: c.candidateImageUrl || null, sourceUrl: c.sourcePageUrl || null,
+      altCandidates: c.altCandidates || [], confidence: c.confidence ?? null,
+      method: c.method || null, exaCalls: c.exaCalls ?? null, estCostUsd: c.estCostUsd ?? null,
+      notes: c.notes || null, updatedAt: new Date().toISOString() };
+    folded++;
+  }
+}
+
+async function fetchImage(url){
+  const res = await fetch(url, { headers: { 'User-Agent': UA, 'Accept': 'image/avif,image/webp,image/png,image/jpeg,*/*' }, redirect: 'follow', signal: AbortSignal.timeout(30000) });
+  if (!res.ok) throw new Error(`HTTP ${res.status}`);
+  const type = (res.headers.get('content-type') || '').split(';')[0].trim();
+  const buf = Buffer.from(await res.arrayBuffer());
+  if (!buf.length) throw new Error('empty body');
+  if (!EXT[type] && !/^image\//.test(type)) throw new Error(`not an image (${type || 'no content-type'})`);
+  return { buf, ext: EXT[type] || 'jpg' };
+}
+
+function dimensions(fp){
+  try {
+    const out = execFileSync('sips', ['-g', 'pixelWidth', '-g', 'pixelHeight', fp], { encoding: 'utf8' });
+    const w = +(out.match(/pixelWidth: (\d+)/) || [])[1], h = +(out.match(/pixelHeight: (\d+)/) || [])[1];
+    return { w, h };
+  } catch(e){ return { w: 0, h: 0 }; }
+}
+
+(async () => {
+  const todo = Object.values(ledger).filter(l => l.status === 'candidate' && l.candidateUrl).slice(0, LIMIT);
+  console.log(`candidates folded: ${folded} · to download: ${todo.length}${DRY ? ' (dry-run)' : ''}`);
+  if (DRY){ todo.forEach(l => console.log(`  ${l.id}  ${l.candidateUrl}`)); return; }
+
+  const shaCount = {};                                          // sha256 -> #items this run+prior
+  for (const l of Object.values(ledger)) if (l.sha256) shaCount[l.sha256] = (shaCount[l.sha256] || 0) + 1;
+
+  let ok = 0, fail = 0;
+  for (const l of todo){
+    try {
+      const { buf, ext } = await fetchImage(l.candidateUrl);
+      const sha = sha256(buf);
+      if ((shaCount[sha] || 0) >= MAX_SAME_SHA) throw new Error('placeholder: same bytes already used by ' + shaCount[sha] + ' items');
+      const fname = `${l.fingerprint}.${ext}`;                  // fingerprint stem — survives TR-id churn
+      const fp = path.join(ASSETS, fname);
+      fs.writeFileSync(fp, buf);
+      const { w, h } = dimensions(fp);
+      if (w < MIN_PX && h < MIN_PX){ fs.unlinkSync(fp); throw new Error(`too small (${w}×${h})`); }
+      shaCount[sha] = (shaCount[sha] || 0) + 1;
+      Object.assign(l, { status: 'downloaded', file: fname, sha256: sha, width: w, height: h, downloadedAt: new Date().toISOString() });
+      ok++; console.log(`  ✓ ${l.id} ← ${l.candidateUrl.slice(0, 90)} (${w}×${h})`);
+    } catch(e){
+      fail++;
+      // burn this candidate; promote the next alternate if the agent supplied one
+      const alts = l.altCandidates || [];
+      if (alts.length){ l.candidateUrl = alts.shift(); l.altCandidates = alts; l.status = 'candidate'; console.log(`  ↻ ${l.id} — ${e.message}; trying alt (${alts.length} left)`); }
+      else { l.status = 'unresolved'; l.failReason = e.message; console.log(`  ✗ ${l.id} — ${e.message}`); }
+      l.updatedAt = new Date().toISOString();
+    }
+  }
+  saveLedger(ledger);
+  const retriable = Object.values(ledger).filter(l => l.status === 'candidate').length;
+  console.log(`downloaded ${ok}, failed ${fail}${retriable ? `, ${retriable} candidates remain (re-run to retry alts)` : ''}. $0 (plain fetches).`);
+})();
diff --git a/scripts/plan-real-images.js b/scripts/plan-real-images.js
new file mode 100644
index 0000000..173e261
--- /dev/null
+++ b/scripts/plan-real-images.js
@@ -0,0 +1,56 @@
+#!/usr/bin/env node
+// plan-real-images.js — build the work manifest for the real-image fan-out.
+// Reads bestsellers.json + ledger, emits data/real-images/manifest.json: every item that
+// still lacks a qc-passed real image, grouped into agent-sized batches by host class,
+// with an up-front Exa cost estimate (metered — Steve's always-show-costs rule).
+// Default is a dry-run report; --write persists the manifest.
+const fs = require('fs');
+const path = require('path');
+const { RI_DIR, MANIFEST, fingerprint, classifyUrl, loadBest, loadLedger, atomicWrite } = require('./real-lib');
+
+const WRITE = process.argv.includes('--write');
+const BATCH_SIZE = 12;             // items per fan-out agent — keeps each agent's tool budget sane
+const EXA_COST_PER_CALL = 0.005;   // assumed $/request (search or fetch)
+const EST_CALLS_PER_ITEM = { 'etsy-product': 1, 'spoonflower-product': 1, etsy: 2, spoonflower: 2, patternbank: 2, listicle: 2, vendor: 2, none: 2 };
+
+const data = loadBest();
+const ledger = loadLedger();
+
+const work = [];
+for (const it of data.items){
+  const fp = fingerprint(it);
+  const l = ledger[fp];
+  if (l && l.status === 'qc-pass') continue;                 // already done — idempotent re-runs
+  const { host, klass } = classifyUrl(it.url);
+  work.push({ id: it.id, fingerprint: fp, title: it.title, company: it.company,
+    marketplace: it.marketplace, style: it.style, color: it.color,
+    url: it.url || null, host, urlClass: klass });
+}
+
+// group by class, then chunk into batches
+const byClass = {};
+for (const w of work){ (byClass[w.urlClass] = byClass[w.urlClass] || []).push(w); }
+const batches = [];
+for (const [klass, items] of Object.entries(byClass)){
+  for (let i = 0; i < items.length; i += BATCH_SIZE){
+    batches.push({ batch: `${klass}-${Math.floor(i / BATCH_SIZE) + 1}`, urlClass: klass, items: items.slice(i, i + BATCH_SIZE) });
+  }
+}
+
+let estCalls = 0;
+for (const w of work) estCalls += EST_CALLS_PER_ITEM[w.urlClass] || 2;
+const estCost = estCalls * EXA_COST_PER_CALL;
+
+console.log(`items needing a real image: ${work.length} of ${data.items.length}`);
+for (const [klass, items] of Object.entries(byClass)) console.log(`  ${klass.padEnd(20)} ${items.length}`);
+console.log(`batches: ${batches.length} × ≤${BATCH_SIZE} items`);
+console.log(`est. Exa spend: ~${estCalls} calls × $${EXA_COST_PER_CALL} ≈ $${estCost.toFixed(2)}`);
+
+if (WRITE){
+  fs.mkdirSync(RI_DIR, { recursive: true });
+  atomicWrite(MANIFEST, JSON.stringify({ plannedAt: new Date().toISOString(), count: work.length,
+    estExaCalls: estCalls, estExaCostUsd: +estCost.toFixed(2), batches }, null, 2));
+  console.log(`manifest → ${path.relative(process.cwd(), MANIFEST)}`);
+} else {
+  console.log('(dry-run — pass --write to persist the manifest)');
+}
diff --git a/scripts/qc-real-images.js b/scripts/qc-real-images.js
new file mode 100644
index 0000000..34286c7
--- /dev/null
+++ b/scripts/qc-real-images.js
@@ -0,0 +1,72 @@
+#!/usr/bin/env node
+// qc-real-images.js — $0 LOCAL vision gate over downloaded real-product images.
+// Every downloaded file is judged by a local ollama vision model (qwen2.5vl:7b, fallback
+// gemma3:12b): it must look like a wallpaper/textile pattern swatch or a product/room shot
+// showing wallpaper — logos, text banners, site chrome, screenshots, blank tiles are rejected.
+// Style/color match is advisory (lenient); the hard job is keeping garbage off the board.
+// Reject → promote the next altCandidate (status back to 'candidate' for the download script),
+// else 'unresolved'. Re-run download → qc until no candidates remain.
+const fs = require('fs');
+const path = require('path');
+const { ASSETS, loadLedger, saveLedger, loadBest, fingerprint } = require('./real-lib');
+
+const DRY = process.argv.includes('--dry-run');
+const ONLY = (() => { const i = process.argv.indexOf('--only'); return i > -1 ? process.argv[i + 1] : null; })();
+const OLLAMA = process.env.OLLAMA_URL || 'http://127.0.0.1:11434';
+const MODELS = ['qwen2.5vl:7b', 'gemma3:12b'];
+
+// style/color hints per fingerprint, for the advisory match part of the rubric
+const hints = {};
+for (const it of loadBest().items) hints[fingerprint(it)] = { style: it.style, color: it.color, title: it.title };
+
+async function judge(model, file, hint){
+  const b64 = fs.readFileSync(path.join(ASSETS, file)).toString('base64');
+  const prompt = `You are quality-gating an image for an internal wallpaper market-intelligence board.
+The image is supposed to show a REAL trending wallpaper product: "${hint.title}" (style: ${hint.style}, color family: ${hint.color}).
+ACCEPT if the image is a wallpaper/textile pattern swatch, a wallpaper product photo, or a room scene where wallpaper is clearly visible.
+REJECT if it is: a logo, a text-heavy banner or ad, website chrome or a page screenshot, a mostly-blank placeholder, a photo of people/objects with no wallpaper, or a watermark-dominated image.
+A loose style/color mismatch alone is NOT a reason to reject — only reject on the categories above, or if the image is obviously a completely different product category.
+Answer with ONLY a JSON object: {"ok": true|false, "reason": "<max 12 words>"}`;
+  const res = await fetch(OLLAMA + '/api/generate', {
+    method: 'POST', headers: { 'Content-Type': 'application/json' },
+    body: JSON.stringify({ model, prompt, images: [b64], stream: false, options: { temperature: 0 } }),
+    signal: AbortSignal.timeout(120000)
+  });
+  if (!res.ok) throw new Error(`ollama HTTP ${res.status}`);
+  const out = (await res.json()).response || '';
+  const m = out.match(/\{[\s\S]*?\}/);
+  if (!m) throw new Error('no JSON in model output: ' + out.slice(0, 80));
+  return JSON.parse(m[0]);
+}
+
+(async () => {
+  const ledger = loadLedger();
+  const todo = Object.values(ledger).filter(l => l.status === 'downloaded' && l.file && (!ONLY || l.id === ONLY));
+  console.log(`to QC: ${todo.length}${DRY ? ' (dry-run)' : ''} · model ${MODELS[0]} @ ${OLLAMA} ($0 local)`);
+  if (DRY){ todo.forEach(l => console.log(`  ${l.id}  ${l.file}`)); return; }
+
+  let pass = 0, reject = 0, err = 0;
+  for (const l of todo){
+    const hint = hints[l.fingerprint] || { style: '?', color: '?', title: l.title || '?' };
+    let verdict = null, used = null;
+    for (const model of MODELS){
+      try { verdict = await judge(model, l.file, hint); used = model; break; }
+      catch(e){ console.log(`  ! ${l.id} ${model}: ${e.message}`); }
+    }
+    if (!verdict){ err++; continue; }                            // leave as downloaded — retriable
+    l.qc = { model: used, verdict: verdict.ok ? 'pass' : 'reject', reason: verdict.reason || '' };
+    l.updatedAt = new Date().toISOString();
+    if (verdict.ok){ l.status = 'qc-pass'; pass++; console.log(`  ✓ ${l.id} — ${verdict.reason || 'ok'}`); }
+    else {
+      reject++;
+      fs.rmSync(path.join(ASSETS, l.file), { force: true });     // never leave rejected bytes deployable
+      l.file = null; l.sha256 = null;
+      const alts = l.altCandidates || [];
+      if (alts.length){ l.candidateUrl = alts.shift(); l.altCandidates = alts; l.status = 'candidate'; console.log(`  ↻ ${l.id} — REJECT (${verdict.reason}); alt queued`); }
+      else { l.status = 'qc-reject'; console.log(`  ✗ ${l.id} — REJECT (${verdict.reason})`); }
+    }
+    saveLedger(ledger);                                          // per-item save — a crash loses nothing
+  }
+  const retriable = Object.values(ledger).filter(l => l.status === 'candidate').length;
+  console.log(`qc-pass ${pass}, reject ${reject}, model-errors ${err}${retriable ? ` · ${retriable} alts queued — re-run download-real-images.js then this` : ''}`);
+})();
diff --git a/scripts/real-lib.js b/scripts/real-lib.js
new file mode 100644
index 0000000..9019152
--- /dev/null
+++ b/scripts/real-lib.js
@@ -0,0 +1,51 @@
+// real-lib.js — shared plumbing for the REAL-product-image pipeline.
+// Real marketplace images are INTERNAL-ONLY intel (Steve override 2026-07-15): they live in
+// new realImage* fields + public/assets/real/, and must never flow into `image`
+// (which /api/put-on-shopify stages as a DW Shopify product image).
+const fs = require('fs');
+const path = require('path');
+const crypto = require('crypto');
+
+const ROOT = path.join(__dirname, '..');
+const BEST = path.join(ROOT, 'data', 'bestsellers.json');
+const RI_DIR = path.join(ROOT, 'data', 'real-images');
+const LEDGER = path.join(RI_DIR, 'ledger.json');
+const MANIFEST = path.join(RI_DIR, 'manifest.json');
+const CAND_DIR = path.join(RI_DIR, 'candidates');
+const ASSETS = path.join(ROOT, 'public', 'assets', 'real');
+
+// TR-ids are regenerated by array index on every scout refresh (scout-to-bestsellers.js),
+// so the ledger keys on a content fingerprint instead — it survives id churn.
+function fingerprint(it){
+  return crypto.createHash('sha1').update([it.title, it.company, it.marketplace].join('|')).digest('hex').slice(0, 16);
+}
+
+const LISTICLE_HOSTS = new Set([
+  'realsimple.com', 'bhg.com', 'goodhousekeeping.com', 'thespruce.com',
+  'countryandtownhouse.com', 'wildfireinteriors.com', 'blog.wallpaperdirect.com'
+]);
+
+// host class drives the resolution strategy — the `marketplace` label lies
+// (all 50 "Amazon / Big-box" items actually point at vendor sites + listicles).
+function classifyUrl(url){
+  if (!url) return { host: null, klass: 'none' };
+  let host; try { host = new URL(url).hostname.replace(/^www\./, ''); } catch(e){ return { host: null, klass: 'none' }; }
+  if (host === 'etsy.com')        return { host, klass: /\/listing\//.test(url) ? 'etsy-product' : 'etsy' };
+  if (host === 'spoonflower.com') return { host, klass: /\/(wallpaper|fabric)\/\d+/.test(url) ? 'spoonflower-product' : 'spoonflower' };
+  if (host === 'patternbank.com') return { host, klass: 'patternbank' };
+  if (LISTICLE_HOSTS.has(host))   return { host, klass: 'listicle' };
+  return { host, klass: 'vendor' };
+}
+
+function loadBest(){ return JSON.parse(fs.readFileSync(BEST, 'utf8')); }
+function saveBest(data){ atomicWrite(BEST, JSON.stringify(data, null, 2)); }
+
+function loadLedger(){ try { return JSON.parse(fs.readFileSync(LEDGER, 'utf8')); } catch(e){ return {}; } }
+function saveLedger(l){ fs.mkdirSync(RI_DIR, { recursive: true }); atomicWrite(LEDGER, JSON.stringify(l, null, 2)); }
+
+function atomicWrite(fp, body){ const tmp = fp + '.tmp'; fs.writeFileSync(tmp, body); fs.renameSync(tmp, fp); }
+
+function sha256(buf){ return crypto.createHash('sha256').update(buf).digest('hex'); }
+
+module.exports = { ROOT, BEST, RI_DIR, LEDGER, MANIFEST, CAND_DIR, ASSETS,
+  fingerprint, classifyUrl, loadBest, saveBest, loadLedger, saveLedger, atomicWrite, sha256 };

← 0968c22 chore: v0.2.0 (session close) — 247-item multi-platform expa  ·  back to Trending Dw  ·  server+frontend: realImage support (signal default sort, met b3b4e49 →